Use `imaginary_part' instead of `imaginary' to fix build on Solaris 2.10.
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
a2c25234
LC
12008-02-23 Ludovic Courtès <ludo@gnu.org>
2
3 * numbers.c (scm_make_rectangular): Rename argument to
4 `real_part' and `imaginary_part' to work around Solaris 2.10
5 headers which define `imaginary' as a macro. Patch by Tim
6 Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
7
bfb64eb4
LC
82008-02-22 Ludovic Courtès <ludo@gnu.org>
9
4fcb27c4
LC
10 * read.c (strncasecmp): Add declaration when
11 `HAVE_DECL_STRNCASECMP' is undefined. Fixes compilation on
12 NetBSD 1.6.
13
bfb64eb4
LC
14 * gc.c (scm_ia64_ar_bsp)[linux]: Don't discard `const' qualifier
15 of OPAQUE.
16
5305df84
LC
172008-02-21 Ludovic Courtès <ludo@gnu.org>
18
19 Fix bug #22369.
20
21 * goops.c (scm_add_slot): Add `SCM_UNDEFINED' as last argument
a2c25234
LC
22 to `scm_list_n ()'. Thanks to René Köcher
23 <shirk87@googlemail.com>.
5305df84 24
25a640ca
LC
252008-02-17 Ludovic Courtès <ludo@gnu.org>
26
27 * script.c (scm_compile_shell_switches): Update copyright year.
28
9a6fac59
LC
292008-02-16 Ludovic Courtès <ludo@gnu.org>
30
31 * gc_os_dep.c: Add NetBSD/alpha support. Patch by Greg Troxel
32 <gdt@ir.bbn.com>.
33
5b5179f8
LC
342008-02-12 Ludovic Courtès <ludo@gnu.org>
35
36 * guile-snarf.in (tempdir): Honor `$TMPDIR'.
37
4b26c03e
NJ
382008-02-11 Neil Jerram <neil@ossau.uklinux.net>
39
40 * numbers.c (SCM_COMPLEX_VALUE): Use GUILE_I instead of _Complex_I
41 directly, and only if GUILE_I was defined by the configure step.
42 (scm_log, scm_log10, scm_exp, scm_sqrt): Use SCM_COMPLEX_VALUE
43 code only if SCM_COMPLEX_VALUE is defined.
44
7f74cf9a
LC
452008-02-07 Ludovic Courtès <ludo@gnu.org>
46
47 Fix bug #21378.
48 Thanks to David Diffenbaugh <davediff@nbcs.rutgers.edu>.
49
50 * read.c (scm_read_quote): Don't use `__FUNCTION__' since it is
51 not supported by Sun CC on Solaris 9.
52 (scm_read_keyword): Likewise.
53 * strings.c (scm_take_locale_stringn): Remove
54 `SCM_C_INLINE_KEYWORD' to allow compilation with Sun CC.
55
86a597f8
NJ
562008-02-07 Julian Graham <joolean@gmail.com>
57
58 * threads.c (do_thread_exit, scm_cancel_thread,
59 scm_set_thread_cleanup_x, scm_thread_cleanup): Lock on thread-specific
60 admin mutex instead of `thread_admin_mutex'.
61 * threads.h (scm_i_thread)[admin_mutex]: New field.
62 * throw.c (make_jmpbuf): Don't enter critical section during thread
63 spawn -- there is a possibility of deadlock if other threads are
64 exiting.
65
4a19ed04
NJ
662008-02-06 Neil Jerram <neil@ossau.uklinux.net>
67
68 * gc-malloc.c (scm_gc_malloc): Return NULL if requested size is 0.
69 (scm_gc_free): Don't call `free' if mem is NULL.
70
189171c5
LC
712008-02-06 Ludovic Courtès <ludo@gnu.org>
72
73 * numbers.c (scm_i_mkbig, scm_i_long2big, scm_i_ulong2big,
74 scm_i_clonebig, scm_i_bigcmp, scm_i_dbl2big, scm_i_dbl2num,
75 scm_i_normbig): Remove `SCM_C_INLINE_KEYWORD' since these are
76 declared as `extern' in `numbers.h'. This precluded compilation
77 on Solaris 9 with Sun CC (reported by David Halik
78 <dhalik@nbcs.rutgers.edu>).
79
d05bcb2e
NJ
802008-02-05 Neil Jerram <neil@ossau.uklinux.net>
81
82 * fports.c (fport_seek): Make dependent on GUILE_USE_64_CALLS.
83
84 * _scm.h: Make definition of CHOOSE_LARGEFILE depend on
85 GUILE_USE_64_CALLS.
86
3ac8359a
NJ
872008-02-01 Neil Jerram <neil@ossau.uklinux.net>
88
89 * modules.c (the_root_module): Moved before scm_current_module.
90 (scm_current_module): Return the root module if `the-module' fluid
91 gives #f.
92
d3cf93bc
NJ
932008-01-22 Neil Jerram <neil@ossau.uklinux.net>
94
7df13834
NJ
95 * COPYING: Removed.
96
d3cf93bc
NJ
97 * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL.
98
15bd90ea
NJ
992008-01-18 Neil Jerram <neil@ossau.uklinux.net>
100
101 * hashtab.c (scm_hash_fn_create_handle_x): If supplied assoc_fn
102 returns neither a pair nor #f, signal a wrong-type-arg error.
103 (Thanks to Gregory Marton for reporting this.)
104
5c004b6d
NJ
1052007-12-29 Neil Jerram <neil@ossau.uklinux.net>
106
107 * gc.c (mark_gc_async): Change "func_data" to "fn_data", to avoid
108 clash with AIX header file.
109 * hooks.c (scm_c_hook_add, scm_c_hook_remove): Same again.
110 * hooks.h (scm_t_c_hook_function, scm_c_hook_add,
111 scm_c_hook_remove): Same again.
112
9cc37597
LC
1132007-12-08 Ludovic Courtès <ludo@gnu.org>
114
115 * __scm.h (SCM_EXPECT, SCM_LIKELY, SCM_UNLIKELY): New macros.
116 (SCM_ASSERT, SCM_ASSERT_TYPE, SCM_ASRTGO, SCM_GASSERT0,
117 SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Use them.
118 * eval.c (ASSERT_SYNTAX, ASSERT_SYNTAX_2): Likewise.
119 * eval.i.c (CEVAL): Use branch prediction hints for syntax
120 errors, wrong number of arguments and similar.
121 * numbers.c (scm_sum): Use `SCM_LIKELY' for the sum of two
122 immediate numbers.
123 (scm_difference, scm_product, scm_i_divide): Likewise.
124 * validate.h (SCM_ASSERT_RANGE): Use `SCM_UNLIKELY'.
125
7d1fc872
LC
1262007-12-04 Ludovic Courtès <ludo@gnu.org>
127
693758d5
LC
128 * ports.c (scm_c_read): Validate PORT as an open input port.
129 (scm_c_write): Validate PORT as an open output port.
130
7d1fc872
LC
131 * socket.c (scm_accept): Leave guile mode using
132 `scm_std_select ()' before calling `accept(2)'. Reported by
133 dskr <dskr@mac.com>.
134
ee834df4
LC
1352007-10-27 Ludovic Courtès <ludo@gnu.org>
136
137 * fports.c (scm_i_evict_port): Expect a port, rather than a pair
138 containing the port. Fixes a bug in the new port table (2007-08-26).
139 (scm_evict_ports): Use `scm_c_port_for_each ()'.
140
acbfb594
NJ
1412007-10-21 Neil Jerram <neil@ossau.uklinux.net>
142
143 * eval.c (unmemoize_delay): Extend the environment before
144 unmemoizing the promise thunk. This fixes a segmentation fault
145 reported by Frank Schwidom.
146
2e77f720
LC
1472007-10-20 Julian Graham <joolean@gmail.com>
148
149 Add support for thread cancellation and user-defined thread
150 cleanup handlers. Small rework by Ludovic Courtès.
151
152 * null-threads.h (scm_i_pthread_cancel,
153 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
154 * pthread-threads.h (scm_i_pthread_cancel,
155 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
156 * scmsigs.c (scm_i_signal_delivery_thread,
157 signal_delivery_thread_mutex): New.
158 (signal_delivery_thread): Leave when `read_without_guile ()'
159 returns zero.
160 (start_signal_delivery_thread): Acquire SIGNAL_DELIVERY_THREAD
161 before spawning the thread. Initialize
162 SCM_I_SIGNAL_DELIVERY_THREAD.
163 (ensure_signal_delivery_thread): Renamed to...
164 (scm_i_ensure_signal_delivery_thread): this.
165 (scm_i_close_signal_pipe): New.
166 * scmsigs.h: Updated.
167 * threads.c (thread_mark): Mark `t->cleanup_handler'.
168 (guilify_self_1): Initialize `t->cleanup_handler' and
169 `t->canceled'.
170 (do_thread_exit): Invoke `t->cleanup_handler'.
171 (on_thread_exit): Call `scm_i_ensure_signal_delivery_thread ()'.
172 Call `scm_i_close_signal_pipe ()' when the next-to-last thread
173 vanishes.
174 (scm_leave_guile_cleanup): New.
175 (scm_i_with_guile_and_parent): Use `scm_i_pthread_cleanup_push ()'
176 and `scm_leave_guile_cleanup ()' to leave guile mode, rather
177 than call `scm_leave_guile ()' after FUNC.
178 (scm_cancel_thread, scm_set_thread_cleanup_x,
179 scm_threads_cleanup): New.
180 (scm_all_threads): Remove SCM_I_SIGNAL_DELIVERY_THREAD from the
181 returned list.
182 * threads.h (scm_i_thread)[cleanup_handler, canceled]: New
183 fields.
184 Add declarations of new functions.
185
d41668fa
LC
1862007-10-17 Ludovic Courtès <ludo@gnu.org>
187
188 * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a
189 regression compared to 1.8.2. Reported by Puneet
190 <schemer@gmail.com>.
191
66302618
LC
1922007-10-10 Ludovic Courtès <ludo@gnu.org>
193
194 * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check
195 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
196 * gen-scmconfig.h.in
197 (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER): New.
198 * gen-scmconfig.c (main): Define
199 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
200
1445e449
LC
2012007-10-04 Ludovic Courtès <ludo@gnu.org>
202
203 * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
204 `leave_locale_section ()' on failure of
205 `enter_locale_section ()' since the mutex is not held and locale
206 settings are unchanged.
207 (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
208 `restore_locale_settings ()' instead of `leave_locale_section ()'
209 since the mutex is not held.
210
29776e85
LC
2112007-10-02 Ludovic Courtès <ludo@gnu.org>
212
213 * threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
214 since we're already in non-guile mode. Reported by Greg Toxel
215 for NetBSD.
216
61d3568b
LC
2172007-10-01 Ludovic Courtès <ludo@gnu.org>
218
219 * ports.c (flush_output_port): Expect directly a port instead of
220 a pair. Fixes a bug in the new port table (2007-08-26).
221
68eccd8b
KR
2222007-09-11 Kevin Ryde <user42@zip.com.au>
223
224 * posix.c (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
225 putenv("NAME") as the fallback everywhere else. In particular this is
226 needed for solaris 9. Reported by Frank Storbeck.
227
454866e0
LC
2282007-09-03 Ludovic Courtès <ludo@gnu.org>
229
230 * read.c (flush_ws): Handle SCSH block comments.
231
f43f3620
LC
2322007-09-03 Ludovic Courtès <ludo@gnu.org>
233
234 Fix alignment issues which showed up at least on SPARC.
235
236 * socket.c (scm_t_max_sockaddr, scm_t_getsockopt_result): New.
237 (scm_inet_pton): Change DST to `scm_t_uint32' for correct
238 alignment.
239 (scm_getsockopt): Change OPTVAL to `scm_t_getsockopt_result' for
240 correct alignment.
241 (_scm_from_sockaddr): Change ADDRESS to `scm_t_max_sockaddr *'.
242 (scm_from_sockaddr): Cast ADDRESS to `scm_t_max_sockaddr *'.
243 (MAX_SIZE_UN, MAX_SIZE_IN6): Removed.
244 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
245 Use `scm_t_max_sockaddr' instead of "char max_addr[MAX_ADDR_SIZE]".
246
8d4d5dfc
KR
2472007-09-03 Kevin Ryde <user42@zip.com.au>
248
249 * numbers.c (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
250 before using clog(). It's possible for gcc to provide the "complex
251 double" type, but for the system not to have the complex funcs.
252 (scm_exp): Ditto HAVE_CEXP for cexp().
253 (clog, cexp, carg): Remove fallback definitions. These only
254 duplicated the code within scm_log and scm_exp, and the latter have to
255 exist for the case when there's no "complex double". So better just
256 fix up the conditionals selecting between the complex funcs and plain
257 doubles than worry about fallbacks.
258
1ac5fb45
LC
2592007-09-02 Ludovic Courtès <ludo@gnu.org>
260
261 * socket.c (scm_make_socket_address): Free C_ADDRESS after use.
262 This fixes a memory leak.
263
b87e6d04
HWN
2642007-08-26 Han-Wen Nienhuys <hanwen@lilypond.org>
265
5dbc6c06
HWN
266 * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
267 gc.c: replace port table with weak hash table. This simplifies
268 memory management, and fixes freed cells appearing in
269 port-for-each output.
270
b87e6d04
HWN
271 * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
272 held.
273
2baec6a9
LC
2742007-08-23 Ludovic Courtès <ludo@gnu.org>
275
492faee1 276 * read.c (scm_read_quote): Record position and copy source
8d4d5dfc 277 expression when asked to. Reported by Kevin.
492faee1 278
2baec6a9
LC
279 * stime.c: Define `_REENTRANT' only if not already defined.
280
1f11c61a
KR
2812007-08-21 Kevin Ryde <user42@zip.com.au>
282
283 * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
284 tc16 values so big, real, complex and fraction can be distinguished.
285
286 (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL. NULL
287 was making numbers come out as "type 23" in gc-live-object-stats.
288 Fix tests of the tc16 number types, they were checked under
289 scm_tc7_number, but the values went down the tag>=255 smob case.
290 Put smob case under scm_tc7_smob instead of using tag>=255, per
291 recommendation in comments with scm_tc7_smob to use symbolic values.
292 Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
293 code. Lose some unnecessary "break" statements.
294
295 (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
296 element returned, rather than two lookups scm_hashq_ref and
297 scm_hashq_set_x.
298
949ec9f9
KR
2992007-08-17 Kevin Ryde <user42@zip.com.au>
300
301 * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
302 solaris 2.6. Reported by anirkko.
303
6caac03c
LC
3042007-07-29 Ludovic Courtès <ludo@gnu.org>
305
306 * Makefile.am (INCLUDES): Added Gnulib includes.
307 (gnulib_library): New.
308 (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
309 `$(gnulib_library)'.
310 (libguile_la_LIBADD): Likewise.
311
312 * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
313 to define it when available.
314 * srfi-14.c: Likewise.
f7439099
LC
315 * i18n.c: Likewise. Include Gnulib's <alloca.h>
316 * eval.c: Include Gnulib's <alloca.h>.
317 * filesys.c: Likewise.
318 * read.c: Don't include <strings.h> and don't provide an
319 `strncasecmp ()' replacement; use Gnulib's <string.h> and
320 `strncasecmp ()' instead.
6caac03c 321
e08f3f7a
LC
3222007-07-25 Ludovic Courtès <ludo@gnu.org>
323
324 * eval.c (macroexp): When `scm_ilength (res) <= 0', return
325 immediately. This used to produce a circular memoized
326 expression, e.g., for `(set (quote x) #t)'.
327
7337d56d
LC
3282007-07-22 Ludovic Courtès <ludo@gnu.org>
329
330 Overhauled the reader, making it faster.
331
332 * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
333 (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
334 of `scm_lreadr ()'.
335
336 * read.c: Overhauled. No longer use a token buffer. Use a
337 on-stack C buffer in the common case and use Scheme strings when
338 larger buffers are needed.
339 * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
340 scm_lreadr, scm_lreadrecparen): Removed.
341 (scm_i_input_error): Marked as `SCM_NORETURN'.
342
df449722
LC
3432007-07-15 Ludovic Courtès <ludo@gnu.org>
344
345 * script.c (scm_compile_shell_switches): Updated copyright year.
346
b1f57ea4
LC
3472007-07-11 Ludovic Courtès <ludo@gnu.org>
348
349 * goops.c (scm_sys_method_more_specific_p): Added docstring.
350 Make sure LEN is greater than or equal to the minimum length of
351 specializers of M1 and M2. This fixes a segfault later on in
352 `more_specificp ()' if TARGS is too small. Reported by Marco
353 Maggi <marco.maggi-ipsu@poste.it>.
354
d3075c52
LC
3552007-06-26 Ludovic Courtès <ludo@gnu.org>
356
357 * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
358 sure to free the previous array after the new one has been
359 installed. This leak is made visible by running
360 "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
361 from the REPL within Valgrind.
362
7a5fb796
LC
3632007-06-12 Ludovic Courtès <ludo@chbouib.org>
364
365 * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
366 as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
367 bus error on SPARC (and possibly others) due to unaligned access.
368
a1ef7406
LC
3692007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
370
371 * posix.c (scm_ttyname): Check whether RESULT is NULL before
372 making a string from it (reported by Dan McMahill). Don't call
373 `scm_from_locale_string ()' before the mutex is released.
374
3dcf3373
LC
3752007-05-26 Ludovic Courtès <ludo@chbouib.org>
376
377 * eval.c (scm_m_define): Updated comment. Changed order for value
378 evaluation and `scm_sym2var ()' call, which is perfectly valid per
379 R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
380
608860a5
LC
3812007-05-05 Ludovic Courtès <ludo@chbouib.org>
382
383 Implemented lazy duplicate binding handling.
384
385 * modules.c (scm_export): Renamed to...
386 (scm_module_export): This. Now public.
387 (module_variable): Removed.
388 (default_duplicate_binding_procedures_var): New variable.
389 (default_duplicate_binding_handlers, resolve_duplicate_binding,
390 module_imported_variable, scm_module_local_variable,
391 scm_module_variable): New functions.
392 (scm_module_import_interface): Rewritten.
393 (scm_module_reverse_lookup): Exported as a Scheme function.
394 * modules.h (scm_module_index_duplicate_handlers,
395 scm_module_index_import_obarray): New macros.
396 (scm_module_variable, scm_module_local_variable,
397 scm_module_export): New declarations.
398
1911e3da
LC
3992007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
400
401 * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
402 `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
403
1d8ce4c0
HWN
4042007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
405
406 * numbers.c (carg): provide carg, cexp, clog in case they are
407 missing.
408
afb49959
LC
4092007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
410
411 * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
412 `FRAC_DIGITS', etc., which are GNU extensions. Reported by
413 Steven Wu.
414
b3aa4626
KR
4152007-03-08 Kevin Ryde <user42@zip.com.au>
416
417 * struct.c, struct.h (scm_make_vtable): New function, providing
418 `make-vtable'.
419 * stacks.c (scm_init_stacks): Use it.
420
4212007-03-06 Kevin Ryde <user42@zip.com.au>
422
423 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
424 allocating a tail array. If there's no such then those tail fields
425 are uninitialized and garbage SCMs there can cause a segv if printed
426 (after fetching with struct-ref).
427
4282007-02-22 Kevin Ryde <user42@zip.com.au>
429
430 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
431 (scm_usleep): Update docstring per manual, cross reference sleep.
432
433 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
434 scm_struct_init is not within that section. scm_struct_init can
435 thrown an error, which within a critical section results in an
436 abort().
437
03291373
NJ
4382007-02-19 Neil Jerram <neil@ossau.uklinux.net>
439
440 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
441 is included in the distribution.
652dbce6 442 (noinst_HEADERS): And the same for eval.i.c.
03291373 443
a2f00b9b
LC
4442007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
445
446 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
447 unconditionally. Include <langinfo.h> and <nl_types.h> when
448 available.
449 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
450 SCM_LIST_OR_INTEGER_P): New macros.
451 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
452 as powers of two instead of `(1 << LC_*)'.
453 (scm_i_locale_free): New function/macro.
454 (scm_global_locale): New global variable.
455 (smob_locale_free): Use `scm_i_locale_free ()'.
456 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
457 (get_current_locale_settings): Return `EINVAL' instead of `errno'
458 when `setlocale' fails.
459 (restore_locale_settings): Likewise.
460 (install_locale_categories): Likewise.
461 (install_locale): Likewise. Stop the locale stack traversal when
462 all categories have been handled.
463 (get_current_locale, category_to_category_mask,
464 category_list_to_category_mask): New function.
465 (scm_make_locale): Use them. Accept both lists of `LC_*' values
466 and single `LC_*' values as the first argument. Handle the case
467 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
468 duplicate C_BASE_LOCALE before using it.
469 (scm_nl_langinfo, define_langinfo_items): New functions.
470 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
471 `nl-langinfo' and invoke `define_langinfo_items ()'.
472 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
473 * posix.c: Include <xlocale.h> when available.
474 (scm_i_locale_mutex): Always define it. Statically initialized.
475 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
476 acquiring the locale mutex.
477 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
478
b3aa4626
KR
4792007-01-27 Kevin Ryde <user42@zip.com.au>
480
481 * ports.c (scm_port_line, scm_set_port_line_x), read.c
482 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
483 port line number type, should be "long" not "int", as per line_number
484 field of scm_t_port. (Makes a difference only on 64-bit systems, and
485 only then for a linenum above 2Gig.)
486
2a8d66b0
HWN
4872007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
488
489 * vector.c: remove comment as per kryde's request.
490
b3aa4626
KR
4912007-01-25 Kevin Ryde <user42@zip.com.au>
492
493 * sort.c (scm_stable_sort): Return empty list for input empty list, as
494 done in guile 1.6 and as always done by plain `sort'. Was falling
495 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
496
cb90e2cb
HWN
4972007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
498
8cb7939c
HWN
499 * vectors.c (s_scm_vector_move_right_x): complain about naming.
500
d00a0704
HWN
501 * srcprop.c: regularize comments.
502
3d178652
HWN
503 * eval.c: remove superfluous ifndef DEVAL.
504
243ebb61
HWN
505 * private-options.h: idem.
506
507 * eval.i.c: copyright nitpicking.
508
0ee05b85
HWN
509 * eval.c: distangle. move duplicate code to eval.i.c and include
510 twice.
511
512 * eval.i.c: new file.
513
22fc179a
HWN
514 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
515 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
516 read.h, stacks.c, symbols.c, throw.c: use private-options.h
517
518 * private-options.h: new file: contain hardcoded option
519 definitions.
520
cb90e2cb
HWN
521 * private-gc.h: add FSF header.
522
62560650
HWN
5232007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
524
72f19c26
HWN
525 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
526 memoize-symbol is set.
527
528 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
529
530 * eval.c (CEVAL): add memoize_symbol trap.
531
03347a97
HWN
532 * options.c (scm_options_try): new function. This allows error
533 reporting before changing options in a critical section.
534
b0763985
HWN
535 * srcprop.c: use double cell for storing source-properties. Put
536 filename in the plist, and share between srcprops if possible.
537 Remove specialized storage.
538
539 * srcprop.h: remove macros without SCM_ prefix from
540 interface. Remove specialized storage/type definitions.
541
62560650
HWN
542 * read.c: idem.
543
544 * print.c: idem.
545
546 * eval.c: terminate option lists with 0.
547
548 * options.c: remove n (for length) from scm_option_X
549 functions. Detect option list length by looking for NULL name.
550
42ddb3cb
LC
5512007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
552
553 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
554 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
555 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
556 added by `make-vtable-vtable'. Reported by Marco Maggi.
557
937038e8
HWN
5582007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
559
560 * throw.c (scm_ithrow): more refined error message: print symbols
561 too.
562
23d72566
KR
5632007-01-16 Kevin Ryde <user42@zip.com.au>
564
565 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
566 implementing `set-program-arguments'.
567
568 * filesys.c (scm_init_filesys): Use scm_from_int rather than
569 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
570 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
571 O_LARGEFILE. These are all int not long, per arg to open().
572 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
573 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
574 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
575 an int arg to fcntl.
576
577 * posix.c (scm_putenv): Correction to "len" variable, was defined only
578 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
579 Move it to where it's used. Reported by Hugh Sasse.
580
581 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
582 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
583 meant #\nul in the input (detected by scm_to_locale_string) and a bad
584 flags arg (detected by scm_to_int) would throw from a critical
585 section, causing an abort().
586
587 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
588 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
589 REG_NOTEOL; they're all ints not longs (per args to regcomp and
590 regexec).
591
a2c40dc7
HWN
5922007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
593
594 * throw.c (scm_ithrow): print out key symbol and string arguments
595 when error happens inside a critical section, and document why.
596
391f57e6
HWN
5972007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
598
599 * read.c (s_scm_read_hash_extend): document #f argument to
600 read-hash-extend.
601
23d72566
KR
6022007-01-04 Kevin Ryde <user42@zip.com.au>
603
604 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
605 scm_minor_version, scm_micro_version, scm_effective_version,
606 scm_version, scm_init_version): Use SCM_API instead of just extern,
607 for the benefit of mingw. Reported by Cesar Strauss.
608
93632e3c
HWN
6092007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
610
611 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
612 too.
613 (gc_update_stats): update scm_gc_cells_allocated_acc too.
614
23d72566
KR
6152006-12-27 Kevin Ryde <user42@zip.com.au>
616
617 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
618 the basic scm_get_stack_base. As advised by Nils Durner.
619
620 * threads.c (get_thread_stack_base): Add a version using
621 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
622 As advised by Heikki Lindholm.
623
624 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
625 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
626 Durner.
627
6282006-12-24 Kevin Ryde <user42@zip.com.au>
629
630 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
631 error if pid is not our own process, instead of silently doing nothing.
632
633 * print.c (scm_write, scm_display, scm_write_char): Disable port close
634 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
635 check in configure.in unintentionally enabled it. Believe that
636 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
637 can leave errno in that state. popen.test "no duplicates" output test
638 provoked that.
639
e2bf3b19
HWN
6402006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
641
642 * numbers.c (scm_i_fraction_reduce): move logic into
643 scm_i_make_ratio(), so fractions are only read.
644 scm_i_fraction_reduce() modifies a fraction when reading it. A
645 race condition might lead to fractions being corrupted by reading
646 them concurrently.
647
648 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
649 comparisons between reduced and unreduced fractions go wrong.
650
651 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
652 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
653 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
654 SCM_FRACTION_REDUCED.
655
23d72566
KR
6562006-12-16 Kevin Ryde <user42@zip.com.au>
657
658 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
659 more direct for a procedure called raise.
660 (kill): Remove mingw fake fallback.
661
6622006-12-15 Kevin Ryde <user42@zip.com.au>
663
664 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
665 _pipe on mingw.
666
6672006-12-14 Kevin Ryde <user42@zip.com.au>
668
669 * threads.c (thread_print): Cope with the case where pthread_t is a
670 struct, as found on mingw. Can't just cast to size_t for printing.
671 Reported by Nils Durner.
672
673 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
674 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
675
6762006-12-13 Kevin Ryde <user42@zip.com.au>
677
678 * eval.c (scm_m_define): Set 'name procedure property on any
679 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
680 procedures with setters as used in srfi-17.
681
682 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
683 linux man page says is a possibility.
684
f30e1bdf
LC
6852006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
686
687 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
42ddb3cb 688 instead of RES (reported by Szavai Gyula). This allows the use of
f30e1bdf
LC
689 negative lower bounds.
690 (scm_i_read_array): Make sure LEN is non-negative (reported by
42ddb3cb 691 Szavai Gyula).
f30e1bdf
LC
692
693 (scm_array_in_bounds_p): Iterate over S instead of always
694 comparing indices with the bounds of S[0]. This fixes
695 `array-in-bounds?' for arrays with a rank greater than one and
696 with different lower bounds for each dimension.
697
23d72566
KR
6982006-12-05 Kevin Ryde <user42@zip.com.au>
699
700 * numbers.c (scm_product): For flonum*inum and complex*inum, return
701 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
702 and as per R5RS section "Exactness".
703
7042006-12-03 Kevin Ryde <user42@zip.com.au>
705
706 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
707 allow $AWK from the environment to override. It had syntax gremlins,
708 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
709 Makefile stopped it having any effect. Use just $(AWK), which can be
710 overridden with "make AWK=xxx" in the usual way if desired.
711
22be72d3
LC
7122006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
713
714 * libguile/vectors.c (scm_vector_to_list): Fixed list
715 construction: elements were not copied when INC is zero (see
716 "shared array" example in `vectors.test'). Reported by
717 Szavai Gyula.
718
b89c4943
LC
7192006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
720
721 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
722 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
723 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
724 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
725 (DOT_X_FILES): Added `gettext.x'.
726 (DOT_DOC_FILES): Likewise.
727 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
728 (modinclude_HEADERS): Added `gettext.h'.
729 (EXTRA_DIST): Added `libgettext.h'.
730
731 * gettext.h: Renamed to...
732 * libgettext.h: New file.
733
734 * i18n.c: Renamed to...
735 * gettext.c: New file.
736
737 * i18n.h: Renamed to...
738 * gettext.h: New file.
739
740 * i18n.c, i18n.h, locale-categories.h: New files.
741
742 * init.c: Include "libguile/gettext.h" instead of
743 "libguile/i18n.h".
744 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
745 `scm_init_i18n ()'.
746
747 * posix.c: Include "libguile/gettext.h" instead of
748 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
749 (USE_GNU_LOCALE_API): New macro.
750 (scm_i_locale_mutex): New variable.
751 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
752
753 * posix.h: Include "libguile/threads.h".
754 (scm_i_locale_mutex): New declaration.
755
f3e3f530
NJ
7562006-11-17 Neil Jerram <neil@ossau.uklinux.net>
757
758 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
759
d9f71a07
LC
7602006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
761
762 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
763 "sweep_stats" arguments; use them instead of accessing the global
764 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
765
766 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
767 before each iteration of the loop.
768 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
769 (scm_i_get_new_heap_segment): Take an additional argument
770 SWEEP_STATS. Compute MIN_CELLS as a function of it.
771
772 * libguile/gc.c (scm_gc_cells_collected,
773 scm_gc_cells_collected_1): Removed.
774 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
775 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
776 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
777 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
778 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
779 `scm_gc_cells_(collected|swept)'.
780 (gc_update_stats): New.
781 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
782 `scm_i_gc_sweep_stats_1' instead of the former globals.
783 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
784 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
785 would keep allocating new segments instead of re-using collected
786 cells (because `scm_gc_cells_collected' would remain zero).
787
788 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
789 scm_gc_cell_yield_percentage): Removed.
790
791 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
792 (scm_i_adjust_min_yield): Updated.
793 (scm_i_get_new_heap_segment): Updated.
794
dd18d312
NJ
7952006-11-02 Neil Jerram <neil@ossau.uklinux.net>
796
797 * modules.c: Correct comment saying that low-level environments
798 will be used "in the next release".
799
800 * init.c: Comment out #include of environments.h.
801 (scm_i_init_guile): Comment out scm_environments_prehistory() and
802 scm_init_environments() calls.
803
804 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
805 (DOT_X_FILES): Remove environments.x.
806 (DOT_DOC_FILES): Remove environments.doc.
807 (modinclude_HEADERS): Remove environments.h.
808
9a5fa6e9
NJ
8092006-10-25 Neil Jerram <neil@ossau.uklinux.net>
810
811 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
812
813 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
814 scm_ia64_register_backing_store_base() instead of Linux-specific
815 implementations.
816
817 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
818 New declarations.
819
820 * gc.c (__libc_ia64_register_backing_store_base): Declaration
821 removed.
822 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
823 implementations for Linux and HP-UX.
824
825 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
826 and scm_ia64_register_backing_store_base() instead of
827 Linux-specific implementations.
828
829 * continuations.h (__libc_ia64_register_backing_store_base):
830 Declaration removed.
831 (scm_t_contregs): New "fresh" field.
832
833 * continuations.c (ia64_getcontext): Removed.
834 (scm_make_continuation): Use continuation fresh field instead of
835 interpreting getcontext return values (which isn't portable). Use
836 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
837 instead of Linux-specific implementations.
838 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
839 instead of Linux-specific implementation.
840
841 * _scm.h (__ia64__): Also detect __ia64.
842
8ab3d8a0
KR
8432006-10-03 Kevin Ryde <user42@zip.com.au>
844
845 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
846 arguments or 3 or more arguments. Previously 0 called proc with
847 SCM_UNDEFINED, and 3 or more silently used just the first 2.
848
8492006-09-28 Kevin Ryde <user42@zip.com.au>
850
851 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
852 for chsize fallback, instead of hard-coding mingw. Mingw in fact
853 supplies ftruncate itself these days.
854
855 * ports.c (fcntl.h): Can include this unconditionally, no need for
856 __MINGW32__.
857
858 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
859 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
860 "off_t" for parameters, per usual definition of this function, rather
861 than "char *" and "int". Use ftruncate instead of chsize. Check for
862 error on final close.
863
8642006-09-27 Kevin Ryde <user42@zip.com.au>
865
866 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
867 in mingw.
868
869 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
870 const *" for mingw to suppress warnings from gcc (which are errors
871 under the configure default -Werror). Reported by Nils Durner.
872
8732006-09-26 Kevin Ryde <user42@zip.com.au>
874
875 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
876 * fports.c (scm_open_file): Use open_or_open64.
877 (fport_seek_or_seek64): New function, adapting fport_seek.
878 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
879 functions.
880 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
881 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
882
883 * ports.c (scm_truncate_file): Update docstring per manual.
884
8852006-09-23 Kevin Ryde <user42@zip.com.au>
886
887 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
888 functions.
889
9a5fa6e9 8902006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
a17d2654
LC
891
892 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
893 (make_predset, define_predset, make_strset, define_strset, false,
894 true): Removed.
895 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
896 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
897 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
898 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
899 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
900 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
901 (define_charset, scm_srfi_14_compute_char_sets): New functions.
902 (scm_init_srfi_14): Use `define_charset ()' instead of
903 `define_predset ()' and `define_strset ()'.
904
905 * srfi-14.h (scm_c_init_srfi_14): Removed.
906 (scm_srfi_14_compute_char_sets): New declaration.
907
908 * posix.h: Include "srfi-14.h".
909 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
910 successful `setlocale ()' call.
911
8ab3d8a0
KR
9122006-09-08 Kevin Ryde <user42@zip.com.au>
913
914 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
915 (scm_recvfrom): Update docstring from manual.
916
418122ce
RB
9172006-08-31 Rob Browning <rlb@defaultvalue.org>
918
919 * ports.c (scm_c_port_for_each): Add a
920 scm_remember_upto_here_1(ports) at the end of the function to fix
921 a GC bug.
922
b5944f66
NJ
9232006-08-28 Neil Jerram <neil@ossau.uklinux.net>
924
925 * backtrace.c (scm_display_backtrace_with_highlights): Minor
926 improvements to docstring.
927 (scm_backtrace_with_highlights): Analogous improvements.
928
8ab3d8a0
KR
9292006-08-12 Kevin Ryde <user42@zip.com.au>
930
931 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
932 New, set from configure.
933 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
934 to scmconfig.h.
935 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
936 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
937 Reported by Claes Wallin.
938
b0b0deff
NJ
9392006-08-11 Neil Jerram <neil@ossau.uklinux.net>
940
941 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
942 frame, not a stack).
943
8ab3d8a0
KR
9442006-07-25 Kevin Ryde <user42@zip.com.au>
945
946 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
947 on pthreads version, since pthread_getattr_np not available on solaris
948 and macos. Reported by Claes Wallin.
949
9502006-07-24 Kevin Ryde <user42@zip.com.au>
951
952 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
953 it's a macro on MacOS X. Reported by Claes Wallin.
954
955 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
956 for the benefit of Solaris 10. Reported by Claes Wallin.
957
958 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
959 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
960
9612006-07-21 Kevin Ryde <user42@zip.com.au>
962
963 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
964 autoconf recommendation. Should fix Solaris 10 reported by Claes
965 Wallin.
966
967 * threads.c: Include <string.h>, needed for memset() which is used by
968 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
969
b4912378
RB
9702006-07-18 Rob Browning <rlb@defaultvalue.org>
971
972 * continuations.c: Add __attribute__ ((returns_twice)) to the
973 ia64_getcontext prototype so that gcc will make the right
974 arrangements and avoid an illegal instruction during
975 call-with-current-continuation.
976
9a5fa6e9 9772006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
eaa94eaa
LC
978
979 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
980 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
981
8ab3d8a0
KR
9822006-07-08 Kevin Ryde <user42@zip.com.au>
983
984 * environments.c (core_environments_unobserve): Use if/else rather
985 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
986 about them not being rvalues. Reported by Mike Gran.
987
988 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
989 portable and in particular fails on OpenBSD and AIX (see autoconf
990 manual too). Reported by Mike Gran.
991
9922006-06-25 Kevin Ryde <user42@zip.com.au>
993
994 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
995 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
996 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
997 HAVE_TM_ZONE.
998 (scm_strptime): Use tm_gmtoff from the strptime result when that field
999 exists, it's set by glibc strptime "%s".
1000
9a5fa6e9 10012006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
d15ad007
LC
1002
1003 * eq.c: Include "struct.h", "goops.h" and "objects.h".
1004 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
1005 are not GOOPS instances.
1006 * struct.c: Include "eq.h".
1007 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
1008 hand-written code.
1009 (scm_i_struct_equalp): New.
1010 * struct.h (scm_i_struct_equalp): New declaration.
1011
c862d0e0
KR
10122006-06-06 Kevin Ryde <user42@zip.com.au>
1013
1014 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
1015 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
1016 reported by Mattias Holm.
b4912378 1017
c862d0e0
KR
10182006-06-03 Kevin Ryde <user42@zip.com.au>
1019
1020 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
1021 unused variable warning when elisp disabled. Reported by Ryan
1022 VanderBijl.
1023
1024 * throw.c (scm_handle_by_message): Add dummy return value to avoid
1025 compiler warning on cygwin. Reported by Ryan VanderBijl.
1026
1027 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
1028 duplicate of EXTRA_DOT_DOC_FILES.
1029 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
1030 Add scmconfig.h to dependencies, since these all run cpp. Helps a
1031 parallel "make -j2". Reported by Mattias Holm.
1032
10332006-05-30 Kevin Ryde <user42@zip.com.au>
1034
1035 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
1036 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
1037 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
1038 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
1039 port type descriptor, same as scm_make_port_type return value.
1040
af4f8612
MV
10412006-05-30 Marius Vollmer <mvo@zagadka.de>
1042
1043 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
1044 of the arguments is a array. This allows vectors to be equal to
1045 one-dimensional arrays.
1046
18bffcd0
MV
10472006-05-29 Marius Vollmer <mvo@zagadka.de>
1048
1049 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
1050 that we have a pair before accessing its cdr. Thanks to Bill
1051 Schottstaedt!
1052
c862d0e0
KR
10532006-05-28 Kevin Ryde <user42@zip.com.au>
1054
1055 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
1056 by "The Senator".
1057
10582006-05-27 Marius Vollmer <mvo@zagadka.de>
b0c0a310
MV
1059
1060 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
1061 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
1062
c862d0e0
KR
10632006-05-26 Kevin Ryde <user42@zip.com.au>
1064
1065 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
1066 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
1067 Reported by "The Senator".
1068 For select and ioctl, move fdes into those conditionals, to avoid
1069 unused variable warning when neither of those used.
1070
10712006-05-23 Kevin Ryde <user42@zip.com.au>
1072
1073 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
1074 It's unused and will be in stdio.h anyway (if it's anywhere).
1075
10762006-05-20 Kevin Ryde <user42@zip.com.au>
1077
1078 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
1079 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
1080
1081 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
1082 symlink). Probably can't create symlinks with mknod anyway though.
1083
1084 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
1085 generation.
1086
10872006-05-15 Kevin Ryde <user42@zip.com.au>
1088
1089 * simpos.c, simpos.h (scm_primitive__exit): New function.
1090 (scm_primitive_exit): Update docstring, no longer the best exit after
1091 a fork.
1092
10932006-05-09 Kevin Ryde <user42@zip.com.au>
1094
1095 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
1096 rather than converting to doubles, to avoid inf or nan when the inputs
1097 are too big for a double but the quotient does fit. This affects
1098 conversions exact->inexact of big fractions.
1099
1100 * filesys.c (scm_open_fdes): Use open64.
1101 (scm_init_filesys): Add O_LARGEFILE.
1102
1103 * ports.c (scm_seek): Use lseek64.
1104 (scm_truncate_file): Use ftruncate64.
1105
4a342b19
MV
11062006-05-08 Marius Vollmer <mvo@zagadka.de>
1107
1108 * private-gc.h (CELL_P): Also check that the potential pointer is
1109 correctly aligned for a cell. Thanks to Miroslav Lichvar!
1110
c862d0e0
KR
11112006-04-18 Rob Browning <rlb@defaultvalue.org>
1112
1113 * _scm.h: Add back error if the size of off_t is unknown. The bug
1114 was actually in guile-readline's configuration.
1115
11162006-04-18 Kevin Ryde <user42@zip.com.au>
1117
1118 * posix.c (scm_mkstemp): Update docstring from the manual, in
1119 particular file mode 0600 is not guaranteed.
1120
281ab5e2
KR
11212006-04-17 Kevin Ryde <user42@zip.com.au>
1122
1123 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
1124 size, to help the guile-readline build where off_t is unused.
1125
2b829bbb
KR
11262006-04-16 Kevin Ryde <user42@zip.com.au>
1127
1128 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
1129 (scm_readdir): Use readdir64.
1130 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
1131 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
1132 and ftruncate take off_t not size_t.
1133 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
1134 available.
1135
11362006-04-06 Kevin Ryde <user42@zip.com.au>
1137
1138 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
9a5fa6e9 1139 instead of toggling it. Reported by Ludovic Courtès.
2b829bbb
KR
1140
11412006-03-26 Marius Vollmer <mvo@zagadka.de>
1142
1143 * threads.c (get_thread_stack_base): Use scm_get_stack_base
1144 instead of accessing __libc_stack_end directly, and only do this
1145 when pthread_attr_getstack is known not to work for the main
1146 thread or when not using pthreads at all.
1147
1148 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
1149 unknown instead of returning NULL.
1150
9a5fa6e9 11512006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1152
1153 * numbers.c (scm_i_mem2number): Renamed to
1154 scm_c_locale_stringn_to_number.
1155 * numbers.c, print.c, read.c: Updated callers.
1156 * numbers.h: Update function declaration.
1157
11582006-03-11 Neil Jerram <neil@ossau.uklinux.net>
1159
1160 * unif.c (string_set): Don't return in a void function. (Reported
1161 by Mike Gran.)
1162
1163 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
1164 rather than void*, so we can do pointer arithmetic on it.
1165 (Reported by Mike Gran.)
1166 (s_scm_uniform_vector_write): Ditto.
1167
11682006-03-10 Neil Jerram <neil@ossau.uklinux.net>
1169
1170 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
1171 oldra is not an array. (Reported by Steve Juranich.)
1172
1173 * threads.c (do_unlock): Renamed from "unlock", which is defined
1174 in unistd.h on QNX. (Reported by Matt Kraai.)
1175
11762006-03-04 Kevin Ryde <user42@zip.com.au>
1177
1178 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
1179 not SCM_CRITICAL_SECTION_START.
1180
1181 * eval.c, posix.c: Change comments from C++ to C style. Reported by
1182 Mike Gran.
1183
11842006-02-28 Kevin Ryde <user42@zip.com.au>
1185
1186 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
1187
11882006-02-26 Kevin Ryde <user42@zip.com.au>
1189
1190 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
1191 NAME_MAX is not available, which is so on Solaris 10. Report and help
1192 by Bill Schottstaedt.
1193
1194 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
1195 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
1196 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
1197 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
1198 use "unsigned char", not signed char. This ensures comparisons are
1199 the same as `char<?' etc, and is also the same as guile 1.6 did.
1200 Reported by Sven Hartrumpf.
1201
4a9f83ff
MD
12022006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
1203
1204 * random.c: Test for SCM_HAVE_T_UINT64 instead of
1205 SCM_HAVE_T_INT64.
1206 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
1207 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
1208 scm_t_int32.
1209
29d8c124 12102006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
4c7016dc
HWN
1211
1212 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
1213 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
1214 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
1215 Take into account SEG->SPAN when computing CELLS_SWEPT.
1216 (scm_i_sweep_segment): Take one more argument, similarly.
1217 (scm_i_sweep_all_segments): Likewise.
1218 (scm_i_sweep_some_segments): Likewise.
1219 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
1220 refer to SCM_GC_CELLS_COLLECTED.
1221
1222 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
1223 argument, an `scm_i_sweep_statistics' object.
1224 Change the way DELTA is collected: don't take into account
1225 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
1226
1227 * gc-malloc.c (scm_realloc): Pass an extra argument
1228 to `scm_i_sweep_all_segments ()'.
1229
1230 * gc.c (gc_start_stats): Updated accordingly.
1231 (gc_end_stats): Take an additional SWEEP_STATS argument.
1232 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
1233 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
1234 Decrement SCM_CELLS_ALLOCATED.
1235 (scm_i_gc): Likewise.
1236
1237 * private-gc.h (scm_i_sweep_*): Updated function
1238 prototypes accordingly.
1239 (scm_t_sweep_statistics): New type.
1240 (scm_i_sweep_statistics_init): New macro.
1241 (scm_i_sweep_statistics_sum): New macro
1242
9a5fa6e9 12432006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1244
1245 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
1246 LEN. Without this, too much collectable memory gets unregistered,
1247 which results in an underflow of SCM_MALLOCATED in
1248 `decrease_mtrigger()'.
1249
1250 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
1251 equal to SCM_MALLOCATED.
1252
12532006-02-13 Marius Vollmer <mvo@zagadka.de>
1254
1255 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
1256 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
1257 configured --without-threads.
1258 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
1259
1aaa1c17
MV
12602006-02-12 Marius Vollmer <mvo@zagadka.de>
1261
1262 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
1263 filling when the fill parameter is omitted, as documented, but
1264 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
1265 can not store characters.
1266
d7c6575f
NJ
12672006-02-09 Neil Jerram <neil@ossau.uklinux.net>
1268
1269 * socket.c (scm_c_make_socket_address): Pass address_size pointer
1270 on to scm_fill_sockaddr call.
1271
43e01b1e
NJ
12722006-02-04 Neil Jerram <neil@ossau.uklinux.net>
1273
1274 * throw.h (scm_c_catch, scm_c_with_throw_handler,
1275 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
1276
1277 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
1278 (struct pre_unwind_data): New, replaces struct lazy_catch.
1279 (scm_c_catch): New, replaces scm_internal_catch as the primary
1280 catch API for C code; adds pre-unwind handler support.
1281 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
1282 compatibility.
1283 (tc16_pre_unwind_data, pre_unwind_data_print,
1284 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
1285 "lazy_catch" equivalents.
1286 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
1287 as the primary C API for a "lazy" catch.
1288 (scm_internal_lazy_catch): Now just a wrapper for
1289 scm_c_with_throw_handler, for back compatibility.
1290 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
1291 pre-unwind handler support.
1292 (scm_catch): Now just a wrapper for
1293 scm_catch_with_pre_unwind_handler, for back compatibility.
1294 (scm_with_throw_handler): New.
1295 (scm_lazy_catch): Update comment to say that the handler can
1296 return, and what happens if it does.
1297 (toggle_pre_unwind_running): New.
1298 (scm_ithrow): When identifying the throw target, take running
1299 flags into account. In general, change naming of things from
1300 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
1301 don't unwind the dynamic context first. Add dynwind framing to
1302 manage the running flag of a throw handler. If a lazy catch or
1303 throw handler returns, rethrow the same exception again. Add
1304 pre-unwind support to the normal catch case (SCM_JMPBUFP).
1305
1306 * root.c (scm_internal_cwdr): Add NULL args to
1307 scm_i_with_continuation_barrier call.
1308
1309 * dynwind.c: Change comment mentioning lazy-catch to mention
1310 pre-unwind data and throw handler also.
1311
1312 * continuations.h (scm_i_with_continuation_barrier): Add
1313 pre-unwind handler args.
1314
1315 * continuations.c (scm_i_with_continuation_barrier): Add
1316 pre-unwind handler args, and pass on to scm_c_catch (changed from
1317 scm_internal_catch).
1318 (c_handler): Remove scm_handle_by_message_noexit call.
1319 (scm_c_with_continuation_barrier): Call
1320 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1321 as the pre-unwind handler.
1322 (scm_handler): Remove scm_handle_by_message_noexit call.
1323 (s_scm_with_continuation_barrier): Call
1324 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1325 as the pre-unwind handler.
1326
2b829bbb
KR
13272006-02-04 Kevin Ryde <user42@zip.com.au>
1328
1329 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
1330
72098928
KR
13312006-02-03 Kevin Ryde <user42@zip.com.au>
1332
1333 * list.c, list.h (scm_list): Restore this function for use from C.
1334 It's a complete no-op but in theory might used by someone.
1335
aa092c5d
MV
13362006-01-30 Marius Vollmer <mvo@zagadka.de>
1337
1338 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
1339 so that it gets unlocked in all cases.
1340 (SCM_APPLY, CEVAL): Likewise.
1341
661ae7ab
MV
13422006-01-29 Marius Vollmer <mvo@zagadka.de>
1343
ee51ba31
MV
1344 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
1345 scm_is_typed_array instead.
1346
661ae7ab
MV
1347 Renamed the "frames" that are related to dynamic-wind to "dynamic
1348 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
1349 Updated documentation.
1350
99e370f6
MV
1351 Disabled "futures":
1352
1353 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
1354 * eval.c, init.c: Comment out all 'future' related things.
1355
15ccf10b
MV
13562006-01-28 Marius Vollmer <mvo@zagadka.de>
1357
1358 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
1359 to inline.h to make it inline.
1360
9a5fa6e9 13612005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
fd0a5bbc
HWN
1362
1363 * strings.c (scm_i_take_stringbufn): New.
1364 (scm_i_c_take_symbol): New.
1365 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
1366
1367 * strings.h (scm_i_c_take_symbol): New.
1368 (scm_i_take_stringbufn): New.
1369
1370 * symbols.c (lookup_interned_symbol): New function.
1371 (scm_i_c_mem2symbol): New function.
1372 (scm_i_mem2symbol): Use `lookup_symbol ()'.
1373 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
1374 creating a new Scheme string.
1375 (scm_from_locale_symboln): Likewise.
1376 (scm_take_locale_symbol): New.
1377 (scm_take_locale_symboln): New.
1378
1379 * symbols.h (scm_take_locale_symbol): New.
1380 (scm_take_locale_symboln): New.
1381
2ca2ffe6
HWN
13822006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1383
1384 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
1385 free_count.
1386
c255614e
HWN
13872005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
1388
1389 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
1390 upon error
1391
29295b0c
NJ
13922005-12-29 Neil Jerram <neil@ossau.uklinux.net>
1393
9a5fa6e9 1394 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
29295b0c
NJ
1395 the GC when allocated_fluids_len is zero.
1396
2824f4dc
NJ
13972005-12-14 Neil Jerram <neil@ossau.uklinux.net>
1398
ec3a8ace
NJ
1399 * load.c (the_reader, the_reader_fluid_num): New.
1400 (scm_primitive_load): Support custom reader.
1401 (scm_init_load): Init the_reader and the_reader_fluid_num; export
1402 the_reader as `current-reader'.
1403
2824f4dc
NJ
1404 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
1405 (rather than an uninitialized pointer on the stack).
1406
d9c36d2a
MV
14072005-12-07 Marius Vollmer <mvo@zagadka.de>
1408
6a88895b
MV
1409 Reported by Bruce Korb:
1410
1411 * init.c (invoke_main_func): Don't call exit here. Throws that
1412 are only caught by scm_with_guile will bypass us and would cause
1413 scm_boot_guile to return erroneously.
1414 (scm_boot_guile): Expect scm_with_guile to return and call exit
1415 here, passing it an appropriate exit code.
1416
1417 From Andy Wingo:
d9c36d2a
MV
1418
1419 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1420 unsigned char cast to an int, or -1 for EOS.
1421
b54df254
MV
14222005-12-06 Marius Vollmer <mvo@zagadka.de>
1423
08f489c9
MV
1424 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1425 non-const.
9a5fa6e9 1426 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
08f489c9 1427
b54df254
MV
1428 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1429 scm_enter_guile): Removed from public API. See comment at
1430 scm_without_guile for the rationale.
1431
1432 * scmsigs.c (read_without_guile): New.
1433 (signal_delivery_thread): Use it instead of
1434 scm_leave_guile/read/scm_enter_guile.
1435
9d9ce2b5
MV
1436 From Stephen Compall:
1437
1438 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1439 (CEVAL): Evaluate SRFI 61 cond clauses.
1440
9a5fa6e9 14412005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
9fb5c8f9
NJ
1442
1443 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1444 This was typically hit when running `gc-live-object-stats' right
1445 after starting Guile.
1446
efeac8ae
KR
14472005-11-30 Kevin Ryde <user42@zip.com.au>
1448
1449 * srfi-13.c (scm_string_append_shared): No copying if just one
1450 non-empty string in args.
1451
606183ba
KR
14522005-11-26 Kevin Ryde <user42@zip.com.au>
1453
1454 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
9a5fa6e9 1455 by Ludovic Courtès.
606183ba
KR
1456
1457 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1458 "register".
1459
1460 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1461 scm_malloc returning NULL, it never does that.
1462 * putenv.c (putenv): Likewise.
1463
1464 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1465 much too big to want to inline.
1466
9a5fa6e9 14672005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
dbb5de29
NJ
1468
1469 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1470 the value at its top. This fixes a reference leak.
1471 (PUSH_REF): Perform `pstate->top++' after calling
1472 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1473 effects.
1474
9a5fa6e9 14752005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
3f98874a
NJ
1476
1477 * gc.c (scm_weak_vectors): Removed.
1478
f07d2b20
KR
14792005-11-12 Kevin Ryde <user42@zip.com.au>
1480
1481 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
9a5fa6e9 1482 by Ludovic Courtès.
f07d2b20 1483
bedd3f5f
MV
14842005-11-07 Marius Vollmer <mvo@zagadka.de>
1485
1486 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1487 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1488 section might exit non-locally.
1489
7c9c0169
NJ
14902005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1491
1492 * eval.c (sym_instead): New symbol.
1493 (ENTER_APPLY): Remove optional use of a continuation when making
1494 trap call.
1495 (scm_debug_opts): Change doc for 'cheap option to make clear that
1496 it is now obsolete.
1497 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1498 making trap calls, and implement substitution of eval expressions
1499 and return values using the values that the trap call handlers
1500 return.
1501
1502 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1503
9a5fa6e9 15042005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
64cdbfc7
KR
1505
1506 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1507 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1508 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1509 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1510 scm_c_make_socket_address): New functions.
1511 * socket.h: Add prototypes.
1512
fc9f596c
KR
15132005-10-24 Kevin Ryde <user42@zip.com.au>
1514
1515 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1516 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1517 POSIX spec examples, the latter are not available on for instance
1518 NetBSD.
1519
1520 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1521 posix.texi.
1522
1523 * stime.c (scm_strftime): Update docstring from posix.texi.
1524
0460c6e1
MV
15252005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1526
1527 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
1528
1529 * null-threads.h, pthread-threads.h
1530 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1531 (scm_i_pthread_mutexattr_recursive): New.
1532
1533 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1534 (scm_i_critical_section_mutex): Do not initialize statically.
1535 (scm_threads_prehistory): Initialize
1536 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1537 here.
1538
1539 * eval.c (source_mutex): Do not initialiaze statically.
1540 (scm_init_eval): Do it here, using
1541 scm_i_pthread_mutexattr_recursive.
1542
7b4a9e52
MV
15432005-09-05 Marius Vollmer <mvo@zagadka.de>
1544
1545 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1546 New.
1547 (sym_reader): New.
1548 (scm_print_opts): Added "quote-keywordish-symbols" option.
1549 (quote_keywordish_symbol): New, for evaluating the option.
1550 (scm_print_symbol_name): Use it.
1551 (scm_init_print): Initialize new option to sym_reader.
1552
5defc05d
NJ
15532005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1554
1555 * eval.c (eval_letrec_inits): New.
1556 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1557
036482e9
MV
15582005-08-12 Marius Vollmer <mvo@zagadka.de>
1559
1560 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1561 Peter Gavin!
1562
5c347f8c
KR
15632005-08-12 Kevin Ryde <user42@zip.com.au>
1564
1565 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1566
bc721aa2
KR
15672005-08-06 Kevin Ryde <user42@zip.com.au>
1568
1569 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1570 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1571 scm_string_index, scm_string_index_right, scm_string_skip,
1572 scm_string_skip_right, scm_string_count, scm_string_map,
1573 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1574 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1575 procedures called in loops.
1576
126c81db
KR
15772005-08-02 Kevin Ryde <user42@zip.com.au>
1578
1579 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1580 avoid lots of copying where previoulsy growing by only 80 bytes at a
1581 time.
1582
7f278dc6
MV
15832005-08-01 Marius Vollmer <mvo@zagadka.de>
1584
1585 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1586 already have scm_lookup_closure_module, which does the same thing.
1587
cb5c4b07
MV
15882005-08-01 Marius Vollmer <mvo@zagadka.de>
1589
1590 New marking algorithm for weak hashtables that fixes the problem
1591 that references from the non-weak value to the associated weak
1592 key (for example) would prevent the entry from ever being dropped.
1593
1594 Guardians have been changed back to their original semantics and
1595 are no longer greedy and no longer drop cycles.
1596
1597 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1598 hashtable and guardian machinery but call the relevant functions
1599 directly.
1600
1601 * guardians.h, guardians.c, deprecated.h,
1602 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1603 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1604 Deprecated and moved into deprecated.[ch].
1605
1606 * guardians.h, guardians.c: Mostly rewritten.
1607 (scm_i_init_guardians_for_gc,
1608 scm_i_identify_inaccessible_guardeds,
1609 scm_i_mark_inaccessible_guardeds): New.
930888e8 1610 (scm_make_guardian): Removed greedy_p argument.
cb5c4b07
MV
1611
1612 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1613 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1614 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1615 (scm_weaks_prehistory): Removed.
1616 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1617 scm_i_mark_weak_vectors_non_weaks,
1618 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1619 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1620 scm_scan_weak_vectors): Removed.
1621
1622 * hashtab.h (scm_i_scan_weak_hashtables): New.
1623 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1624 SCM_WVECTF_NOSCAN.
1625 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1626 t->n_items.
1627 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1628 to latter. Do not scan the alists themselves, this is done by the
1629 weak vector code now. Just update the element count.
1630
1631 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1632 to latter. The type is now only part of the cell word.
1633 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1634
1635 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1636
3e2073bd
MD
16372005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1638
1639 Some changes towards making it possible to run Guile on the EM64T
1640 platform.
1641
1642 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1643 mallocating for (unsigned long *bounds).
1644
1645 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1646 scm_t_bits before storing them in the type word.
1647
1648 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1649 scm_t_bits to int.
1650
e8ac8e75
KR
16512005-07-12 Kevin Ryde <user42@zip.com.au>
1652
1653 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1654 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1655 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1656 than scm_makfrom0str.
1657 Reported by Ken Raeburn.
1658
1659 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1660 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1661 returning SCM_GC_CARD_BVEC.
1662
1663 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1664 rather than latin-1 acute accent, the latter may not print on all
1665 terminals.
1666
1667 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1668 trailing deletions, so as to return a substring if those are the only
1669 changes.
1670
adc0677d
KR
16712005-07-10 Kevin Ryde <user42@zip.com.au>
1672
1673 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1674 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1675 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1676 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1677
8fecbb19
HWN
16782005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1679
1680 * gc-card.c (scm_i_card_statistics): init tag.
1681
1682 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1683
fc9c5d06
HWN
16842005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1685
8fecbb19
HWN
1686 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1687 string.
fc9c5d06 1688
08fce816
KR
16892005-06-25 Kevin Ryde <user42@zip.com.au>
1690
1691 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1692 last change, use plain copy-on-write substrings, the individual
1693 descriptions in the srfi don't mention shared storage (only the
1694 introduction does).
1695
1696 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1697 null-terminator, rather than mallocing a whole new block.
1698 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1699
fc4abd0e
MV
17002005-06-12 Marius Vollmer <mvo@zagadka.de>
1701
e3da8a30
MV
1702 * ramap.c (scm_array_index_map_x): First test for real arrays,
1703 then check for generalized vectors. This ensures that the
1704 generalized vector case need only work with zero-origin ranges.
12097c77
MV
1705 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1706 to access the target array, making these functions work with all
1707 kinds of arrays, not just bit arrays.
e3da8a30 1708
fc4abd0e
MV
1709 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1710 gh_list.c, gh_predicates.c: Deprecated everything.
1711
1712 * environments.c (environment_default_folder,
1713 environment_default_observer): Do not use gh_call3, gh_call1.
1714
e4da0740
HWN
17152005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1716
1717 * modules.c (s_scm_eval_closure_module): new function. Return the
1718 module inside an eval-closure.
1719
1720 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1721 table. This means that procedure properties are GC'd if the
1722 procedure dies.
1723
27667158
KR
17242005-06-11 Kevin Ryde <user42@zip.com.au>
1725
1726 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1727 charset cases, count chars kept and build a string in a second pass,
1728 rather than using a cons cell for every char kept. Use a shared
1729 substring when nothing removed (such sharing is allowed by the srfi).
1730
8a00ba71
HWN
17312005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1732
1733 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
1734 string, so live object stats can be sorted with string<?.
1735
a677679f
MV
17362005-06-06 Marius Vollmer <mvo@zagadka.de>
1737
2ff668b0
MV
1738 * print.c (iprin1): When writing a string, collect all characters
1739 that can be printed directly into one call to scm_lfwrite.
1740 Previously, every character was output with its own call to
1741 write(2) on unbuffered ports.
1742
589f22f6
MV
1743 * eval.c (scm_eval_options_interface): Use
1744 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1745 and SCM_CRITICAL_SECTION_END.
1746
a677679f
MV
1747 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1748 check for generalized vectors. This ensures that the generalized
1749 vector case need only work with zero-origin ranges.
1750
f8cda9ee
KR
17512005-06-06 Kevin Ryde <user42@zip.com.au>
1752
1753 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1754 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1755 matched.
1756
cdac1be4
MV
17572005-06-05 Marius Vollmer <mvo@zagadka.de>
1758
6642f7ac
MV
1759 * eval.c: Added comment on how to make case 1.1 of
1760 r5rs_pitfall.test succeed.
1761
cdac1be4
MV
1762 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1763
1764 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
1765
1766 * socket.c: Remove obsolete comment about socklen_t.
1767 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
1768
1769 * numbers.h (isnan)[__MINGW32__]: Remove.
1770
1771 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
1772 DEFAULT_INCLUDES when cross compiling.
1773
1774 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
1775
a677679f 1776 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
cdac1be4
MV
1777 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
1778 from Jan's patch.)
1779
9e664475
MV
17802005-05-22 Marius Vollmer <mvo@zagadka.de>
1781
188d0c5e
MV
1782 * unif.c (scm_make_shared_array): Add old base to new base since
1783 scm_array_handle_pos does not include the base.
1784 (scm_aind): Likewise.
1785
9e664475
MV
1786 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
1787 output port.
1788
5a6d139b
NJ
17892005-05-12 Neil Jerram <neil@ossau.uklinux.net>
1790
1791 Mac OS X compile warning fixes, reported by Richard Todd.
1792
1793 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
1794 that it is signed.
1795
1796 * strports.c (st_resize_port): Add unsigned char cast.
1797 (scm_mkstrport): Make read/write_buf cast unsigned.
1798
1799 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
1800
1801 * rdelim.c (scm_read_line): Initialize slen.
1802
1803 * load.c (scm_search_path): Remove weird >=1, and add
1804 parentheses to clarify conditions.
1805
1806 * hash.c (scm_hasher): Add const unsigned char cast.
1807
1808 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
1809
b01532af
NJ
18102005-05-11 Neil Jerram <neil@ossau.uklinux.net>
1811
9a5fa6e9 1812 Fix C99isms reported by Ludovic Courtès:
b01532af
NJ
1813
1814 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
1815 code.
1816
1817 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
1818 of code.
1819
1820 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
1821 of code.
1822 (scm_i_card_statistics): Add block for declarations of tag_as_scm
1823 and current.
1824
229a0710
NJ
18252005-05-10 Neil Jerram <neil@ossau.uklinux.net>
1826
1827 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
1828 compile warning reported by Werner Scheinast.
1829
645dd3fc
HWN
18302005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
1831
80038021
HWN
1832 * list.h: remove scm_list()
1833
645dd3fc
HWN
1834 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
1835 SCM_DEBUG_CELL_ACCESSES
1836 (FLUID_NEXT_LOC): idem.
1837
9a68a4a8
KR
18382005-04-30 Kevin Ryde <user42@zip.com.au>
1839
1840 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
1841 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
1842 zero when re==0 and im<0. Reported by Jean Crepeau.
1843
0640cdaa
KR
18442005-04-25 Kevin Ryde <user42@zip.com.au>
1845
1846 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
4d54ee35
KR
1847 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
1848 few sensible uses (like filling with a random number generator say),
1849 but has been allowed in the past and so should be kept.
0640cdaa 1850
c0b85e9c
KR
18512005-04-23 Kevin Ryde <user42@zip.com.au>
1852
1853 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
1854 scm_hash_fn_remove_x.
1855
1856 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
1857 the caller when cons* is reached through apply.
1858
1859 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
1860 list is called using apply, under the debugging evaluator.
1861 (scm_list): Remove.
1862
c51682b4
KR
1863 * list.c, list.h (scm_make_list): New code, moving make-list from
1864 boot-9.scm.
8cb2eff8 1865
c0575bde
KR
18662005-04-14 Kevin Ryde <user42@zip.com.au>
1867
1868 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
1869 converted from scheme code in boot-9.scm.
1870
47a298d9
KR
18712005-04-11 Kevin Ryde <user42@zip.com.au>
1872
1873 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
1874 Validate list argument, scm_string_append and scm_string_append_shared
1875 don't do that to their rest argument (in a normal build).
1876
8ea3dc2e
MV
18772005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1878
1879 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
1880 closure can not be stored since it is no longer valid at GC time.
1881 (make_hash_table): Initialize 'hash_fn' field.
1882 (scm_i_rehash): Only store hash_fn in hash table when closre is
1883 NULL.
1884 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
1885 non-NULL. Always use a NULL closure.
1886 (scm_hash_fn_create_handle_x): Also rehash when table contains too
1887 few entries.
1888
08d2020d
MV
18892005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1890
1891 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
1892 argument; always use scm_delq_x. The delete_fn function works on
1893 the handle, not the key, and it therefore makes no sense to make
1894 it configurable. Changed all callers.
1895 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
1896 (scm_hash_clear): Accept plain vectors as hashtables.
1897 (scm_delx_x): Removed.
1898
cb975c21
HWN
18992005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
1900
1901 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
1902 compatibility with gcc -std=c99.
1903
4c908f2c
MD
19042005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1905
1906 * async.h (scm_mask_ints): Removed left over reference to
1907 scm_root.
1908
1909 * threads.c: Removed fprintf debug statements.
1910
d193b04b
NJ
19112005-03-24 Neil Jerram <neil@ossau.uklinux.net>
1912
1913 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
1914
c29748cd
NJ
19152005-03-23 Neil Jerram <neil@ossau.uklinux.net>
1916
1917 * debug.c (scm_make_memoized): Remove unnecessary critical
1918 section, and simplify by using SCM_RETURN_NEWSMOB.
1919
e654b062
MD
19202005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1921
1922 * strings.h (SCM_STRING_UCHARS): Added missing argument.
1923
4bc6f1c6
KR
19242005-03-18 Kevin Ryde <user42@zip.com.au>
1925
1926 * arbiters.c (FETCH_STORE) [generic C]: Should be
9a5fa6e9 1927 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
4bc6f1c6 1928
f1531813
KR
19292005-03-13 Kevin Ryde <user42@zip.com.au>
1930
1931 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
1932 srfi-60.
1933
1934 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
1935 because OR-ing bits into a negative can reduce the value to an inum.
1936
1937 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
1938 casting inum to double since that can lose precision.
1939
a9fae247
MV
19402005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1941
1942 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
1943 (guilify_self_1): Initialize it.
1944
1945 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
1946 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
1947 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
1948 field.
1949 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
1950 recursively.
1951 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
1952 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
1953 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
1954 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
1955 scm_after_gc_c_hook here.
1956 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
1957 scm_after_gc_c_hook when a full GC has in fact been performed.
1958 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
1959
1960 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
1961 scm_gc_heap_lock.
1962
1963 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
1964 scm_gc_running_p while the scm_i_sweep_mutex is locked.
1965
1966 * inline.h (scm_cell, scm_double_cell): Do not check
1967 scm_gc_running_p, allocation during sweeping is OK.
1968
1969 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
1970 not set scm_block_gc.
1971
1972 * init.c (scm_i_init_guile): Do not set scm_block_gc.
1973
1974 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
1975 instead of scm_malloc. The latter can not be used during GC.
1976
d1c38e11
MV
19772005-03-09 Marius Vollmer <mvo@zagadka.de>
1978
1979 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
1980 years.
1981
99ec43c1
MV
19822005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1983
1984 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
1985 scm_gc_running_p. Sweeping can happen in parallel with
1986 allocation.
1987
1988 * inline.h: Updated comments for current threading implementation.
1989
1990 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
1991 (scm_i_thread): Removed unused signal_asyncs field.
1992 (threads_mark): Do not mark it.
1993 (guilify_self_1): Do not initialize it. Do initialize
1994 continuation_root field.
1995 (do_thread_exit): Do not remove thread from all_threads list.
1996 (on_thread_exit): Do it here, after leaving guile mode.
1997 (sleep_level): Removed.
1998 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
1999 returning. Do not support recursive sleeps.
2000 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
2001 entry. Do not support recursive sleeps.
2002
2003 * fluids.c (ensure_state_size, ensure_all_state_sizes,
2004 resize_all_states): Collapsed ensure_state_size and
2005 ensure_all_state_sizes into one function named resize_all_states.
2006 Allocate new vectors outside of single threaded region. Do only
2007 simple things inside that region.
2008 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
2009 while adding to the global lists.
2010
2011
461f34aa
MV
20122005-03-08 Marius Vollmer <mvo@zagadka.de>
2013
2014 libltdl is no longer distributed. We expect it to be installed
2015 already.
2016
2017 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
2018 (libguile_la_LIBADD): Removed @LIBLTDL@.
2019
4e047c3e
MV
20202005-03-07 Marius Vollmer <mvo@zagadka.de>
2021
2022 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
2023 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
2024 they also block/unblock execution of asyncs and call
2025 scm_async_click which is declared in async.h but threads.h can not
2026 include async.h since async.h already includes threads.h.
2027 (scm_i_critical_section_level): New, for checking mistakes in the
2028 use of the SCM_CRITICAL_SECTION_* macros.
2029 (scm_i_critical_section_mutex): Make it a recursive mutex so that
2030 critical sections can be nested.
2031
2032 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
2033 not zero.
2034
2035 * threads.h, threads.c (scm_frame_lock_mutex): New.
2036 (scm_frame_critical_section): Take mutex as argument.
2037 (framed_critical_section_mutex): New, used as default for above.
2038 (scm_init_threads): Initialize it.
2039 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
2040 scm_i_critical_section_mutex; both are initialized statically.
2041
2042 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
2043 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
b9d9ad3a
MV
2044 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
2045 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
4e047c3e
MV
2046
2047 * debug.c (scm_debug_options): Replace
2048 SCM_CRITICAL_SECTION_START/END with a frame and
2049 scm_frame_critical_section.
2050
2051 * continuations.c (scm_make_continuation): No longer a critical
2052 section.
2053 (scm_dynthrow): Abort when scm_i_critical_section_level is
2054 not zero.
2055
d0a45bff
MV
20562005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2057
db6673e5
MV
2058 * threads.c (scm_try_mutex): Renamed argument for consistency.
2059
d0a45bff
MV
2060 * root.c (scm_call_with_dynamic_root): New docstring.
2061
2062 * eval.c: Define _GNU_SOURCE.
2063
9de87eea
MV
20642005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2065
2066 Big merge from the mvo-thread-cleanup branch. The main changes
2067 are:
2068
2069 - The dynamic roots functionality has been split into dynamic
2070 states and continuations barriers. Fluids have been
2071 reimplemented and can now be garbage collected.
2072
2073 - Initialization of Guile now works in a multi-thread friendly
2074 manner. Threads can freely enter and leave guile mode.
2075
2076 - Blocking on mutexes or condition variables or while selecting
2077 can now be reliably interrupted via system asyncs.
2078
2079 - The low-level threading interface has been removed.
2080
2081 - Signals are delivered via a pipe to a dedicated 'signal delivery
2082 thread'.
2083
2084 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
2085
2086 * throw.c (scm_handle_by_message): Exit only the current thread,
2087 not the whole process.
2088 (scm_handle_by_message_noexit): Exit when catching 'quit.
2089
2090 * scmsigs.c (take_signal, signal_delivery_thread,
2091 start_signal_delivery_thread, ensure_signal_delivery_thread,
2092 install_handler): Reimplemented signal delivery as explained in
2093 the comments.
2094
2095 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
2096 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
2097 scm_i_sched_yield, scm_i_pthread_sigmask,
2098 SCM_I_PTHREAD_MUTEX_INITIALIZER,
2099 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
2100 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
2101 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
2102 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
2103 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
2104 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
2105 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
2106 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
2107 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
2108 scm_i_pthread_key_create, scm_i_pthread_setspecific,
2109 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
2110 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
2111 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
2112 when using pthreads.
2113 * null-threads.c, null-threads.h: Provide dummy definitions for
2114 the above symbols when not using pthreads.
2115
2116 * modules.h, modules.c (scm_frame_current_module): New.
2117
2118 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
2119 instead of scm_internal_dynamic_wind.
2120
2121 * init.h, init.c (restart_stack, start_stack): Removed.
2122 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
2123 (scm_boot_guile_1): Removed.
2124 (scm_i_init_mutex): New.
2125 (really_cleanup_for_exit, cleanup_for_exit): New.
2126 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
2127 Moved around some init funcs. Call
2128 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
2129 with atexit.
2130
2131 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
2132 Use "!scm_is_eq" instead of "!=".
2133
2134 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
2135 SCM_USE_COOP_THREADS): Removed.
2136
2137 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
2138 maintained. Unlock scm_i_sweep_mutex before running
2139 scm_after_gc_c_hook.
2140 (scm_permanent_object): Allocate outside of critical section.
2141 (cleanup): Removed.
2142
2143 * fluids.h, fluids.c: Reimplemented completely.
2144 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
2145 SCM_FAST_FLUID_SET): Reimplemented as functions.
2146 (scm_is_fluid): New.
2147 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
2148 (scm_make_dynamic_state, scm_dynamic_state_p,
2149 scm_is_dynamic_state, scm_current_dynamic_state,
2150 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
2151 scm_c_with_dynamic_state, scm_with_dynamic_state,
2152 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
2153
2154 * feature.c (progargs_fluid): New.
2155 (scm_program_arguments, scm_set_program_arguments): Use it instead
2156 of scm_progargs.
2157 (scm_init_feature): Allocate it. Also, only add "threads" feature
2158 when SCM_USE_PTHREAD_THREADS is true.
2159
2160 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
2161 scm_make_rec_mutex, with all the consequences.
2162 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
2163 scm_internal_dynamic_wind. Handle dynamic states as second
2164 argument.
2165
2166 * threads.h, threads.c (scm_internal_select): Renamed to
2167 scm_std_select and discouraged old name.
2168 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
2169 and scm_std_usleep.
2170 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
2171 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
2172 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
2173 SCM_THREAD_DATA): Removed.
2174 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
2175 (scm_i_thread): New.
2176 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2177 Use scm_assert_smob_type.
2178 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
2179 scm_thread_self, scm_thread_yield, scm_mutex_init,
2180 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
2181 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
2182 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
2183 scm_cond_init, scm_cond_destroy, scm_cond_wait,
2184 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
2185 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
2186 scm_thread_select): Removed. Replaced with scm_i_pthread
2187 functions as appropriate.
2188 (scm_in_guile, scm_outside_guile): Removed.
2189 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
2190 take a ticket.
2191 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
2192 New.
2193 (scm_i_frame_single_threaded): New.
2194 (scm_init_threads_default_dynamic_state): New.
2195 (scm_i_create_thread): Removed.
2196 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
2197 (scm_make_recursive_mutex): New.
2198 (scm_frame_critical_section): New.
2199 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
2200 latter, changed all uses.
2201 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
2202 scm_i_set_last_debug_frame): New, use them instead of scm_root
2203 stuff.
2204 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
2205 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
2206 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
2207 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
2208 (remqueue): Allow the removal of already removed cells. Indicate
2209 whether a real removal has happened.
2210 (scm_thread): Removed, replaced with scm_i_thread.
2211 (make_thread, init_thread_creatant): Removed.
2212 (cur_thread): Removed.
2213 (block_self, unblock_from_queue): New.
2214 (block, timed_block, unblock): Removed.
2215 (guilify_self_1, guilify_self_2, do_thread_exit,
2216 init_thread_key_once, init_thread_key,
2217 scm_i_init_thread_for_guile, get_thread_stack_base,
2218 scm_init_guile): New initialisation method.
2219 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
2220 thread creation.
2221 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
2222 "fair" to fat and implemented new semantics, including reliable
2223 interruption.
2224 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
2225 (scm_threads_mark_stacks): Explicitly mark handle.
2226 (scm_std_select): Allow interruption by also selecting on the
2227 sleep_pipe.
2228 (scm_i_thread_put_to_sleep): Handle recursive requests for
2229 single-threadedness.
2230 (scm_threads_prehistory, scm_init_threads): Put current thread
2231 into guile mode via guileify_self_1 and guileify_self_2,
2232 respectively.
2233
2234 * fluid.h (SCM_FLUIDP): Deprecated.
2235
2236 * coop-threads.c: Removed.
2237
2238 * continuations.h, continuations.c (scm_with_continuation_barrier,
2239 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
2240 New.
2241
2242 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
2243 (async_mutex): New.
2244 (scm_async_click): Protected with async_mutex. Do not deal with
2245 signal_asyncs, which are gone. Set cdr of handled async cell to
2246 #f.
2247 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
2248 current sleep.
2249 (scm_system_async_mark_for_thread): Do not use scm_current_thread
2250 since that might not work during early initialization.
2251
2252 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
2253 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
2254 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
2255 and SCM_CRITICAL_SECTION_END.
2256 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
2257 SCM_CRITICAL_SECTION_START/END.
2258
2259 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
2260 (libguile_la_SOURCES): Added null-threads.c
2261 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
2262 threads-plugin.c.
2263 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
2264
2265 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
2266 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
2267 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
2268 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
2269 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
2270 scm_make_root): Removed or deprecated. Replaced with references
2271 to the current thread, dynamic state, continuation barrier, or
2272 some fluid, as appropriate.
2273 (root_mark, root_print): Removed.
2274 (scm_internal_cwdr): Reimplemented guts with
2275 scm_frame_current_dynamic_state and
2276 scm_i_with_continuation_barrier.
2277 (scm_dynamic_root): Return current continuation barrier.
2278
2279
ad3d5a65
MV
22802005-02-28 Marius Vollmer <mvo@zagadka.de>
2281
2282 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
2283 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
2284 cleanliness.
2285 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
2286 IP_DROP_MEMBERSHIP.
2287 Thanks to Greg Troxel!
2288
73a90115
MD
22892005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2290
2291 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
2292 block.
2293
5d2cb3ab
MV
22942005-02-25 Marius Vollmer <mvo@zagadka.de>
2295
2296 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
2297 so that no two weak alist vectors share a spine.
2298 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
2299 during GC before inserting the new alist cell.
2300
838c4126
MV
23012005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2302
2303 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
2304 the hashtable.
2305 (scm_hash_fn_create_handle_x): Likewise.
2306 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
2307
29fed193
MD
23082005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2309
2310 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
2311 the prototypical examples mentioned in the old reference manual.
2312 Instead keep the old semantics of dispatching on type. (Yes, this
2313 is extremely ugly, but the whole point of keeping the deprecated
2314 interface is not to break old code.)
2315
9cc49060
MD
23162005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2317
2318 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
2319 scm_i_array_dims.
2320
8447f463
KR
23212005-01-28 Kevin Ryde <user42@zip.com.au>
2322
2323 * numbers.c (scm_ash): Rewrite using shifts, much faster than
2324 integer-expt and multiply/divide. Inexacts and fractions no longer
2325 supported (they happened to work before for left shifts, but not
2326 right). Don't really need inexacts and fractions, since ash is
2327 documented as a "bitwise operation", and all the rest of those only
2328 take exact integers.
2329
1367aa5e
HWN
23302005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
2331
856fca7e
HWN
2332 * gc-card.c (scm_i_card_statistics): map structs, closures and
2333 subrs to one tag.
2334
1367aa5e 2335 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
856fca7e 2336 (tag_table_to_type_alist): ignore unknown types.
1367aa5e
HWN
2337
2338 * gc-segment.c (scm_i_all_segments_statistics): new function.
2339 (scm_i_heap_segment_statistics): new function
2340
2341 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
2342 statistics on the number of live objects of each type.
2343
2344 * gc-card.c (scm_i_tag_name): new function.
2345 (scm_i_card_statistics): new function.
2346
333db3b8
KR
23472005-01-24 Kevin Ryde <user42@zip.com.au>
2348
2349 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
2350 POSIX and C99 don't document errno being set. Reported by Bruno
2351 Haible.
2352 (scm_flock): Update docstring from manual.
2353
8447f463
KR
2354 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
2355 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
2356 a 64-bit system.
2357
2358 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
2359 sa_handler, needs to be a long on 64-bit systems where int is only 32
2360 bits.
2361
88f59e53
MV
23622005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2363
0eeb2611
MV
2364 * environments.c (obarray_enter, obarray_replace): Call
2365 SCM_HASHTABLE_INCREMENT when adding a new entry.
2366
88f59e53
MV
2367 * objects.c: Include goops.h for the scm_class_of prototype.
2368
2369 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
2370 sizes to be smaller than the maximum lengths of vectors.
2371
219b2868
MV
23722005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2373
2374 * ports.c, smob.c: Include "libguile/goops.h".
2375
2376 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
2377 scm_class_char, scm_class_pair, scm_class_procedure,
2378 scm_class_string, scm_class_symbol,
2379 scm_class_procedure_with_setter, scm_class_primitive_generic,
2380 scm_class_vector, scm_class_null, scm_class_real,
2381 scm_class_complex, scm_class_integer, scm_class_fraction,
2382 scm_class_unknown, scm_port_class, scm_smob_class,
2383 scm_no_applicable_method, scm_class_of): Moved from objects to
2384 goops since they are only useable once goops has been loaded.
2385 (scm_classes_initialized): Removed.
2386 (scm_class_of): Do not check it.
2387 (create_standard_classes): Do not set it.
2388
009c6b9c
MV
23892005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2390
50472546
MV
2391 * objects.h, objects.c (scm_classes_initialized): New.
2392 (scm_class_of): Signal error when scm_classes_initialized is zero.
2393 * goops.c (create_standard_classes): Set scm_classes_initialized
2394 to one.
2395
009c6b9c
MV
2396 * random.c (scm_random_solid_sphere_x): Use
2397 scm_c_generalized_vector_length instead of
2398 scm_uniform_vector_length.
2399
7719cbe9
MV
24002005-01-16 Marius Vollmer <mvo@zagadka.de>
2401
2402 * script.c (scm_compile_shell_switches): Removed debugging output.
2403
1ec44fed
KR
24042005-01-15 Kevin Ryde <user42@zip.com.au>
2405
2406 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
2407 docstrings from manual.
2408 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
2409
6e4cd850
MV
24102005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2411
0b5a0521
MV
2412 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
2413 its value.
2414
2415 Implement u64 and s64 uniform numeric vectors with bignums when
2416 scm_t_uint64 and scm_t_int64 are not available.
2417
2418 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2419 scm_array_handle_u64_elements,
2420 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2421 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2422 is not available.
2423 (scm_take_s64vector, scm_array_handle_s64_elements,
2424 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2425 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2426 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2427 scm_t_int64/scm_t_uint64 are not available.
2428 (uvec_mark): New, to mark the bignums.
2429 (alloc_uvec): Initialize bignums.
2430 (uvec_fast_ref): Return bignums directly.
2431 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2432 assert_exact_integer): New.
2433 (uvec_fast_set): Use them to validate the bignums.
2434 (scm_init_srfi_4): Set mark function of smob when needed.
2435 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2436 scm_int64_max.
2437
6e4cd850
MV
2438 Recognize 1.4 -e syntax.
2439
2440 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2441 (scm_compile_shell_switches): Use them to recognize and convert
2442 1.4 "-e" syntax.
2443
3b698afe
MV
24442005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2445
2446 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2447 deprecated features that once were macros but are now functions
2448 back into macros.
2449
d6dc83a9
MV
24502005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2451
49086691
MV
2452 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2453 * deprecation.c (scm_issue_deprecation_warning,
2454 scm_c_issue_deprecation_warning_fmt): Use it.
2455 (mode): Removed.
2456 (print_summary): New.
2457 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2458 mode.
2459
d6dc83a9
MV
2460 Deprecated SCM_ARRAY* macros.
2461
2462 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2463 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2464 version. Changed all uses.
2465 (scm_tc16_array, scm_i_tc16_array,
2466 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2467 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2468 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2469 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2470 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2471 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2472 SCM_ARRAY_V, SCM_I_ARRAY_V,
2473 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2474 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2475 scm_t_array, scm_i_t_array): Likewise.
2476 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2477 Moved from unif.h to unif.c.
2478 (scm_c_array_rank): New.
2479 (scm_array_rank): Reimplement using it.
2480
2481 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2482 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2483 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
2484
dc91d8de
MV
24852005-01-11 Marius Vollmer <mvo@zagadka.de>
2486
2487 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2488 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2489 scm_c_generalized_vector_ref and scm_cvref, and
2490 scm_c_generalized_vector_set_x, respectively.
2491 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2492 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2493
2494 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2495 former to latter and made public. Changed all uses.
2496 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2497 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2498 (scm_i_shap2ra): New internal version of scm_shap2ra.
2499 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2500 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2501 (scm_ra_set_contp): Deprecated, changed all uses to
2502 scm_i_ra_set_contp.
2503 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
2504
66d33784
MV
25052005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2506
b06f099d
MV
2507 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2508 Trotts!
2509
5d35ad81
MV
2510 * unif.c (scm_list_to_typed_array): Allow the specification of the
2511 upper bound as well. This is needed for empty arrays.
2512 (l2ra): Give needed number of elements in error message.
2513 (scm_i_print_array): Print length information for arrays that need
2514 it.
2515 (scm_i_read_array): Parse it.
2516
66d33784
MV
2517 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2518 scm_i_object_chars, scm_i_object_length): Brought back from the
2519 dead.
2520
d7d7d401
MV
25212005-01-10 Marius Vollmer <mvo@zagadka.de>
2522
74c58fce
MV
2523 * ramap.c: Replaced single-index uses of scm_array_set_x with
2524 scm_c_generalized_vector_set_x.
2525
d7d7d401
MV
2526 * unif.c (scm_array_rank, scm_array_dimensions,
2527 scm_shared_array_offset, scm_shared_array_increments,
2528 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2529 to simplify code and make it more general.
2530 (scm_shared_array_root): Work with all kinds of arrays, including
2531 naked vectors.
2532 (indices_to_pos): New.
74c58fce
MV
2533 (scm_make_shared_array): Use it instead of scm_aind; use handle
2534 for oldra.
2535
4475d3fe
KR
25362005-01-10 Kevin Ryde <user42@zip.com.au>
2537
2538 * posix.c (scm_mkstemp): Update docstring from manual.
2539
d3ddc95e
KR
2540 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2541
8c8491f5
MV
25422005-01-09 Marius Vollmer <mvo@zagadka.de>
2543
b89ecc6f
MV
2544 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2545 scm_i_uniform_vector_set_proc): New.
2546 (u8ref, u8set, s8ref, s8set, etc): New.
2547 (uvec_reffers, uvec_setters): New.
2548 (uvec_to_list): Use generic scm_array_handle_ref instead of
2549 uvec_fast_ref since scm_array_handle_ref should be faster now.
8cb01d9f
MV
2550 (coerce_to_uvec, scm_c_uniform_vector_ref,
2551 scm_c_uniform_vector_set_x): Likewise.
b89ecc6f
MV
2552
2553 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2554 New.
2555 (scm_t_array_handle): Added ref, set, elements and
2556 writable_elements for fast inline operation of
2557 scm_array_handle_ref and scm_array_handle_set.
2558 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2559 and replaced with inline code that simply calls the ref/set
2560 members of the handle.
2561 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2562 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2563 New.
2564 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2565 and memoize_set.
2566 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2567 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2568 scm_bit_invert_x): Correctly multiply index with increment in the
2569 general case.
2570
8c8491f5
MV
2571 * unif.c (scm_array_handle_set): Correctly execute only one
2572 alternative. D'Oh!
2573 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2574 the array; this covers all cases with much simpler code.
2575
2576 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2577 as well.
2578
cd5d55c7
MV
25792005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2580
2581 * srfi-4.c (uvec_type): New.
2582 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2583 scm_c_uniform_vector_x): Use it to get concrete type.
2584
2585 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2586 fit the docs.
2587
2588 * unif.c (ra2l): Handle zero rank arrays.
2589 (scm_i_print_array): Print zero rank arrays specially.
2590 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2591 (scm_i_read_array): Allow zero rank arrays.
2592
a4aad74e
MV
25932005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2594
2595 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2596 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2597 and SCM_SET_HASHTAB_BUCKET.
2598
2599 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2600 Removed ref_stack field.
2601 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2602 of a print state. Use them everywhere instead of ref_stack.
2603
3a40d5e1
MV
2604 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
2605
a4aad74e
MV
2606 * srfi-4.c: Include deprecation.h.
2607
2608 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2609 deprecated.c, eq.c
2610 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2611 (scm_vector_elements, scm_vector_writable_elements,
2612 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2613 unif.[hc].
2614 (SCM_SIMPLE_VECTOR_LOC): Removed.
2615 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2616 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2617 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2618 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2619 latter. Changed use in eq.c.
2620
f01fe441
MV
26212005-01-07 Marius Vollmer <mvo@zagadka.de>
2622
2623 Make the uniform vector routines also deal with one dimensional
2624 arrays.
2625
2626 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2627 SCM_SMOB_PREDICATE in this file.
2628 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2629 of the right type.
2630 (scm_is_uniform_vector): Likewise.
2631 (uvec_fast_ref): Made BASE param const.
2632 (uvec_writable_elements, uvec_elements): New.
2633 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2634 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2635 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2636 arrays.
2637 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2638 argument convention.
2639 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2640 checking.
2641 (scm_uniform_vector_length): Use uvec_length.
2642
2aaf5726
MV
26432005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2644
2645 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2646 scm_c_uniform_vector_size): Removed.
2647 (scm_array_handle_uniform_element_size): New.
2648
2649
2650 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2651 type of POS parameter to be signed, positions can be negative.
2652 (scm_array_handle_release): New, changed all uses of
2653 scm_t_array_handle to properly call it.
2654 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2655 Renamed former to latter, changed all uses.
2656
34ae52fc
MV
26572005-01-05 Marius Vollmer <mvo@zagadka.de>
2658
2659 Updated bitvector routines to also use scm_t_array_handles.
2660
2661 * unif.h (scm_bitvector_elements,
2662 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2663 deliver offset, length and increment to caller. Changed all uses.
2664 (scm_bitvector_release_elements,
2665 scm_frame_bitvector_release_elements,
2666 scm_bitvector_release_writable_elements,
2667 scm_frame_bitvector_release_writable_elements): Removed.
2668 (scm_array_handle_bit_elements,
2669 scm_array_handle_bit_writable_elements,
2670 scm_array_handle_bit_elements_offset): New.
2671 (scm_make_typed_array): The special value for non-initialized
2672 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2673 was a valid value to fill bitvectors with, so it can't really be
2674 specialed out.
2675
c4cb7628
KR
26762005-01-04 Kevin Ryde <user42@zip.com.au>
2677
2678 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2679 Reported by Bill Schottstaedt.
2680
0356881d
MV
26812005-01-02 Marius Vollmer <mvo@zagadka.de>
2682
2683 * sort.c (quicksort): Added INC parameter for non-contigous
2684 vectors.
2685 (quicksort1): New, for contigous vectors. Both functions are
2686 generated from the same code by including "quicksort.i.c".
2687 (scm_restricted_vector_sort_x): Call one of quicksort and
2688 quicksort1, depending on increment of vector.
2689 (scm_sort): Simply call scm_sort_x on a copy of the list or
2690 vector.
2691 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2692 size_t, added inc parameter.
2693 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2694 so that it doesn't leak.
2695 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2696 list or vector.
2697
2698 * ramap.c (scm_array_map_x): Do not try to convert fill value
2699 before filling, any necessary conversion is done while storing.
2700
2701 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2702 doing it inline.
2703
2704 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2705 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2706 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2707
2708 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2709 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2710 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2711 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2712 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2713 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2714 vector elements API or simple vector API, as appropriate. Removed
2715 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2716 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2717
2718 * srfi-4.h, srfi-4.c,
2719 srfi-4.i.c (scm_array_handle_uniform_elements,
2720 scm_array_handle_uniform_writable_elements,
2721 scm_uniform_vector_elements,
2722 scm_uniform_vector_writable_elements):
2723 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2724 scm_t_array_handle, deliver length and increment.
2725 (scm_array_handle_<foo>_elements,
2726 scm_array_handle_<foo>_writable_elements): New.
2727
2728 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2729 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
2730
2731 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2732 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2733 scm_array_handle_set, scm_array_handle_elements
2734 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2735 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2736 scm_dimensions_to_uniform_array): Deprecated for real.
2737 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2738 snarfing wont allow a mismatch between C and Scheme arglists.
2739 (scm_make_shared_array, scm_enclose_array): Correctly use
2740 scm_c_generalized_vector_length instead of
2741 scm_uniform_vector_length.
2742
2743 * validate.h (SCM_VALIDATE_VECTOR,
2744 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2745 of SCM_VECTORP.
2746
2747 * weaks.h, weaks.c: Use new internal weak vector API from
2748 vectors.h.
2749
2750 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2751 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2752 'extra' to being regular sources.
2753 (noinst_HEADERS): Added quicksort.i.c.
2754 * quicksort.i.c: New file.
2755
2756 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2757 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2758 and reimplemented. Replaced all uses with scm_vector_elements,
2759 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2760 appropriate.
2761 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2762 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2763 SCM_SIMPLE_VECTOR_LOC): New.
2764 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2765 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2766 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2767 Removed.
2768 (scm_vector_copy): New.
2769 (scm_vector_elements, scm_vector_writable_elements): Use
2770 scm_t_array_handle, deliver length and increment. Moved to
2771 unif.h. Changed all uses.
2772 (scm_vector_release_elements,
2773 scm_vector_release_writable_elements,
2774 (scm_frame_vector_release_elements,
2775 scm_frame_vector_release_writable_elements): Removed.
2776 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
2777 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
2778 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
2779 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
2780 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
2781 weak vectors.
2782
0336d18b
MV
27832004-12-29 Marius Vollmer <mvo@zagadka.de>
2784
2785 No longer use creators to specify the type of an array. Creators
2786 expose the fact that arrays are wrapped around vectors, but that
2787 might change.
2788
2789 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
2790 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
2791 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
2792 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
2793 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
2794 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
2795 uvec_proc_vars): Removed.
2796 (scm_i_generalized_vector_creator): Removed.
2797 (scm_i_generalized_vector_type): New.
2798
2799 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
2800 scm_make_typed_array, scm_array_type, scm_list_to_array,
2801 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
2802 (scm_array_creator): Removed.
2803 (scm_array_p): Deprecated second PROT argument.
2804 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
2805 Deprecated, reimplemented in terms of scm_make_typed_array and
2806 scm_list_to_typed_array.
2807 (scm_i_proc_make_vector, scm_i_proc_make_string,
2808 scm_i_proc_make_bitvector): Removed.
2809 (type_creator_table, init_type_creator_table, type_to_creator,
2810 make_typed_vector): New.
2811 (scm_i_convert_old_prototype): Removed.
2812 (prototype_to_type): New.
2813 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
2814 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
2815 minor added clarity.
2816 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
2817 instead of scm_make_uve.
2818 (tag_creator_table, scm_i_tag_to_creator): Removed.
2819 (tag_to_type): New.
2820 (scm_i_read_array): Use scm_list_to_typed_array instead of
2821 scm_list_to_uniform_array.
2822
277e8472
MV
28232004-12-27 Marius Vollmer <mvo@zagadka.de>
2824
32b26202
MV
2825 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
2826 (scm_bitvector_writable_elements): New.
2827 (scm_bitvector_release, scm_bitvector_release_elements):
2828 Renamed former to latter. Added explicit call to
2829 scm_remember_upto_here_1.
2830 (scm_frame_bitvector_release,
2831 scm_frame_bitvector_release_elements): Renamed former to latter.
2832 (scm_bitvector_release_writable_elements,
2833 scm_bitvector_release_writable_elements): New.
2834 Changed all uses as required by the changes above.
2835
2836 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
2837 scm_u8vector_elements, etc): Made return value "const".
2838 (scm_uniform_vector_writable_elements,
2839 scm_u8vector_writable_elements, etc): New.
2840 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
2841 Renamed former to latter. Added explicit call to
2842 scm_remember_upto_here_1.
2843 (scm_frame_uniform_vector_release,
2844 scm_frame_uniform_vector_release_elements): Renamed former to latter.
2845 (scm_uniform_vector_release_writable_elements,
2846 scm_frame_uniform_vector_release_writable_elements): New. Takes
2847 crown of longest identifier yet.
2848 Changed all uses as required by the changes above.
2849
277e8472
MV
2850 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
2851 void.
2852 (scm_is_vector, scm_vector_p, scm_vector_length,
2853 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
2854 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
2855 scm_vector_move_left_x, scm_vector_move_right_x,
2856 scm_vector_fill_x): handle one-dimensional arrays.
32b26202
MV
2857 (scm_vector_elements, scm_vector_release_elements,
2858 scm_vector_frame_release_elements, scm_vector_writable_elements,
2859 scm_vector_release_writable_elements,
2860 scm_vector_frame_release_writable_elements): New.
2861 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
2862 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
277e8472
MV
2863
2864 * ramap.c (scm_ramapc, scm_raeql): Use
2865 scm_c_generalized_vector_length instead of
2866 scm_uniform_vector_length.
2867 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
2868 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
2869
49c51610
MV
28702004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2871
2872 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
2873 member for relocating debug frames.
2874 (scm_make_continuation): Set it.
2875
2876 * stacks.c (read_frame, read_frames, scm_make_stack,
2877 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
2878 of continuations instead of calculating the offset ourselves.
2879 Relocate 'vect' member of scm_t_debug_frame.
2880
3b2ee265
KR
28812004-12-16 Kevin Ryde <user42@zip.com.au>
2882
2883 * ramap.c (scm_array_map_x): Check for at least one source argument.
2884
e120686a
KR
28852004-12-14 Kevin Ryde <user42@zip.com.au>
2886
2887 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
2888 the C code so for the final call to the predicate procedure is a tail
2889 call, per SRFI-13 spec.
2890
680b5237
KR
28912004-12-10 Kevin Ryde <user42@zip.com.au>
2892
2893 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
2894 recent revision to the reference manual.
2895
2896 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
2897 with "%", C99 says it's well-defined.
2898
2899 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
2900 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
2901 bother trying to fit scm_from_ulong, not really worth the trouble if
2902 addresses are more than 4 bytes usually.
2903
446d320c
KR
29042004-11-30 Kevin Ryde <user42@zip.com.au>
2905
2906 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
2907 arm32. Reported by Greg Troxel.
2908
f2654760
MV
29092004-11-14 mvo <mvo@zagadka.de>
2910
2911 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
2912
2913 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
2914
d550e35f
MV
29152004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2916
2917 Enclosed arrays are now their own smob. This has been done to
2918 make the code more explicit about them and to prepare for the time
f2654760
MV
2919 when generalized vectors include arbitrary one-dimensional
2920 arrays. (Uptonow, enclosed arrays have been recognized by their
2921 use of an array as their storage 'vector'. When all generalized
2922 vectors are allowed as storage, including one-dimensional arrays,
2923 this will no longer work.)
d550e35f
MV
2924
2925 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
2926 New.
2927 (exactly_one_third, singp): Removed.
2928 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
2929 scm_shared_array_offset, scm_shared_array_increments): Handle
2930 enclosed arrays explicitely.
2931 (scm_array_rank): Likewise. Also, do not return zero for
2932 non-arrays, signal an error instead since arrays with rank zero do
2933 exist.
2934 (scm_i_make_ra): New, for specifying the tag of the new array.
2935 (scm_make_enclosed_array): Use it.
2936 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
2937 (scm_make_shared_array): Use scm_c_generalized_vector_length
2938 instead of scm_uniform_vector_length.
2939 (scm_array_in_bounds_p): Rewritten to be much cleaner.
2940 (scm_i_cvref): New, doing the job of scm_cvref.
2941 (scm_cvref): Use scm_i_cvref.
2942 (scm_array_ref): Do not accept non-arrays when no indices are
2943 given. Use scm_i_cvref to do the actual access.
2944 ("uniform-array-set1"): Do not register.
2945 (scm_array_set_x, scm_uniform_array_read_x,
2946 scm_uniform_array_write): Handle enclosed arrays explicitly.
2947 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
2948 handle enclosed arrays.
2949 (scm_array_to_list): Handle enclosed arrays explicitly.
2950 (rapr1): Removed.
2951 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
2952 enclosed arrays.
2953 (scm_i_print_enclosed_array): New.
2954 (tag_proto_table, tag_creator_table): Renamed former to latter.
2955 Added "a" and "b" for strings and bitvectors, resp.
2956 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
2957 latter. Tag "a" is in the table now, no need to handle it as a
2958 legacy tag.
2959 (scm_raprin1): Just call scm_iprin1.
2960 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
2961 explicitly.
2962 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
2963 Use scm_i_print_array as printer for scm_tc16_array.
2964
2ed34885
MV
29652004-11-10 Marius Vollmer <mvo@zagadka.de>
2966
823086c1
MV
2967 * ramap.c (cind): Changed second arg to be pointer to long instead
2968 of uniform vector.
2969 (scm_ramapc): Allocate index vector with scm_malloc and not as
d550e35f 2970 uniform vector. Wrap it in a frame so that it gets properly freed.
823086c1
MV
2971 (scm_array_index_map_x): Likewise.
2972
2973 * unif.c: Changed all uses of scm_array_prototype to
2974 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
2975 prototype is known.
2976 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
2977 in terms of scm_uniform_vector_read_x and
2978 scm_uniform_vector_write, respectively. Strings and
2979 bitvector support has been dropped.
2980
2ed34885
MV
2981 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
2982 needed files directly. Include config.h, <unistd.h> and <io.h>
2983 when available.
2984 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
2985
2c72f253
MV
29862004-11-09 Marius Vollmer <mvo@zagadka.de>
2987
2988 * gh_data.c (gh_uniform_vector_length): Properly use
2989 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
2990
3cc0a296
MV
29912004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2992
2993 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
2994 New.
2995 (scm_i_uniform_vector_creator): Removed.
2996 (scm_i_generalized_vector_creator): New.
2997 (scm_uniform_vector_length, scm_uniform_element_size): Do not
2998 handle generalized vectors, only uniform numeric vectors.
2999 (alloc_uvec): Do length check here...
3000 (make_uvec): ...but not here.
3001 (coerce_to_uvec): Use new generalized vector functions to handle
3002 all kinds of vectors in one go.
3003
3004 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
3005 remaining scm_tc7_unused tags to get a neatly ordered list.
3006
3007 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
3008 longer handle scm_tc7_bvect bitvectors.
3009
3010 * ramap.c: Use the new generalized vector functions to handle all
3011 vector like things.
3012
3013 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
3014 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
3015 scm_generalized_vector_length, scm_generalized_vector_ref,
3016 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
3017 scm_is_generalized_vector, scm_c_generalized_vector_length,
3018 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
3019 New.
3020
3021 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
3022 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
3023 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
3024 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
3025 scm_c_bitvector_length, scm_c_bitvector_ref,
3026 scm_c_bitvector_set_x, scm_bitvector_elements,
3027 scm_bitvector_release, scm_frame_bitvector_release,
3028 scm_tc16_bitvector, bitvector_free, bitvector_print,
3029 bitvector_equalp, count_ones, find_first_one): New.
3030 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
3031 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
3032 using the new C API for bitvectors and maybe count_ones or
3033 find_first_one, as appropriate.
3034 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
3035 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
3036 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
3037 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
3038 new functions from above.
3039 (scm_i_proc_make_vector, scm_i_proc_make_string,
3040 scm_i_proc_make_bitvector): Made non-static for use in
3041 scm_i_generalized_vector_creator.
3042 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
3043 (scm_make_uve): Validate that the created object is a generalized
3044 vector.
3045 (scm_i_legacy_tag): Removed.
3046 (scm_i_print_array): Do it here.
3047 (scm_raprin1): Only print enclosed arrays.
3048
3049 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
3050
c24d026b
MV
30512004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3052
1f2328fe
MV
3053 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
3054 added portability.
3055
3056 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
3057 for "space". Thanks to Bruce Korb!
3058
c24d026b
MV
3059 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
3060 only after dest has been set. Thanks to Hyper Division!
3061
3062 * gh_data.c (gh_uniform_vector_length): Use
3063 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
3064
d4ea47c8
MV
30652004-11-03 Marius Vollmer <mvo@zagadka.de>
3066
3067 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
3068 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
3069 SCM_SET_UVECTOR_LENGTH): Removed.
3070
236288e2
MV
30712004-11-02 Marius Vollmer <mvo@zagadka.de>
3072
9a5fa6e9 3073 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
236288e2
MV
3074 Thanks!
3075
3076 * backtrace.c (scm_display_backtrace_with_highlights): Join the
3077 first and the second line of the SCM_DEFINE macro call, since old
3078 preprocessors cannot handle definitions that are split into two
3079 lines.
3080
3081 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
3082 declarations.
3083
3084 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
3085 scm_t_uint32 to fix the mismatch between the function declaration
3086 and definition.
3087
3088 * sort.c (quicksort): Don't use C99 variable declarations.
3089
3090 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
3091 SCM_BOOL_F if no type matches.
3092
3093 * threads.c (thread_print): Cast a pointer to size_t when printing
3094 with scm_uintprint.
3095
3096 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
3097 defined.
3098 (scm_array_prototype): Deprecated.
3099
f738b51d
MV
31002004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3101
5d1015ec
MV
3102 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
3103 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
3104 more efficient access to the u32vector.
3105
034486df
MV
3106 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
3107 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
3108 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
3109
3110 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
3111 instead of the old-style dvectors.
3112
3113 * gh_data.c: Use new-style uniform arrays in place of old-style
3114 ones.
3115
3116 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
3117 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
3118
3119 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
3120 instead of old-sytle uvectors.
3121
3122 * convert.c, convert.i.c: Rewritten completely, using
3123 scm_any_to_u8vector, etc and other new-style uniform vector
3124 functions.
3125
3126 * random.c (scm_random_solid_sphere_x,
3127 scm_random_hollow_sphere_x): Do not validate vector argument, this
3128 is already done elsewhere.
3129
3130 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
3131 scm_any_to_u8vector, etc): New.
3132 (scm_uniform_element_size, scm_uniform_vector_length): Do no
3133 longer handle old-style uniform vectors.
3134
f738b51d
MV
3135 * read.c (scm_lreadr): Bugfix: include the last bit in the
3136 bit vector.
3137
5e9c05a1
MV
31382004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3139
327114a2
MV
3140 * unif.h, unif.c (scm_array_creator): New.
3141 (scm_i_get_old_prototype): New.
3142 (scm_array_prototype): use it to return old-style prototype, never
3143 return creators.
3144 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
3145 arg of SCM_UNDEFINED. The latter is wrong.
3146
5e9c05a1
MV
3147 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
3148 (make_uve): Removed.
3149 (scm_i_proc_make_vector, scm_i_proc_make_string,
3150 scm_i_proc_make_u1vector): New.
3151 (scm_init_unif): Initialize them.
3152 (scm_i_convert_old_prototype): New.
3153 (scm_make_uve): Use it to get the creator procedure. Removed all
3154 old code that created old-style uniform vectors.
3155 (scm_array_p): Handle generic vectors.
3156 (scm_dimensions_to_uniform_array): Do not fill new array with
3157 prototype when that is a procedure.
3158 (scm_list_to_uniform_array): Also accept a list of lower bounds as
3159 the NDIM argument.
3160 (scm_i_print_array): Print rank for shared or non-zero-origin
3161 vectors.
3162 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
3163 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
3164 which I do not understand yet.
3165 (scm_array_prototype): Explicitely handle generic vectors.
327114a2 3166
5e9c05a1
MV
3167 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
3168 (iflo2str): Use icmplx2str for complex numbers.
3169
3170 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
3171 scm_i_uniform_vector_prototype): Removed.
3172 (scm_i_uniform_vector_creator): New.
3173 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
3174 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
3175 Updated all tables and generic functions to support them.
3176 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
3177 (scm_init_srfi_4): Initialize them.
3178
3179 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
3180 sizeof(CTYPE) as explained in the comment.
3181
3182 * read.c (scm_lreadr): Call scm_i_read_array for all characters
50472546 3183 following '#' that can start an array. Explicitely disambiguate
5e9c05a1
MV
3184 'i' and 'e' between introducing numbers and uniform vectors. Do
3185 not call scm_i_read_homogenous_vector, since that is also handled
3186 by scm_i_read_array now.
3187
f984af07
MV
31882004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3189
3190 First cut at integrating uniform vectors from srfi-4 with the rest
3191 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
3192 vector. The plan is to gradually replace one type after the other
3193 until none is left and then to consider general cleanups and
3194 optimizations.
3195
3196 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
3197
3198 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
3199 scm_uniform_vector_ref, scm_uniform_vector_set_x,
3200 scm_uniform_vector_to_list, scm_is_uniform_vector,
3201 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
3202 scm_uniform_vector_elements, scm_uniform_vector_element_size,
3203 scm_uniform_vector_release): New.
3204 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
3205 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
3206 from unif.h, unif.c and extended to handle both the old and new
3207 uniform vectors.
3208
3209 * tags.h (scm_tc7_byvect): Commented out.
3210
3211 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
3212 the former to the latter.
3213 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
3214 srfi-4.h, srfi-4.c.
3215 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
3216 (scm_array_p, scm_array_rank, scm_array_dimensions,
3217 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
3218 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
3219 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
3220 vectors. Removed code for scm_tc7_byvect.
3221 (scm_dimensions_to_uniform_array): Fill array with 0 when
3222 prototype is #\nul.
3223 (scm_i_print_array_dimension, scm_i_legacy_tag,
3224 scm_i_print_array): New.
3225 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
3226 for scm_tc7_byvect.
3227
3228 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
3229 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
3230 uniform vectors. Removed code for scm_tc7_byvect
3231
3232 * print.c (iprin1): Removed code for scm_tc7_byvect.
3233 * objects.c (scm_class_of): Likewise.
3234 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
3235 * gc-card.c (scm_i_sweep_card): Likewise.
3236 * evalext.c (scm_self_evaluating_p): Likewise.
3237 * eq.c (scm_equal_p): Likewise.
3238
3239 * gh_data.c (gh_chars2byvect): Reimplemented with
3240 scm_make_s8vector.
3241 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
3242
3243 * srfi-4.c (take_uvec): New.
3244 (alloc_uvec): Use it.
3245 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
3246
3247 * random.c (vector_scale, vector_scale_x): Renamed former to the
3248 latter, since it modifies its argument.
3249 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
3250 Do not use scm_universal_vector_length for non-uniform vectors.
3251 Use scm_f64vector_elements to access innards of uniform vectors.
3252
3253 * convert.i.c: Convert srfi-4 style uniform vectors when
3254 requested.
3255 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
3256 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
3257
79d52182
MV
32582004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3259
3260 * numbers.h, numbers.c (scm_i_print_double): New.
3261
3262 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
3263 ../srfi/ but heavily modified.
3264 * Makefile.am: Add them in all the right places.
3265 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
3266 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
3267 '#u', and '#s'.
3268
3269 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
3270 and made non-static. Changed all uses.
3271
6191ccec
MV
32722004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3273
e64e80b0
MV
3274 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
3275 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
3276 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
3277 scm_uintprint to print unsigned integers, raw heap words, and
3278 adresses, using a cast to scm_t_bits to turn pointers into
3279 integers.
3280
3281 * unif.c: Include "libguile/print.h".
3282
c90ac3a8
MV
3283 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
3284 scm_t_intmax values.
3285 (scm_uint2str): New, for scm_t_uintmax.
3286 (scm_iint2str): Argument type changed to scm_t_intmax,
3287 reimplemented in terms of scm_uint2str.
3288
3289 * print.c, print.h (scm_uintprint): New, for printing
3290 scm_t_uintmax values.
3291 (scm_intprint): Argument type changed to scm_t_intmax.
3292
77c2594f
MV
3293 * sort.c (quicksort, scm_merge, scm_merge_list_x,
3294 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
3295 strategic places so that the loops can be interrupted.
3296
6191ccec
MV
3297 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
3298 "-I$(top_srcdir)/libguile-ltdl".
3299 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
3300 "../libguile-ltdl/libguile-ltdl.a".
3301
3302 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
3303 all references to scm_lt_* with just lt_*. Include <ltdl.h>
3304 instead of <libguile-ltdl.h>.
3305
77600f3e
MV
33062004-10-20 Marius Vollmer <mvo@zagadka.de>
3307
3308 * sort.c (quicksort): Copy pivot out of the array while
3309 constructing the partitions; it could get overwritten otherwise.
3310 Because of the ultimate insertion sort, this bug did not cause
3311 quicksort to fail, it just put all the burdon on the insertion
3312 sort and was thus very slow. Thanks to Rolan Orre for reporting
3313 the slowness!
3314
5000379b
MV
33152004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3316
192cd792
MV
3317 * numbers.c (scm_i_range_error): New.
3318 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
3319 scm_out_of_range.
3320
3321 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
6191ccec 3322 endpos. State inclusiveness/exclusiveness of bounds in docstring.
192cd792
MV
3323
3324 * unif.c (scm_array_p): When no prototype is given, explicitely
3325 test for allowable types, do not simply return true. Thanks to
3326 Roland Orre for reporting this!
3327
5000379b
MV
3328 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
3329
3330 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
3331 segment to scm_max_segment_size.
3332
497eb0b7
HWN
33332004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
3334
1367aa5e
HWN
3335 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
3336
497eb0b7
HWN
3337 * inline.h (scm_double_cell): abort if GC running.
3338 (scm_cell): idem.
3339
aef0bdb4
MV
33402004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3341
3342 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
3343 pos == 0.
3344
3345 Keywords no longer store a 'dash symbol'. Instead, they store a
3346 symbol with their real name.
3347
3348 * keywords.h, keywords.c, deprecated.h, deprecated.c
3349 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
3350 terms of scm_is_keyword and scm_keyword_dash_symbol.
3351
3352 * keywords.h, keywords.c, discouraged.h, discouraged.c
3353 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
3354 scm_c_make_keyword): Discouraged.
3355
3356 * keywords.h, keywords.c (scm_symbol_to_keyword,
3357 scm_keyword_to_symbol): Implemented in C.
3358 (scm_is_keyword, scm_from_locale_keyword,
3359 scm_from_locale_keywordn): New.
3360
3361 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
3362
3363 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
3364 scm_from_locale_keyword instead of scm_c_make_keyword.
3365
3366 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
3367 better error message.
3368
3369 * deprecated.c: Include discouraged.h and keywords.h.
3370
3371 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
3372 reading '#:' or ':'. See NEWS for consequences.
3373
818deb11
MV
33742004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3375
43c25626
MV
3376 * read.c (scm_lreadr): Revert change from 2004-09-22: string
3377 literals are now read-write again (until SCM_STRING_CHARS is
3378 removed).
3379
3380 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
3381 strings with an error message that blames SCM_STRING_CHARS.
3382
3383 * options.c (change_option_setting): Use scm_car instead of
3384 explicit type check plus SCM_CAR.
3385
3386 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
3387 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
3388 (scm_iprin1): Use them instead of the previoulsy hardcoded
3389 strings.
3390 (scm_init_print): Initialize them.
3391
3392 * backtrace.c (display_frame_expr): Do not remove control
3393 characters from the final string. Print it directly using
3394 scm_display.
3395
818deb11
MV
3396 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
3397 Thanks to Roland Orre!
3398
d748089e
KR
33992004-09-29 Kevin Ryde <user42@zip.com.au>
3400
3401 * regex-posix.c (scm_regexp_exec): Correction to last change, should
3402 be whole original string in match struct, not offsetted substring.
3403
0ff7e3ff
HWN
34042004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
3405
3406 * gc.c (scm_gc_unprotect_object): abort if called during GC.
3407
ad7de4b8
MV
34082004-09-24 Marius Vollmer <mvo@zagadka.de>
3409
2edf319f
MV
3410 * Makefile.am (EXTRA_DIST): Added gettext.h.
3411
d180337b
MV
3412 * smob.c, smob.h (scm_assert_smob_type): New.
3413
05d7cf89 3414 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
ad7de4b8
MV
3415 Include GUILE_CFLAGS.
3416 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3417 now.
3418 (libpath.h): Put GUILE_CFLAGS in the build-info.
3419
c9fedf8a
MV
34202004-09-23 Marius Vollmer <mvo@zagadka.de>
3421
3422 * print.h (scm_print_state): Added highlight_objects.
3423 * print.c (make_print_state, scm_free_print_state): Initialize it
3424 to SCM_EOL.
3425 (scm_iprin1): Wrap output in '{...}' when object is contained in
3426 highlight_objects.
3427
3428 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3429 scm_backtrace_with_highlights): New. Set highlight_objects of
3430 printstate.
3431
3432 * error.c (scm_error_scm): Document new meaning of data/rest
3433 argument for out-of-range and wrong-type-arg errors.
3434 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3435 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3436 exception so that it gets highlighted in the backtrace.
3437 Don't talk about "argument" when not giving a position.
3438
3439 * throw.c (handler_message): The rest argument is the fourth
3440 argument, not everything after the third. Call
3441 scm_display_backtrace_with_highlights, passing the rest argument
3442 when appropriate.
3443
d5ac9b2a
MV
34442004-09-22 Marius Vollmer <mvo@zagadka.de>
3445
3446 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3447 <bruno@clisp.org>:
3448
3449 * i18n.c: Handle --disable-nls (thanks Bruno).
3450
3451 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3452 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3453
3454 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3455 LC categories.
05d7cf89 3456 * posix.c (scm_setlocale): Use it.
d5ac9b2a
MV
3457
3458 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3459 scm_bind_textdomain_codeset): Make wrappers similar to C function
3460 they wrap.
3461
3462 * i18n.h: New file.
3463 * i18n.c: New file.
3464 * gettext.h: New file, taken from GNU gettext.
3465 * init.c: Include libguile/i18n.h.
3466 (scm_init_guile_1): Add call to scm_init_i18n().
3467 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3468 (DOT_X_FILES): Add i18n.x.
3469 (DOT_DOC_FILES): Add i18n.doc.
3470 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3471 (modinclude_HEADERS): Add i18n.h.
3472
d2e53ed6
MV
34732004-09-22 Marius Vollmer <mvo@zagadka.de>
3474
2cdfe016
MV
3475 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3476
d2e53ed6
MV
3477 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3478 discouraged.h. Replaced all uses with scm_is_pair.
3479 (SCM_I_CONSP): New name for SCM_CONSP.
3480
3481 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3482 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3483 scm_cadr, etc): New.
3484 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3485 uses with scm_is_null.
5dd82006 3486
d2e53ed6
MV
3487 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3488 instead of explicit code.
5dd82006 3489
5dfdf243
MV
34902004-09-22 Marius Vollmer <mvo@zagadka.de>
3491
b50c53e5
MV
3492 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3493 Reworded logic a bit so that #f is returned immediately when s1 is
3494 too short to contain s2.
3495
5dfdf243 3496 * regex-posix.c (scm_regexp_exec): Convert string to
05d7cf89 3497 zero-terminated locale string before matching against it.
5dfdf243
MV
3498
3499 * strings.h, strings.c (scm_substring_read_only,
3500 scm_c_substring_read_only, scm_i_substring_read_only): New.
3501 (RO_STRING_TAG, IS_RO_STRING): New.
3502 (scm_i_string_writable_chars): Bail on read-only strings.
3503
3504 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3505 literals, thus making them read-only as specified by R5RS.
3506
22ab5ba3
MV
35072004-09-22 Marius Vollmer <mvo@zagadka.de>
3508
3509 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3510 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3511
2663421c
MV
35122004-09-21 Marius Vollmer <mvo@zagadka.de>
3513
0d83cb90
MV
3514 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3515 numbers.c.
3516 (scm_to_mpz, scm_from_mpz): New.
9a5fa6e9 3517 Thanks to Andreas Vögele!
0d83cb90 3518
2663421c
MV
3519 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3520 just on a line of its own.
3521
3522 * srfi-13.c (scm_string_any, scm_string_every,
3523 scm_string_tabulate, string_upcase_x, string_down_case_x,
3524 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3525 size_t instead of int for indices into strings. Make sure that no
9a5fa6e9 3526 over- or underflow occurs. Thanks to Andreas Vögele!
2663421c
MV
3527 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3528 indices, which can also be negative.
3529
b00b73f9
MV
35302004-09-20 Marius Vollmer <mvo@zagadka.de>
3531
3532 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3533
3534 * threads.c (scm_threads_mark_stacks): Call
3535 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3536 only used once.
3537
adba74f3
HWN
35382004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3539
05d7cf89 3540 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
adba74f3
HWN
3541 Bugfix: when subtracting unsigned values, make sure that result
3542 does not wrap.
3543
f6de32c8
KR
35442004-09-09 Kevin Ryde <user42@zip.com.au>
3545
3546 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3547 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
9a5fa6e9 3548 by Andreas Vögele.
f6de32c8 3549
e548be5f
MV
35502004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3551
eb8d0af1
MV
3552 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3553
e548be5f
MV
3554 * eq.c (real_eqv): Pretend that all NaNs are equal.
3555
3556 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3557
e7acba81
MV
35582004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3559
874fbad1
MV
3560 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3561 use size_t for some locals instead of int.
3562
e7acba81
MV
3563 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3564 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3565 (skip_scsh_block_comment): Use scm_input_error instead of
3566 scm_misc_error in case of EOF.
3567
5de12658
KR
35682004-09-07 Kevin Ryde <user42@zip.com.au>
3569
3570 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
3571 Bug report by Bill Schottstaedt.
3572
3573 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3574 column.
3575 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3576
3577 * posix.c (scm_access): Update docstring per manual.
3578
3579 * posix.c (scm_nice): Correction to error detection. Reported by
3580 Matthias Koeppe.
3581
3582 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3583 throw error before unlocking mutex with SCM_ALLOW_INTS.
3584
e227addf
KR
35852004-09-06 Kevin Ryde <user42@zip.com.au>
3586
3587 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3588 available. This also gets around CLK_TCK being absent when
3589 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3590
edea856c
SJ
35912004-09-03 Stefan Jahn <stefan@lkcc.org>
3592
3593 * threads.c (scm_threads_mark_stacks): Fixed local variable
3594 definitions.
3595
e7acba81 3596 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
3597 local variable definitions.
3598
3599 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3600 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
3601 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3602 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
3603 scm_makfrom0str().
3604
874fbad1 3605 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
3606 part.
3607
3608 * numbers.c (scm_init_numbers): Removed check_sanity() call
3609 inside GUILE_DEBUG. The function has been removed somewhen...
3610
3611 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3612 MinGW32 because it conflicts with its pthread headers.
3613
d9eb2d67
MV
36142004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3615
3616 * strings.c (SCM_STRINGP): Accept all strings.
3617 (SCM_STRING_CHARS): Reject shared substrings here.
3618
3619 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3620 the Copyright years.
3621
c495c342
KR
36222004-08-27 Kevin Ryde <user42@zip.com.au>
3623
3624 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3625 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3626 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3627
57aa5515
MV
36282004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3629
3630 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3631 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3632 scm_i_symbol_is_interned, scm_i_mem2symbol,
3633 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3634
ce25760f
MV
36352004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3636
19ff6ffc
MV
3637 * srfi-13.c: First cut at thread-safeness and proper use of
3638 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3639 been inserted. Made sure that no internal string pointer is used
3640 across a SCM_TICK or a possible GC.
3641
ce25760f
MV
3642 * script.c (scm_compile_shell_switches): Use
3643 scm_from_locale_string instead of scm_makfrom0str.
3644
3645 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3646 always been.
3647
c5080b51
MV
36482004-08-25 Marius Vollmer <mvo@zagadka.de>
3649
3650 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3651 strop.c.
3652
3653 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3654 * strop.h, strop.c: Removed, they are now empty.
3655 * Makefile.am: Updated for new and removed files.
3656
3657 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3658 to scm_string_to_symbol.
3659
3660 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3661 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3662 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3663 charset instead of libc functions.
3664
3665 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3666 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3667 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3668 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3669 instead of explicit code.
3670
3671 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3672 "srfi-13.h" instead of "strop.h".
3673
3674 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3675 scm_init_srfi_14. Do not call scm_init_strop.
3676
4b0d27f2
MV
36772004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3678
3679 * numbers.c (scm_inf_p): Synced docstring back from manual.
3680
3ece39d6
MV
36812004-08-22 Marius Vollmer <mvo@zagadka.de>
3682
3683 * strings.c (get_str_buf_start): New helper function.
3684 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3685 scm_i_string_char, scm_i_string_writable_chars): Use it.
3686 (scm_i_substring_copy): Make START argument optional for C
3687 callers, for upcoming SRFI-13 integration.
3688
36892004-08-21 Marius Vollmer <mvo@zagadka.de>
3690
3691 From Richard Todd, Thanks!
3692
3693 * script.c (scm_compile_shell_switches): added '-L' switch to add
3694 to the %load-path.
3695
5fa0939c
DH
36962004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3697
3698 * eval.c (unmemoize_exprs): When dropping internal body markers
3699 from the output during unmemoization, also drop those that are not
3700 immediately at the beginning of a body.
3701
2146fdeb
MV
37022004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3703
c1f54b3d
MV
3704 * eval.c (scm_lookupcar1): Report "Variable used before given a
3705 value" insetad of an "Unbound" one for variables that are found
3706 but still contain SCM_UNDEFINED.
2146fdeb
MV
3707
3708 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3709 expects a null-terminated string in the locale encoding, but
3710 scm_i_string_writable_chars doesn't give that. Fixed by letting
3711 mkstemp modify a locale version of the tmpl argument and copying
3712 the result back into tmpl.
3713
3714 * strop.c (scm_substring_move_x): Store into str2, not str1.
3715
d4f76919
KR
37162004-08-20 Kevin Ryde <user42@zip.com.au>
3717
3718 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3719 to modify the input string.
3720
b5247a6b
MV
37212004-08-19 Marius Vollmer <mvo@zagadka.de>
3722
3723 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3724 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3725 scm_c_symbol_length.
3726
f26b9395
MV
37272004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3728
3729 New string implementation, with copy-on-write strings and
3730 mutation-sharing substrings, and a new internal string API.
3731 Symbols can now share memory with strings.
3732
3733 * tags.h (scm_tc7_stringbuf): New tag.
3734
3735 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3736 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3737 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3738 uses.
3739 (scm_i_make_string, scm_c_make_string): New, to replace
3740 scm_allocate_string. Updated all uses.
3741 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3742 SCM_STRING_LENGTH): Deprecated.
3743 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3744 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3745 Discouraged. Replaced all uses with scm_from_locale_string or
3746 similar, as appropriate.
3747 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3748 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3749 scm_substring_shared, scm_substring_copy): New.
3750
3751 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3752 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3753 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3754 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3755 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3756 Deprecated.
3757 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3758 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3759 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3760 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3761 Updated all uses.
3762 (scm_gensym): Generate only the number suffix in the buffer, just
3763 string-append the prefix.
3764
3765 * error.c (scm_memory_error): Do not try to throw, just abort.
3766 Throwing will not work anyway.
3767
3768 * gh.h, gh-data.c (gh_set_substr): Made src const.
3769
3770 * ports.c (scm_i_mode_bits_n): New, for counted strings.
3771 (scm_mode_bits): Use it.
3772 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
3773 a vector normally and fill that instead of consing a list with a
3774 blocked GC.
3775
3776 * read.c (scm_i_casei_streq): New, for counted strings.
3777
3778 * threads.c (gc_section_count): Removed, thread-sleeping can not
3779 be nested.
3780 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
3781 admin mutex so that we can be put to sleep by other threads while
3782 blocking on that mutex. Lock all the heap mutex of all threads,
3783 including ourselves.
3784 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
3785 call scm_i_enter_guile.
3786 (scm_thread_mark_stacks): Expect all threads to be suspended.
3787
3788 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
3789 scm_gc_mallocated, for now.
3790 (scm_init_storage): Initialize it.
3791 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
3792
3793 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
3794 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
3795 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
3796 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
3797
cd505b38
MV
3798 * strop.c (scm_string_copy): Use scm_c_substring to get a
3799 copy-on-write string.
3800
8a807b26
KR
38012004-08-18 Kevin Ryde <user42@zip.com.au>
3802
3803 * arbiters.c (FETCH_STORE): New macro.
3804 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
3805 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
3806 scm_try_arbiter and scm_release_arbiter.
3807 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
3808 for speed on i386, otherwise using mutex.
3809
3810 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
3811 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
3812 exact and inexact is #f.)
3813
3814 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
3815 to get thread safety of scm_ttyname.
3816
3817 * ports.c (ttyname): Remove prototype, unused.
3818
d6cd4c36 3819 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 3820 Reported by Michael Tuexen.
d6cd4c36 3821
fa0c0a4b
MV
38222004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3823
3824 * load.c (scm_init_load_path): Do not pass NULL to
3825 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
3826 not set. Thanks to Bill Schottstaedt.
3827
70f7ee41
MV
38282004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3829
3830 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
3831 locale strings instead of accessing their internals.
3832 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
3833 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
3834 SCM_STRING_CHARS and SCM_STRING_LENGTH.
3835
3836 * simpos.c (scm_system): Convert SCM strings to locale strings
3837 instead of accessing their internals.
3838
3839 * script.c (scm_compile_shell_switches): Convert version to locale
3840 string before printing it.
3841
3842 * rdelim.c (scm_read_delimited_x): Avoid
3843 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
3844 of scm_from_long for the returned number of read characters.
3845
3846 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
3847 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3848
3849 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
3850 Use them instead of SCM_SYSCALL when one or two strings need to be
3851 converted into locale strings.
3852 (my_rename): New, gathers platform dependent code for renaming.
3853 (scm_rename): Use it.
3854 (scm_readlink, scm_copy_file): Convert SCM strings to locale
3855 strings instead of accessing their internals.
3856 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
3857 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
3858 SCM_STRING_LENGTH.
3859
3860 * extensions.c (load_extension): Convert lib and init to locale
3861 strings instead of accessing the internals directly.
3862 (scm_c_load_extension): Use scm_from_locale_string instead of
3863 scm_makfrom0str.
3864
3865 * fports.h, fports.c (scm_i_fdes_to_port): New, like
3866 scm_fdes_to_port, but take mode bits directly instead of as a C
3867 string.
3868 (scm_i_fdes_to_port): Implement using above.
3869 (scm_open_file): Use scm_i_fdes_to_port together with
3870 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3871 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
3872 with scm_i_mode_bits to avoid accessing internals of SCM string
3873 from C.
3874
3875 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
3876 SCM string as argument.
3877
3878 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
3879 bits directly instead of C string.
3880 (scm_void_port): Implement using above.
3881 (scm_sys_make_void_port): Use scm_i_void_port together with
3882 scm_i_mode_bits to avoid accessing internals of SCM string.
3883
3884 * strings.h, strings.c (scm_i_get_substring_spec): New.
3885
3886 * socket.c, rw.c, deprecated.h, validate.h
3887 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
3888 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
3889 scm_to_locale_string, etc.
3890 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
3891 above, plus scm_i_get_substring_spec.
3892
3893 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
3894 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
3895 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
3896 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
3897 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
3898 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
3899 with more explicit scm_remember_upto_here_1, etc, or introduced
3900 them in the first place.
3901
3902 * posix.c (WITH_STRING): New helper macro. Use it where one
3903 locale string is needed for a short piece of code.
3904 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
3905 when one locale string is needed.
3906 (scm_mkstemp): Convert tmpl to a locale string.
3907 (scm_putenv): Rewritten to use only C strings.
3908 (scm_setlocale, scm_crpt): Convert argument strings to locale
3909 strings.
3910
39112004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3912
3913 * load.c (scm_primitive_load_path): Do not check for absolute
3914 filenames when scm_sys_search_load_path returns false, which will
3915 return absolute filenames unchanged.
3916
bb26cc2d
MV
39172004-08-11 Marius Vollmer <mvo@zagadka.de>
3918
3919 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
3920 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
3921 of an alist. Thanks to Matthias Koeppe!
3922
02573e4c
MV
39232004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3924
3925 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
3926 Moved from string.h to deprecated.h.
3927
3928 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
3929
f9751e86 3930 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
3931 SCM_I_MAKE_STRING_TAG, changed all uses.
3932 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
3933 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
3934 respectively. For a short time, the old names are still there as
3935 aliases. Not all uses have been changed yet, but the ones in
3936 strings.c have.
3937 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
3938 SCM_T_BITS_MAX.
3939 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
3940 scm_take_locale_string, scm_take_locale_stringn,
3941 scm_to_locale_string, scm_to_locale_stringn,
3942 scm_to_locale_stringbuf): New.
3943 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
3944 deprecated.[hc]. Implemented in terms of the new functions above.
3945 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
3946 scm_makfrom0str): Reimplemented in terms of the new functions from
3947 above. They will be discouraged shortly.
3948 (scm_substring): Do not use scm_mem2string.
3949 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
3950 to replace similar code from posix.c, simpos.c, and dynl.c.
3951 (scm_string_append): Use memcpy instead of explicit loop. Do not
3952 use register keyword. Use plain 'char' instead of 'unsigned
3953 char'.
3954
3955 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
3956 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
3957
3958 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
3959 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3960 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
3961 not as a pointer. Use scm_remember_upto_here_1 to protect it.
3962
3963 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
3964 string. This avoids a conversion round-trip.
3965
3966 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
3967 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3968 SCM_I_STRING_LENGTH, respectively.
3969 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
3970
3971 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
3972 of a string, call scm_display on the string itself.
3973
3974 * dynwind.c, dynwind.h (scm_frame_free): New.
3975
3976 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
3977 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
3978 Replaced uses of SCM_STRING_CHARS with proper uses of
3979 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
3980 Replaced scm_mem2string with scm_from_locale_string.
3981
3982 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
3983 Removed, replaced all uses with scm_i_allocate_string_pointers.
3984
3985 * load.h, load.c (scm_internal_parse_path): Removed.
3986 (scm_parse_path): Use scm_string_split to do the work.
3987 (scm_init_load_path): Use scm_parse_path instead of
3988 scm_internal_parse_path.
3989 (scm_search_path): Rewritten string handling part of the code in
3990 terms of scm_to_locale_stringbuf and so that it is thread safe.
3991
3992 * error.c (scm_error_scm): Throw directly instead of calling
3993 scm_error, this avoids the back and forth conversion of SUBR and
3994 MESSAGE and also plugs a memory leak.
3995 (scm_error): Call scm_error_scm.
3996
3997 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
3998 (display_header): Print FNAME when it is true, not
3999 merely when it is a string.
4000
4001 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
4002 unceremoniously. They were unused by Guile itself, and external
4003 use should stop immediately.
4004
4005
409eb4e5
MV
40062004-08-10 Marius Vollmer <mvo@zagadka.de>
4007
4008 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
4009 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
4010 deprecated versions installed in deprecated.h and deprecated.c.
4011 Changed all uses.
4012
a00eaf19
RB
40132004-08-06 Rob Browning <rlb@defaultvalue.org>
4014
4015 * net_db.c (scm_resolv_error): don't cause an exception while
4016 trying to throw an exception -- call scm_misc_error with correct
4017 arguments. The previous arguments needed a format escape that
4018 wasn't in any of the format strings.
4019
bcb88c93
KR
40202004-08-06 Kevin Ryde <user42@zip.com.au>
4021
8f094b97
KR
4022 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
4023 so as not to depend on signedness of plain char. For byvect range
4024 check, throw out-of-range rather than wrong-type-arg.
4025
bcb88c93
KR
4026 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
4027 signed byte range checks by using scm_to_schar and scm_from_schar,
4028 don't want to depend on signedness of C char.
4029
29e61124
KR
40302004-08-05 Kevin Ryde <user42@zip.com.au>
4031
4032 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
4033 SCM_DEFER_INTS.
4034 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
4035 guaranteed if multiple threads compete to unlock.
4036 Update docstrings per doc/ref/api-scheduling.texi.
4037
99de794f
KR
4038 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
4039 stat on the filename, to be certain a file rename can't mean we get
4040 info on one filesystem object but open another. This fstat usage is
4041 similar to Emacs copy-file.
4042
29e61124
KR
4043 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
4044
4045 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
4046 SIGINT and SIGQUIT, since those values are ints.
4047
759aa8f9
MV
40482004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4049
7241f213
MV
4050 * num2integral.i.c, num2float.i.c: Removed.
4051 * Makefile.am (noinst_HEADERS): Updated.
4052
f9656a9f
MV
4053 * numbers.h. numbers.c (scm_make_ratio): Renamed to
4054 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
4055 (scm_complex_p): New, export as "complex?" to Scheme.
4056 (scm_number_p): Export as "number?" to Scheme.
4057 (scm_is_complex, scm_is_number): New.
4058 (scm_c_make_rectangular, scm_c_make_polar): New.
4059 (scm_make_rectangular, scm_make_polar): Use above.
4060 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
4061 New.
4062 (scm_make_complex): Discouraged by moving to discouraged.h and
4063 discouraged.c. Replaced all uses with scm_c_make_rectangular.
4064
759aa8f9
MV
4065 * discouraged.h, discouraged.c, numbers.c, numbers.h
4066 (scm_is_rational): New.
4067 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
4068 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
4069 Removed prototypes.
4070 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
4071 Discouraged by moving to discouraged.h and discouraged.c.
4072 Replaced all uses with scm_from_double.
4073 (scm_num2float, scm_num2double): Discouraged by moving prototype
4074 to discouraged.h and rewriting in terms of scm_to_double.
4075 Replaced all uses with scm_to_double.
4076 (scm_to_double): Do not implement in terms of scm_num2dbl, use
4077 explicit code.
4078 (scm_from_double): Do not implement in terms of scm_make_real, use
4079 explicit code.
4080
531bf3e6
MV
40812004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4082
759aa8f9
MV
4083 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
4084
531bf3e6
MV
4085 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
4086 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
4087
4088 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
4089 Renamed to SCM_I_* in order to avoid collisions with the versions
4090 defined in deprecated.h.
4091
4092 * discouraged.h, discouraged.c: New files.
4093
4094 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
4095 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
4096 deprecated to being discouraged by moving to discouraged.h.
4097
4098 * numbers.h, numbers.c, discouraged.h, discouraged.c
4099 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
4100 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
4101 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
4102 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
4103 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
4104 scm_num2ulong_long): Discouraged by moving to discouraged.h and
4105 discouraged.c and reimplementing in terms of scm_from_* and
4106 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
4107 functions.
4108
4109 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
4110 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
4111 scm_i_size2big, scm_i_ptrdiff2big): Removed.
4112 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
4113 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
4114 explicit code.
4115
5ec82e96
KR
41162004-08-02 Kevin Ryde <user42@zip.com.au>
4117
4118 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
4119 and current usage and migration.
4120
58f28989
KR
41212004-07-31 Kevin Ryde <user42@zip.com.au>
4122
4123 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
4124 it's not thread safe.
4125 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
4126 advantage of this.
4127 * fports.c (scm_open_file): Use scm_strerror likewise.
4128 * filesys.c (scm_stat, scm_lstat): Ditto.
4129
4130 * filesys.c (scm_copy_file): Avoid fd leak when destination file
4131 cannot be opened.
4132
4133 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
4134 update, for thread safety.
4135 (gensym_counter): Move into scm_gensym which is its only user.
4136 (scm_init_symbols): No need to explicitly initialize gensym_counter.
4137
03696aab
MV
41382004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4139
51fdb325
MV
4140 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
4141 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
4142 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
4143 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
4144 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
4145 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
4146 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
4147 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
4148 defined in terms of scm_to_signed_integer, etc, but in terms of
4149 scm_to_int8, etc.
4150
4151 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
4152
03696aab
MV
4153 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
4154 no longer used.
4155
4156 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
4157 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
4158
4159 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
4160 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
4161 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
4162 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
4163 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
4164 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
4165 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
4166
4167 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
4168 the functions below.
4169
4170 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
4171 conv-uinteger.i.c.
4172
4173 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
4174 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
4175 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
4176 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
4177 scm_from_uint64): Turned from macros into proper functions.
4178 (scm_to_signed_integer, scm_to_unsigned_integer,
4179 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
4180 conv-integer.i.c and conv-uinteger.i.c, as well.
4181
4182 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
4183 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
4184 the limits. Those are always defined.
4185
1f15779e
KR
41862004-07-29 Kevin Ryde <user42@zip.com.au>
4187
4188 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
4189
48360eb3
KR
41902004-07-28 Kevin Ryde <user42@zip.com.au>
4191
4192 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
4193 safety.
4194
c3f3c841
KR
4195 * unif.c (scm_array_set_x): For svect, use scm_num2short for
4196 consistency with other vector types and to get arg and func name into
4197 error message.
4198
c82f8ed6
MV
41992004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4200
4201 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
4202 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
4203 scm_from_bool, respectively.
4204 (SCM_NINUMP): Added.
4205
4206 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
4207 deprecated.h. Replaced all uses with scm_is_eq.
4208
317b4c4a
KR
42092004-07-24 Kevin Ryde <user42@zip.com.au>
4210
4211 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
4212 * posix.c (scm_crypt): Use it to protect static data in crypt().
4213
e11e83f3
MV
42142004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4215
4216 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 4217 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
4218 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
4219 versions to deprecated.h and deprecated.c. Changed all uses to
4220 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
4221 scm_from_*, as appropriate.
4222
4223 * dynwind.c (scm_i_dowinds): Removed unused code that would call
4224 the unexisting scm_cross_dynwind_binding_scope for inums on the
4225 windlist.
4226
a55c2b68
MV
42272004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4228
4229 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 4230 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
4231 byte-wise address to a SCM integer. Changed all uses.
4232 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
4233 scm_to_ipv6 and added type and range checking, for converting from
4234 an IPv& byte-wise address to a SCM integer. Changed all uses.
4235 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
4236 is now done by scm_to_ipv6.
4237
4238 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
4239 not accept inexact integers.
4240
4241 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
4242 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
4243 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
4244 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
4245 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
4246 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
4247 fixnum/bignum distinction visible. Changed all uses to
4248 scm_to_size_t or similar.
4249
42502004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4251
4252 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
4253
48a06bd5
KR
42542004-07-10 Kevin Ryde <user42@zip.com.au>
4255
4256 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
4257 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
4258 such a size causes divide-by-zeros in scm_hasher.
4259
052fbfd9
KR
4260 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
4261 leak.
4262
43240c9c
MV
42632004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4264
4265 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
4266 Rewritten using the same logic as scm_to_signed_integer and
4267 scm_to_unsigned_integer, respectively, which is better(tm). Also,
4268 use CHAR_BIT instead of hardcoding 8.
4269 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
4270 SCM_I_LLONG_MIN etc. instead.
4271
4272 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
4273 SCM_I_MAKINUM and changed all uses.
4274 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
4275
a3de8e7b
MV
4276 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
4277 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
4278 them by assuming twos-complement.
4279
c9eb03bb
MV
42802004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4281
4282 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
4283 configure now produces.
4284 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
4285 definitions, giving the limits of the integer types defined by
4286 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
4287 LLONG_MIN or LONG_LONG_MIN is hard to get at.
4288
4289 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
4290 SHORT_MIN.
4291 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
4292 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
4293 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
4294 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
4295 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
4296 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
4297 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
4298 scm_from_uintmax): New.
4299
7888309b
MV
43002004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4301
4302 * tags.h (scm_is_eq): New.
4303
4304 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
4305 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
4306 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
4307 scm_from_bool, and scm_is_bool, respectively.
4308
4309 * boolean.h (scm_is_bool): Fix bug in prototype.
4310 (scm_from_bool): The argument is "x" not "f", stupid.
4311
4312 * boolean.c (scm_is_bool): Fix typo.
4313
4314 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
4315 scm_is_unsigned_integer, scm_to_signed_integer,
4316 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
4317 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
4318 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
4319 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
4320 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
4321 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
4322 New.
4323
800570a6
MV
43242004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4325
4326 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
4327 scm_to_bool): New.
4328
9fcf3cbb
DH
43292004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4330
4331 * backtrace.c (display_expression, display_frame): Call
4332 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
4333 single memoized expression.
4334
4335 * debug.c (memoized_print): Don't try to unmemoize the memoized
4336 object, since we can't know whether it holds a single expression
4337 or a body.
4338
4339 (scm_mem_to_proc): Removed check for lambda expression, since it
4340 was moot anyway. Whoever uses these functions for debugging
4341 purposes should know what they do: Creating invalid memoized code
4342 will cause crashes, independent of whether this check is present
4343 or not.
4344
4345 (scm_proc_to_mem): Take the closure's code as it is and don't
4346 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
4347 memoized code should not be modified.
4348
4349 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
4350 scm_unmemoize from public use, but made scm_i_unmemoize_expr
4351 available as a guile internal function instead. However,
4352 scm_i_unmemoize_expr will only work on memoized objects that hold
4353 a single memoized expression. It won't work with bodies.
4354
4355 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
4356 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
4357 i. e. a list of expressions.
4358
4359 * eval.c (unmemoize_exprs): Drop internal body markers from the
4360 output during unmemoization.
4361
4362 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
4363 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
4364 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
4365 as guile internal functions instead. scm_i_unmemoize_expr will
4366 only work on a single memoized expression, while
4367 scm_i_unmemocopy_body will only work on bodies.
4368
90df793f
DH
43692004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4370
4371 * eval.c (unmemoize_exprs): Handle semi-memoized code.
4372
4373 (scm_cons_source, scm_primitive_eval): Prefer higher level
4374 predicate SCM_FALSEP over SCM_IMP.
4375
8048c00b
RB
43762004-06-15 Rob Browning <rlb@defaultvalue.org>
4377
4378 * script.c (scm_shell_usage): minor phrasing change.
4379
4380 * gc_os_dep.c: update ifdefery for macosx.
4381 (scm_get_stack_base): separate result initialization from
4382 declaration to slience warnings with macosx and hp-ux using gcc
9a5fa6e9 4383 3.3. Thanks to Andreas Vögele.
8048c00b 4384
d93294d4
HWN
43852004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
4386
4387 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
4388
212e58ed
DH
43892004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4390
4391 * list.[ch] (scm_i_finite_list_copy): New internal function to
4392 copy lists that are known to be finite (though not necessarily
4393 proper).
4394
4395 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
4396 a closure's argument list like an expression of a body.
4397
4398 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
4399 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
4400 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
4401 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
4402 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
4403 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
4404 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
4405 unmemoize_builtin_macro): New static functions and symbols.
4406
4407 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
4408 now has a slightly different meaning: The memoized form that is
4409 receives as its argument is now interpreted as a sequence of
4410 expressions from a body.
4411
4412 (unmemocar, scm_unmemocar): Since the whole functionality of
4413 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4414 has its old content back and is deprecated, while unmemocar has
4415 been removed.
4416
4417 (SCM_BIT7): Removed.
4418
4419 (CEVAL): For unmemoizing a single expression, call
4420 unmemoize_expression instead of scm_unmemocopy, which now expects
4421 a sequence of body expressions. Eliminated unnecessary empty
4422 environment frame when executing let* forms. Eliminated
4423 unmemoization step from evaluator.
4424
9ccea370
MV
44252004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4426
4427 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4428 macroexp and made static. Added new version of scm_macroexp that
4429 emits a deprecation warning and then calls macroexp.
4430 (scm_m_undefine): Issue deprecation warning.
4431
57d23e25
DH
44322004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4433
4434 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4435 Modified to make set! work on symbols that represent syntactic
4436 keywords.
4437
141521ad
HWN
44382004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4439
4440 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4441 compound expression as lvalue errors.
4442
7c2f56a4
MV
44432004-05-24 Marius Vollmer <mvo@zagadka.de>
4444
4445 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4446 WINDER_DATA to a SCM.
4447
366ecaec
DH
44482004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4449
4450 * goops.c (compute_getters_n_setters, create_standard_classes,
4451 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4452 lambda expression rather than creating them with scm_closure.
4453
26ecfa39
DH
44542004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4455
4456 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4457 misplaced syntactic keywords. This will not work unless guile's
4458 defmacro feature is deprecated.
4459
4460 (scm_m_case): Fixed a bug that caused the list of labels to grow
4461 with every case form.
4462
f865229a
KR
44632004-05-19 Kevin Ryde <user42@zip.com.au>
4464
4465 * numbers.c (scm_round_number): For inum and big, just return x. For
4466 real, use scm_round for 2^54-1 etc problems covered there.
4467
4468 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4469 doesn't provide trunc. This was for when `truncate' was done as a
4470 scm_tc7_dsubr, no longer required.
4471
4472 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4473 to stack marking call, two parameters and no cast on t->base.
4474
63947c7a
MV
44752004-05-18 Marius Vollmer <mvo@zagadka.de>
4476
4477 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4478 processed hashtables back into the weak_hashtables list. Thanks
4479 to Bill Schottstaedt!
4480
e7313a9d
DH
44812004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4482
4483 * eval.c (unmemoize_quote): New static function.
4484
4485 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4486 representation of 'quote' and '@slot-ref' to an improper list.
4487 This reduces execution time, the number of cells used to hold the
4488 memoized code, and thus also reduces garbage collection time.
4489
4490 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4491
4492 (SCM_CEVAL): Changed macro handling to also work with macros that
4493 return improper lists. Added an assertion, that the code returned
4494 by a macro transformer will not lead to cycles in the memoized
4495 code.
4496
e5156567
DH
44972004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4498
4499 No functional change, just rearrangements of functions within the
4500 file.
4501
4502 * eval.c (scm_ilookup, scm_unbound_variable_key,
4503 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4504 the definitions used for execution, since that's where they will
4505 belong to later.
4506
651f07f8
DH
45072004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4508
4509 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4510 throughout guile, has not been part of an official release yet,
4511 and the concept of sloppy predicates has never been a good idea.
4512
4513 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4514 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4515 Simplified.
4516
770e048f
DH
45172004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4518
4519 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4520 to make explicit what happens.
4521
2ff08405
DH
45222004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4523
4524 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4525 explicit what happens.
4526
4527 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4528 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4529
89afb9cd
MV
45302004-05-11 Marius Vollmer <mvo@zagadka.de>
4531
4532 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4533 is indeed a procedure when it isn't a number.
4534
3d5ebfa9
MV
45352004-05-10 Marius Vollmer <mvo@zagadka.de>
4536
4537 Convert floating point numbers into strings with an arbitrary
4538 radix. Thanks to Richard Todd!
4539
4540 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4541 fit.
4542 (fx): Removed.
4543 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4544 number_chars): New, to support variable radices.
4545 (idbl2str): Use above instead of the old base-10 only tables.
4546 (iflo2str): Pass on new RADIX argument to idbl2str.
4547 (scm_number_to_string): Pass radix to iflo2str.
4548 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4549 iflo2str.
4550 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4551 possible radices.
4552
3ae69bb4
KR
45532004-05-10 Kevin Ryde <user42@zip.com.au>
4554
4555 * numbers.c (scm_logbit_p): Correction to test above the end of an
4556 inum. Reported by Jan Konecny.
4557
27968825
MV
45582004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4559
4560 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4561 scm_t_bits. Updated all users.
4562 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4563 duplicating the code.
4564 (SCM_CELL_OBJECT_LOC): New.
4565 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4566 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4567
4568 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4569 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4570 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4571 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4572 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4573 SCM_SMOB_OBJECT_3_LOC): New.
4574 * smob.c (scm_i_set_smob_flags): New function.
4575
4576 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4577 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4578 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4579 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4580 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4581 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4582
4583 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4584 taking the address of SCM_CELL_WORD_1, the latter being no longer
4585 an lvalue.
4586
4587 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4588 of casting SCM_CELL_WORD_LOC.
4589
3cf17ef0
KR
45902004-05-02 Kevin Ryde <user42@zip.com.au>
4591
37026925 4592 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
9a5fa6e9 4593 --disable-deprecated. Reported by Andreas Vögele.
37026925 4594
3cf17ef0 4595 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
9a5fa6e9 4596 particular on HP-UX). Reported by Andreas Vögele.
3cf17ef0 4597
c5854598
KR
4598 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4599 code has support for. Fixes building with AIX cc, which is ansi but
4600 doesn't define __STDC__. Reported by Keith Crane.
4601 (var_start): Remove macro, this variation no longer required.
4602 (scm_list_n): Use va_start directly.
4603
f26c1a32
KR
46042004-05-01 Kevin Ryde <user42@zip.com.au>
4605
4606 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
9a5fa6e9 4607 is now gone. Reported by Andreas Vögele.
f26c1a32 4608
dfa6017e
KR
46092004-04-28 Kevin Ryde <user42@zip.com.au>
4610
4611 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4612 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4613 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
9a5fa6e9 4614 subscript. Reported by Andreas Vögele.
dfa6017e
KR
4615 Also cast through unsigned char to avoid passing negatives to those
4616 macros if input contains 8-bit values.
4617
4618 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4619 corrections to range check for signed numbers. Remove
4620 scm_remember_upto_here_1(num) from these checks, since num is used
4621 subsequently anyway.
4622
4623 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4624 avoid warning from gcc 3.4. Reported by Hyperdivision.
4625
4626 * numbers.c (scm_bit_extract): Use min instead of MIN.
4627 (MIN): Remove, this conflicts with similar macro defined by limits.h
9a5fa6e9 4628 on HP-UX. Reported by Andreas Vögele.
dfa6017e
KR
4629
4630 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
9a5fa6e9 4631 particular on HP-UX). Reported by Andreas Vögele.
dfa6017e 4632
a0d06a00 4633 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
9a5fa6e9 4634 Reported by Andreas Vögele.
a0d06a00 4635
dfa6017e
KR
4636 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4637 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
9a5fa6e9 4638 by Andreas Vögele.
dfa6017e 4639
36245b66
DH
46402004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4641
4642 * eval.c (s_macro_keyword): New static identifier.
4643
4644 (scm_m_define): Change order to first create binding and
4645 evaluating the expression afterwards.
4646
4647 (scm_m_set_x): Memoize complete set! expression. Only leave
4648 symbols if no binding exists at memoization time. Throw error if
4649 assigning to a syntactic keyword.
4650
4651 (lazy_memoize_variable): New function.
4652
4653 (CEVAL): When execution set!, perform lazy memoization if
4654 unmemoized symbol is detected.
4655
4656 * modules.c (module_variable): Return variables with unbound
4657 value.
4658
4659 * tags.h: Fix comment.
4660
4d81111e
KR
46612004-04-25 Kevin Ryde <user42@zip.com.au>
4662
da8bcb2f
KR
4663 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4664 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4665 in 8-bit locales, and ensures consistency with char-upper-case? and
4666 char-lower-case? which already use ctype.h.
4667 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4668 Remove.
4669 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4670
4d81111e
KR
4671 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4672 call. Reported by Hyperdivision.
4673
4674 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4675 Reported by Hyperdivision.
4676
4677 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4678 Hyperdivision.
4679
7e6e6b37
DH
46802004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4681
4682 Hide the implementation of ilocs and isyms in eval.c.
4683
4684 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4685 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4686 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4687 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4688 eval.h to eval.c.
4689
4690 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4691 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4692 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4693 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4694 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4695 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4696 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4697 renamed to ISYMNUM.
4698
4699 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4700 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4701 Extracted printing of ilocs and isyms to guile internal functions
4702 scm_i_print_iloc, scm_i_print_isym of eval.c.
4703
caab294f
KR
47042004-04-22 Kevin Ryde <user42@zip.com.au>
4705
7aaf4758
KR
4706 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4707
caab294f
KR
4708 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4709 rounding in x+0.5 when x is a big value already an integer. In
4710 certain hardware rounding cases x+0.5 can give an adjacent integer,
4711 leading to that as the result, when we really just wanted x itself.
4712
b1cb24ff
DH
47132004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4714
4715 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4716
4717 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4718 added const qualifiers, cast intentionally unused expressions to
4719 void for emphasis, improved comment.
4720
5065b40d
DH
47212004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4722
4723 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4724 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4725 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4726 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4727 Defined the tc8-tag for flags to be 0x04, which will mean that
4728 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4729 to the reduced number of bits and the simpler bit pattern for
4730 SCM_BOOL_F, certain machines may be able to use more efficient
4731 processor instructions to deal with SCM_BOOL_F.
4732
4733 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4734 never been defined in a released version, thus no need to
4735 deprecate them.
4736
4737 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4738 instead of tc9 tags.
4739
4740 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4741 of tc9 tags.
4742
4743 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4744 could have used this definition.
4745
4746 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4747 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4748 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4749 as isyms, as special isyms don't exist any more.
4750
9fa6c119
KR
47512004-04-18 Kevin Ryde <user42@zip.com.au>
4752
e08d2eee
KR
4753 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4754 safety.
4755
9fa6c119
KR
4756 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4757 explicit swapping code.
4758
c9cdd396
KR
47592004-04-15 Kevin Ryde <user42@zip.com.au>
4760
4761 * cpp_sig_symbols.in: Add SIGSYS.
4762
4763 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4764 recursion.
4765
4766 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4767 frac/big and frac/frac, use scm_less_p for exact comparison.
4768
83ac9c59
KR
4769 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4770 with big/inum.
4771
84a4be9a
KR
4772 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
4773
84fad130
HWN
47742004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
4775
6b69393d
HWN
4776 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
4777
84fad130
HWN
4778 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
4779 scm_c_{up,down}case.
4780 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
4781 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
4782
c3110a30
KR
47832004-04-06 Kevin Ryde <user42@zip.com.au>
4784
0b288f36
KR
4785 * numbers.c (scm_ash): Remove stray "}" in docstring.
4786
ea2508c8
KR
4787 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
4788 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
4789 calling mpz_cmp_ui in most cases.
4790
c3110a30
KR
4791 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
4792 for big == abs(most-negative-fixnum) special case.
4793 (abs_most_negative_fixnum): Remove, no longer used.
4794
4795 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
4796 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
4797 calling (sigaction NSIG).
4798
4799 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
4800 and fork error cases to do this.
4801
dec40cd2
DH
48022004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4803
4804 * eval.c (CEVAL): Don't distinguish between short and long
4805 instructions when dispatching - just always dispatch on the
4806 instruction code, which is common for short and long instructions.
4807 Further, removed unnecessary goto statements and added comment.
4808
0e7bb795
DH
48092004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4810
4811 * eval.c (scm_unmemocopy): Don't distinguish between short and
4812 long instructions when dispatching - just always dispatch on the
4813 instruction code, which is common for short and long instructions.
4814 Further, removed unnecessary goto statements, fixed indentation
4815 and replaced SCM_IMP predicates by SCM_NULLP.
4816
f9986767
DH
48172004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4818
4819 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
4820 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
4821 'checkmacro'.
4822
fbc42231
KR
48232004-03-31 Kevin Ryde <user42@zip.com.au>
4824
4825 * simpos.c: Include <signal.h> for SIG_IGN and friends.
4826
434f2f7a
DH
48272004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4828
4829 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
4830 SCM_DEBUGGINGP:
4831
4832 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
4833 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
4834 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
4835 single interface that also matches the naming conventions.
4836 Probably scm_debug_mode_p should be part of the private interface
4837 anyway.
4838
4839 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
4840 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
4841 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
4842 to scm_debug_mode_p.
4843
4844
4845 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
4846
4847 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
4848 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
4849 from debug.h to eval.h.
4850
4851 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
4852 more, just leave it with setting scm_debug_mode_p, which is
4853 equivalent for practical purposes.
4854
4855 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
4856 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
4857
4858 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
4859
4860 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
4861 static and renamed it to ceval throughout. Provide a new exported
4862 but deprecated function scm_ceval as a wrapper for backwards
4863 compatibility. The same is done for the deval/scm_deval pair of
4864 functions.
4865
4866 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
4867 throughout. Defined CEVAL to ceval or deval, based on compilation
4868 phase.
4869
4870 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
4871 to ceval and deval instead of calling *scm_ceval_ptr.
4872
4873 * eval.c (dispatching_eval): New deprecated static function.
4874
4875 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
4876 to emulate its old behaviour as closely as possible.
4877
4878
4879 Change the evaluator such that only expressions for which pair? is
4880 true are passed to CEVAL, and such that all other expressions are
4881 evaluated outside of CEVAL:
4882
4883 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
4884 expression that is assumed to be memoized already. All but
4885 expressions of the form '(<form> <form> ...)' are evaluated inline
4886 without calling an evaluator.
4887
4888 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
4889 expressions of the form '(<form> <form> ...)' inline without
4890 calling an evaluator.
4891
4892 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
4893 the special case of unmemoized symbols passed on the top level.
4894
4895 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
4896 is known that the expression passed to CEVAL is of the form
4897 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
4898 now it is known that the input expression of CEVAL is a pair.
4899
49002004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5fb64383
DH
4901
4902 * eval.c (is_self_quoting_p): New static function.
4903
4904 (scm_m_quote): Use is_self_quoting_p.
4905
4906 (copy_tree): Corrected typo in comment.
4907
702551e6
HWN
49082004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
4909
bfefbf18
HWN
4910 * eval.c (s_scm_copy_tree): idem.
4911
4912 * list.c (s_scm_filter): remove "pointer" from doc string.
4913
702551e6
HWN
4914 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
4915
4916 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
4917
4918 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
4919 (display_frame): idem.
4920 (display_backtrace_file_and_line): idem.
4921
4922 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
4923 arguments.
4924
3cd23214
KR
49252004-03-26 Kevin Ryde <user42@zip.com.au>
4926
88a7ae1f
KR
4927 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
4928
3cd23214
KR
4929 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
4930 big==0 since that never occurs.
4931
4932 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
4933 scm_modular_expt, matching scheme level name `modulo-expt'.
4934
4935 * numbers.c (scm_modular_expt): Return a negative remainder for a
4936 negative divisor, the same as `modulo' does.
4937
49382004-03-26 Eric Hanchrow <offby1@blarg.net>
4939
4940 * numbers.c, numbers.h (scm_modular_expt): New function.
4941
2926035a
KR
49422004-03-25 Kevin Ryde <user42@zip.com.au>
4943
4944 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
4945 return inexact as required by r5rs.
4946
62360b89
DH
49472004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4948
4949 * eval.c: Separated some definitions relevant for execution from
4950 the memoization part of the file.
4951
4952 (copy_tree): New static function
4953
4954 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
4955 structures are detected now and will lead to an exception instead
4956 of forcing guile to run in an endless loop, using up all the
4957 system's memory. Second, arrays in the cdr of an improper list
4958 are now copied. See the new test cases in eval.test.
4959
49602004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
b28f5b3c
DH
4961
4962 * posix.c (scm_gethostname): Make sure len is initialised before
4963 it is used. Restructured to (hopefully) represent possible
4964 configurations more clearly in the code. Added unwind handler.
4965
3bd3bae8
KR
49662004-03-23 Kevin Ryde <user42@zip.com.au>
4967
4968 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
4969 MAXHOSTNAMELEN when available.
4970
254bf78d
MV
49712004-03-21 Marius Vollmer <mvo@zagadka.de>
4972
4973 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
4974 terminator. Rewritten the logic as a state machine, I must have
4975 been doing too much VHDL lately...
4976
4977 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
4978 themselves. Thanks to Han-Wen Nienhuys!
4979
4980 * list.c: Changed docstrings so that they no longer talk about
4981 returning 'pointers' to something.
4982
009c34a2
HWN
49832004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4984
4985 * gc.c: remove set_debug_cell_accesses! when
4986 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
4987 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
4988 debugging conditionally.
4989
54733c95
KR
49902004-03-21 Kevin Ryde <user42@zip.com.au>
4991
4992 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
4993
bbaf8747
KR
49942004-03-20 Kevin Ryde <user42@zip.com.au>
4995
4996 * posix.c (scm_gethostname): Preserve errno across free() call.
4997
726f82e7
HWN
49982004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
4999
5000 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
5001 free cells.
5002
e1350d6a
KR
50032004-03-14 Kevin Ryde <user42@zip.com.au>
5004
5005 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
5006 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
5007
62055253
KR
50082004-03-07 Kevin Ryde <user42@zip.com.au>
5009
5010 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
5011 than "GMT" always.
5012 (filltime): Make zname parameter "const".
5013
92e64b87
MD
50142004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
5015
5016 * threads.c, threads.h (scm_c_scm2thread): New function.
5017
004ad931
KR
50182004-02-29 Kevin Ryde <user42@zip.com.au>
5019
5020 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
5021 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
5022 particular don't assume "defined (__alpha__) && ! defined (linux)"
5023 means OSF. Remove "SCO" code, which was not really SCO specific and
5024 which John W. Eaton advises should be long past being needed.
5025
5026 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
5027 error throw.
5028
72ea45ac
KR
50292004-02-24 Kevin Ryde <user42@zip.com.au>
5030
5031 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
5032
2af0602e
KR
50332004-02-22 Kevin Ryde <user42@zip.com.au>
5034
5035 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
5036 complex, same as for two args. (Handle only inum, big, real, frac).
5037
b114eafe
KR
50382004-02-21 Kevin Ryde <user42@zip.com.au>
5039
5040 * posix.c (scm_crypt): Use new HAVE_CRYPT.
5041 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 5042 Reported by Andreas Voegele.
b114eafe 5043
1e55d288
NJ
50442004-02-20 Neil Jerram <neil@ossau.uklinux.net>
5045
5046 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
5047 validation.
5048
5049 * read.c (scm_lreadparen): Removed.
5050 (scm_lreadparen1): Renamed scm_i_lreadparen.
5051
eb741d98
HWN
50522004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5053
5054 * list.c (scm_list_n): validate non-immediate arguments;
5055 this will catch forgotten a SCM_UNDEFINED.
5056
4e28ba5e
MV
50572004-02-18 Marius Vollmer <mvo@zagadka.de>
5058
5059 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
5060 Thanks to Bill Schottstaedt!
5061
5062 * socket.h (scm_gethost): Removed prototype it is already in
5063 "net_db.h". Thanks to Bill Schottstaedt!
5064
ef861ead
KR
50652004-02-18 Kevin Ryde <user42@zip.com.au>
5066
5067 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
5068 order parameter to mpz_import, in fact with just one word there's no
5069 order to worry about at all.
5070
5071 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
5072 and frac==complex, make an exact comparison rather than converting
5073 with fraction2double.
5074
5075 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
5076 shared library, since environ is not directly available there.
5077
5078 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
5079 standard.
5080
5081 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
5082 errno EINVAL in case localtime and gmtime don't set it.
5083 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
5084 SCM_SYSERROR, since mktime and strptime generally don't set errno.
5085
ae43d08e 50862004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 5087
c9ea6462
KR
5088 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
5089 which were permitted in the past for these.
5090
292dfa7f
KR
5091 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
5092 previous change to numbers.c.
5093
ae43d08e
KR
5094 * script.c (scm_shell_usage): Print bug-guile email address, as per
5095 GNU standard. Reported by Han-Wen Nienhuys.
5096
711a9fd7
MD
50972004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5098
5099 * unif.c (scm_make_uve): Removed local variable and simplified
5100 code in order to avoid compiler used uninitialized warnings.
5101
5102 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
5103 scm_hash_map.
5104 (scm_hash_fold): Use scm_call_3 directly in the call to
5105 scm_internal_hash_fold instead of going via fold_proc (which is
5106 now removed).
5107 (scm_hash_for_each): Use a trampoline +
5108 scm_internal_hash_for_each_handle.
5109 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
5110 functions.
5111
3da7f6b2
KR
51122004-02-12 Kevin Ryde <user42@zip.com.au>
5113
344a212f
KR
5114 * ports.c (scm_port_line): In docstring, note first line is 0.
5115 (scm_set_port_line_x): In docstring, note first line is 0.
5116 (scm_port_column): In docstring, there's no default to current input
5117 port, and remove shared port-line @defun.
5118 (scm_set_port_column_x): In docstring, there's no default to current
5119 input port, note first column is 0, remove shared set-port-line!
5120 @defun.
5121
3da7f6b2
KR
5122 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
5123 convert args the same way that array-set! does.
5124
5125 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
5126 for dvect.
5127 (scm_array_p): Add missing "break"s in switch, fix llvect test look
5128 for "l" not "s", fix dvect to be false for singp(prot) since such a
5129 value is for fvect.
5130 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
5131 (exactly_one_third): New variable.
5132 (scm_init_unif): Initialize it.
3da7f6b2 5133
cd21f5eb
NJ
51342004-02-10 Neil Jerram <neil@ossau.uklinux.net>
5135
5136 * read.c (scm_read_opts): Change `escaped-parens' to
5137 `elisp-strings'.
5138
16353acc
NJ
51392004-02-08 Neil Jerram <neil@ossau.uklinux.net>
5140
5141 * read.c (scm_read_opts): New opts `elisp-vectors' and
5142 `escaped-parens'.
5143 (s_vector): New.
5144 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
5145 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
5146 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
5147 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
5148 `escaped-parens' option set.
5149 (scm_read_token): If elisp vector syntax active, disallow [ and ]
5150 in tokens.
5151 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
5152 (scm_lreadparen1): New.
5153
5154 * read.h: Remove conditionally compiled last arg to
5155 scm_lreadparen.
5156 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
5157
f62b9dff
HWN
51582004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
5159
5160 * eval.c (m_expand_body): remove stray variable new_body.
5161
ef5b6b61
MV
51622004-01-22 Marius Vollmer <mvo@zagadka.de>
5163
5164 * eval.c (m_expand_body): Rewrite the expression in place (by
5165 overwriting FORMS) also when a letrec is constructed, not only
5166 when no definitions are found. Do not return rewritten expression
5167 to emphasize the in-place rewriting. Changed all users.
5168
7eec4c37
HWN
51692004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
5170
5171 * gc.c: add protected_object_count, a number that is dumped from
5172 gc_stats()
5173
25ffbdac
MV
51742004-01-11 Marius Vollmer <mvo@zagadka.de>
5175
5176 * dynwind.h, dynwind.c (scm_frame_unwind,
5177 scm_frame_unwind_handler): Renamed and changed all uses.
5178 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
5179
08568c95
KR
51802004-01-11 Kevin Ryde <user42@zip.com.au>
5181
5182 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
5183 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
5184 changes made to scheme-compound.texi.
5185
5565749c
MV
51862004-01-10 Marius Vollmer <mvo@zagadka.de>
5187
25ffbdac
MV
5188 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
5189 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
5190
5191 * guile-snarf.in: Use mkdir to create a unique temporary directory
5192 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 5193
fc6bb283
MV
51942004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5195
7ebccde8
MV
5196 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
5197 argument since it is always zero now. Changed all callers.
5198 Removed code for handling fluids.
96e3b2f8
MV
5199
5200 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
5201 the wind chain explicitely. Use scm_c_with_fluid for the common
5202 case of only one fluid.
5203 (scm_with_fluid): New.
5204 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
5205
fc6bb283 5206 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
5207 (scm_with_fluid): New.
5208 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
5209
5210 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
5211 do the unwinding directly. It is simple enough.
5212
5213 * dynwind.h, dynwind.c: Did the following renamings:
5214 scm_begin_frame -> scm_frame_begin,
5215 scm_end_frame -> scm_frame_end,
5216 scm_on_unwind -> scm_frame_unwind,
5217 scm_on_rewind -> scm_frame_rewind,
5218 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
5219 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
5220 Changed all uses.
5221
5222 * aync.h, async.c: Did the follwing renamings:
5223 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
5224 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
5225 Changed all uses.
5226
5227 * ports.h, ports.c: Did the follwing renamings:
5228 scm_with_current_input_port -> scm_frame_current_input_port,
5229 scm_with_current_output_port -> scm_frame_current_output_port,
5230 scm_with_current_error_port -> scm_frame_current_error_port.
5231 Changed all uses.
5232
298ab996
KR
52332004-01-07 Kevin Ryde <user42@zip.com.au>
5234
5235 * numbers.c (s_bignum): Remove, not used since gmp bignums.
5236 Reported by Richard Todd.
5237
ba40113e
KR
5238 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
5239 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
5240
298ab996
KR
5241 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
5242 traversing the args list, fixes segv if an improper list is given.
5243 Reported by Rouben Rostamian.
5244
aacff585
MV
52452004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5246
5247 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
5248 swap_data on stack, use a 'malloc obj'.
5249
5250 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
5251 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
5252 scm_i_... since they are internal. Changed all uses.
5253
5254 * dynwind.c (frame_print): Removed, use the default printer.
5255 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
5256 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
5257 to protect SCM values.
5258
5259 * dynwind.h (SCM_F_WIND_EXPLICITELY,
5260 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
5261 Changed all uses.
5262 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
5263
49c00ecc
MV
52642004-01-05 Marius Vollmer <mvo@zagadka.de>
5265
5266 * ports.h, ports.c (scm_with_current_input_port,
5267 scm_with_current_output_port, scm_with_current_error_port): New.
5268
5269 * async.h, async.c (scm_with_blocked_asyncs,
5270 scm_with_unblocked_asyncs): New.
5271
dab514a8
MV
52722004-01-03 Marius Vollmer <mvo@zagadka.de>
5273
5274 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
5275 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
5276 New.
5277 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
5278 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
5279 function when the outermost wind point has been reached. The
5280 latter is used to copy a continuation stack at the right time.
5281 scm_dowinds remains available.
5282 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
5283 tc16_guard, guards_print): Removed.
5284 (scm_internal_dynamic_wind): Reimplemented using frames.
5285
5286 * continuations.c (copy_stack): New, do only the stack copying
5287 part of copy_stack_and_call.
5288 (copy_stack_and_call): Copy the stack after unwinding and before
5289 rewinding.
5290 (scm_dynthrow): Do not call scm_dowinds, this is now done by
5291 copy_stack_and_call.
5292
441a25d9
KR
52932004-01-04 Kevin Ryde <user42@zip.com.au>
5294
5295 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 5296 can give bad results due to rounding.
441a25d9 5297
e0499207
KR
5298 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
5299 setzone/restorezone protection for DOS.
5300
89fcf1b4
MV
53012003-12-26 Marius Vollmer <mvo@zagadka.de>
5302
5303 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
5304 and scm_t_uintmax to be defined in scmconfig.h
5305
caff34d4
KR
53062003-12-03 Kevin Ryde <user42@zip.com.au>
5307
5308 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
5309
5310 * numbers.c (scm_make_ratio): Check for numerator equal to
5311 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
5312 giving integer -1.
5313
5314 * numbers.c (scm_real_part): Return fraction unchanged rather than
5315 converting to flonum.
5316
2d0b85ac
DH
53172003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5318
5319 * modules.c (module_variable): Fixed (and thus simplified) the
5320 definition of SCM_BOUND_THING_P to reflect the fact that since
5321 after the 1.4 series of guile, obarrays only hold variable
5322 objects.
5323
2297981d
MV
53242003-11-30 Marius Vollmer <mvo@zagadka.de>
5325
5326 * numbers.c (scm_logand): It's "#b...", not "#\b...".
5327
5328 From Paul Jarc:
5329
5330 * read.c (scm_lreadr): Signal an error for invalid escape
5331 sequences in strings. Code cleanups too.
5332
5333 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
5334 writing control characters in strings.
5335
53362003-11-21 Marius Vollmer <mvo@zagadka.de>
5337
5338 * ports.c (scm_drain_input): Bug fix: only access the port after
5339 checking that it indeed is one.
5340
5c264007
DH
53412003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5342
5343 * eval.c (s_bad_define): New static identifier.
5344
5345 (m_body): Fixed comment.
5346
5347 (scm_m_define): Don't generate memoized code for definitions that
5348 are not on the top level. As a consequence, no memoized code at
5349 all is generated for definitions any more: Top level definitions
5350 are executed immediately during memoization and internal
5351 definitions are handled separately in m_expand_body.
5352
5353 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
5354 definitions. Consequently, there is no unmemoizing code any more
5355 that might modify the environment. Thus, the old scm_unmemocopy
5356 is removed and the old unmemocopy is renamed to scm_unmemocopy.
5357
5358 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
5359 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
5360 over SCM_NIMP in places, where the argument is known to be part of
5361 a proper list.
5362
018d4730
KR
53632003-11-21 Kevin Ryde <user42@zip.com.au>
5364
5365 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
5366 for bignums.
5367
5368 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
5369 to share some shifting.
5370
5371 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
5372 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
5373 since gc does this.
5374
4bca30d8
MV
53752003-11-19 Marius Vollmer <mvo@zagadka.de>
5376
fb16d26e
MV
5377 * numbers.c (scm_make_ratio): Rewritten to have a simpler
5378 structure. Previously, not all cases with a negative denominator
5379 were covered.
5380
4bca30d8
MV
5381 * numbers.c (mem2decimal_from_point): use scm_divide instead of
5382 scm_divide2real when forming the fractional part. This allows
5383 "#e1.2" to yield 6/5.
5384
5385 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
5386 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
5387 fractions were equal to each other regardless of value. Ooops.
5388
5389 * numbers.c (scm_rationalize): Return an inexact result when given
5390 inexact arguments.
5391
5392 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
5393 non-numbers.
5394
bdf26b60
MV
53952003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5396
5397 Support for exact fractions from Bill Schottstaedt! Thanks!
5398
5399 * print.c (scm_iprin1): Handle fractions.
5400
5401 * objects.h (scm_class_fraction): New.
5402 * objects.c (scm_class_fraction): New.
5403 (scm_class_of): Handle fractions.
5404
5405 * hash.c (scm_hasher): Handle fractions.
5406
5407 * numbers.c: New code for handling fraction all over the place.
5408 (scm_odd_p, scm_even_p): Handle inexact integers.
5409 (scm_rational_p): New function, same as scm_real_p.
5410 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
5411 New exact functions that replace the inexact 'dsubr'
5412 implementations.
5413 (scm_numerator, scm_denominator): New.
5414
5415 * numbers.h (SCM_NUMP): Recognize fractions.
5416 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5417 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5418 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5419 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5420 SCM_FRACTION_REDUCED): New.
5421 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5422 New prototypes.
5423 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5424 scm_rational_p): New prototypes.
5425 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5426 scm_i_print_fraction): New prototypes.
5427
5428 * goops.c (create_standard_classes): Create "<fraction>" class.
5429
5430 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5431
5432 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5433 case in the switch, but do nothing for now.
5434
5435 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5436 to doubles when calling 'dsubr' functions.
5437
5438 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5439
28fda544
RB
54402003-11-18 Rob Browning <rlb@defaultvalue.org>
5441
5442 * gen-scmconfig.c (main): remove public definition of
5443 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5444 direct typedef of long_long and ulong_long inside deprecated block
5445 when appropriate.
5446
5447 * deprecated.h: move long_long and ulong_long definitions to
5448 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5449 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5450
b58e7420
MV
54512003-11-17 Marius Vollmer <mvo@zagadka.de>
5452
9a1d7d7c
MV
5453 * hash.c (scm_string_hash): New hashing algorithm that takes the
5454 complete string into account.
5455
b58e7420
MV
5456 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5457 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
5458 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5459 SCM_ASSYNT.
b58e7420
MV
5460
5461 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5462 the "-e" option instead of scm_str2symbol. This allows things
5463 like (@ ...) to be specified for the entry point.
5464
461bffb1
DH
54652003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5466
5467 * eval.c (scm_m_letstar): Create memoized code in place to
5468 minimize consing.
5469
6f81708a
DH
54702003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5471
5472 * eval.c (s_splicing): Commented and reformulated.
5473
5474 (lookup_global_symbol, lookup_symbol): New static functions.
5475
5476 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5477
5478 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5479 creating a temporary pair for scm_lookupcar.
5480
5481 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5482 created deprecated wrapper function scm_unmemocar.
5483
5484 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5485 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5486 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5487 undefineds, sym_three_question_marks): Moved around without
5488 modifications.
5489
5490 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5491
910b5125
DH
54922003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5493
5494 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5495 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5496 No further modifications.
5497
c86c440b
DH
54982003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5499
5500 * eval.c (s_mixed_body_forms): New static identifier.
5501
5502 (canonicalize_define, scm_m_define): The check for a bad
5503 expression is performed in canonicalize_define now.
5504
5505 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5506 static helper functions for m_expand_body.
5507
5508 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5509 expand user defined macros. Fixed handling of the definition/
5510 expression boundary. Fixed handling of definitions grouped with
5511 'begin. Use canonicalize_define to expand definitions.
5512
3890131a
MV
55132003-11-13 Marius Vollmer <mvo@zagadka.de>
5514
b58e7420
MV
5515 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5516 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5517
5df36eac
MV
5518 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5519 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5520 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5521 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5522 New macros from Paul Jarc. Thanks!
5523
3890131a
MV
5524 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5525 return NULL when the machine type is unknown. Previously,
5526 gc_os_dep.c would refuse to compile.
5527
430b8401
DH
55282003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5529
5530 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5531 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5532 scm_m_body to m_body.
5533
328dc9a3
DH
55342003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5535
5536 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5537 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5538 scm_m_expand_body to m_expand_body and made it static. Added
5539 deprecated wrapper scm_m_expand_body.
5540
5541 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5542 of scm_m_expand_body.
5543
c2337a61
KR
55442003-11-09 Kevin Ryde <user42@zip.com.au>
5545
5546 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5547 argument. Reported by Mike Gran.
5548
ced8edb0
DH
55492003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5550
5551 * eval.c (s_missing_body_expression): New static identifier.
5552
5553 (s_body): Removed.
5554
5555 (scm_m_expand_body): Fixed core dump when passing a body with
5556 defines, but without expressions (see additions to syntax.test).
5557 Use ASSERT_SYNTAX to signal syntax errors.
5558
0f572ba7
DH
55592003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5560
5561 * eval.c (canonicalize_define): New static helper function.
5562
5563 (memoize_define, canonicalize_define): Extract handling of
5564 function currying to canonicalize_define.
5565
2510c810
DH
55662003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5567
5568 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5569 Make sure that error checking in debug mode is not worse than in
5570 standard mode.
5571
34adf7ea
DH
55722003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5573
5574 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5575 handled in scm_m_body any more, but rather in scm_m_lambda.
5576
5577 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5578 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5579 calling functions of scm_m_body.
5580
5581 (scm_m_lambda): Avoid unnecessary consing when creating the
5582 memoized code.
5583
89bff2fc
DH
55842003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5585
5586 * eval.c (s_expression): Added comment.
5587
5588 (s_empty_combination, error_unbound_variable): New static
5589 identifiers.
5590
5591 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5592 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5593 signal syntax errors.
5594
5595 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5596 scheme objects.
5597
60a49842
DH
55982003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5599
5600 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5601 Grouped together with unmemocopy, without modifications.
5602
5603 (build_binding_list, unmemocopy): Renamed names of list arguments
5604 and variables to reflect the actual order of the list elements.
5605
70c1c108
DH
56062003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5607
5608 * eval.c (s_defun): New static identifier.
5609
5610 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5611 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5612 when creating the memoized code.
5613
0ee39677
KR
56142003-10-19 Kevin Ryde <user42@zip.com.au>
5615
5616 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5617
5618 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5619 in accordance with R5RS, which just mpz_get_d doesn't really give.
5620
9a848baf
DH
56212003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5622
5623 * eval.c (s_bad_slot_number): New static identifier.
5624
5625 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5626 signal syntax errors. Avoid unnecessary consing when creating the
5627 memoized code.
5628
da48db62
DH
56292003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5630
5631 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5632 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5633 errors. Avoid unnecessary consing when creating the memoized
5634 code.
5635
5636 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5637 standard case. Make sure line and file information are copied to
5638 every created expression.
5639
82b3e2c6
DH
56402003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5641
5642 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5643 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5644 when creating the memoized code.
5645
5646 (scm_m_atbind): Reversed the order, in which the init expressions
5647 are stored and executed. The order of execution is now equal to
5648 the order in which the initializers of the let-forms are executed.
5649 Use check_bindings and transform_bindings.
5650
5651 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5652 !SCM_NULLP. Added some comments.
5653
21628685
DH
56542003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5655
5656 * eval.c: Sorted include files alphabetically.
5657
5658 (scm_m_begin): Added comment.
5659
5660 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5661 unnecessary consing when creating the memoized code.
5662
5663 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5664 syntax errors. Be more specific about the kind of error that was
5665 detected.
5666
5667 (scm_m_quote, unmemocopy): As an optimization, vector constants
5668 are now inserted unquoted into the memoized code. During
5669 unmemoization the quotes are added again to provide syntactically
5670 correct code.
5671
d6754c23
DH
56722003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5673
5674 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5675 scm_m_expand_body, check_bindings): Extracted syntax checking of
5676 bindings to new static function check_bindings.
5677
5678 (scm_m_let, memoize_named_let): Extracted handling of named let to
5679 new static function memoize_named_let.
5680
5681 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5682 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5683 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5684 unnecessary consing when creating the memoized code.
5685
03a3e941
DH
56862003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5687
5688 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5689 static identifiers.
5690
5691 (s_clauses, s_formals, s_duplicate_formals): Removed.
5692
5693 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5694 specific about the kind of error that was detected. Prepare for
5695 easier integration of changes for separated memoization.
5696
da48db62 56972003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
5698
5699 * eval.c (s_duplicate_binding): New static identifier.
5700
5701 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5702
5703 (scm_m_define): Added comment about how we check for duplicate
5704 formals.
5705
5706 (scm_m_do): Added check for duplicate bindings.
5707
5708 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5709 unnecessary consing when creating the memoized code.
5710
5711 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5712 scm_c_improper_memq to c_improper_memq, since it is not exported.
5713
5714 (transform_bindings): Call scm_c_memq rather than
5715 scm_c_improper_memq.
5716
5717 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5718
da48db62 57192003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
5720
5721 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5722 static identifiers.
5723
5724 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5725 specific about the kind of error that was detected. Avoid use of
5726 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5727 code, this way also making sure that file name, line number
5728 information etc. remain available.
5729
da48db62 57302003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
5731
5732 * eval.c (memoize_as_thunk_prototype): New static function.
5733
5734 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5735 Avoid unnecessary consing when creating the memoized code.
5736
9b9a35b6
KR
57372003-10-12 Kevin Ryde <user42@zip.com.au>
5738
5739 * list.c (scm_append): Track argument number and use in error.
5740
cc56ba80
DH
57412003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5742
5743 * eval.c (s_missing_expression, s_bad_variable): New static
5744 identifiers.
5745
5746 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5747 R5RS terminology for the naming of variables. Be more specific
5748 about the kind of error that was detected. Make sure file name,
5749 line number etc. are added to all freshly created expressions.
5750 Avoid unnecessary consing when creating the memoized code.
5751
609a8b86
DH
57522003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5753
5754 * eval.c (s_extra_expression, s_misplaced_else_clause,
5755 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5756
5757 (s_extra_case_clause): Removed.
5758
5759 (scm_m_case, scm_m_cond): If a clause appears after an else
5760 clause, report a misplaced else clause.
5761
5762 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5763 specific about the kind of error that was detected. Handle bound
5764 'else and '=>. Avoid unnecessary consing when creating the
5765 memoized code.
5766
5767 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5768 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5769 syntactic keyword '=>.
5770
58a2510b
DH
57712003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5772
5773 * eval.c (scm_m_case): Allow empty lists of case labels.
5774
2a6f7afe
DH
57752003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5776
5777 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
5778
5779 * print.c (scm_isymnames): Add names for the new memoizer codes.
5780
5781 * eval.c (s_missing_clauses, s_bad_case_clause,
5782 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
5783 literal_p): New static identifiers.
5784
5785 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
5786 specific about the kind of error that was detected. Check for
5787 duplicate case labels. Handle bound 'else. Avoid unnecessary
5788 consing when creating the memoized code.
5789
5790 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5791 the syntactic keyword 'else.
5792
e6729603
DH
57932003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5794
5795 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
5796 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
5797
5798 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5799 unnecessary consing when creating the memoized code.
5800
9ddeb776
KR
58012003-10-09 Kevin Ryde <user42@zip.com.au>
5802
5803 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
5804 cast gives for values bigger than a long, or for nan or inf.
5805
df5af69a
DH
58062003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5807
5808 * smob.h (scm_make_smob_type): Made the declaration match the
5809 definition.
5810
da0e6c2b
MV
58112003-10-07 Marius Vollmer <mvo@zagadka.de>
5812
5813 * goops.c, objects.h, smob.c, smob.h: Make type names char
5814 const * instead of char *. Thanks to Paul Jarc!
5815
591924eb
KR
58162003-10-02 Kevin Ryde <user42@zip.com.au>
5817
ff6ea7b9 5818 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
5819 rather than scm_strport_to_string, so as to guard against the port
5820 having been closed by the called procedure. Reported by Nic Ferrier.
5821
f03314f9
DH
58222003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5823
5824 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
5825
5826 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
5827 tags.h to deprecated.h.
5828
534c55a9
DH
58292003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5830
5831 This set of patches introduces a new tc7 code scm_tc7_number for
5832 numbers. Bignums, reals and complex numbers are turned from smobs
5833 into subtypes of scm_tc7_number.
5834
5835 * tags.h (scm_tc7_number): New.
5836
5837 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
5838 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
5839 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
5840 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
5841 (scm_class_of), print.c (scm_iprin1), smob.c
5842 (scm_smob_prehistory): Don't handle bignums, reals and complex
5843 numbers as subtypes of scm_tc7_smob any more.
5844
5845 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
5846 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
5847
29c4382a
DH
58482003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5849
5850 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
5851 sizeof (scm_t_complex) to determine the memory size of the
5852 malloc'd area for complex numbers.
5853
47ae1f0e
DH
58542003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5855
5856 * numbers.c (scm_bigequal): Fixed.
5857
859b6b2f
MV
58582003-09-16 Marius Vollmer <mvo@zagadka.de>
5859
5860 * stime.c (scm_current_time): 'time' does not set errno so don't
5861 use SCM_SYSERROR for reporting errors.
5862
e17d318f
DH
58632003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5864
5865 This set of patches eliminates the dependency between the
5866 implementation of evaluator specific memoization codes and special
5867 constants like #f, '() etc. ('flags'), which are not evaluator
5868 specific. The goal is to remove definitions of evaluator
5869 memoization codes completely from the public interface. This will
5870 make it possible to experiment more freely with optimizations of
5871 guile's internal representation of memoized code.
5872
5873 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
5874
5875 * print.c (iflagnames): New array, holding the printed names of
5876 guile's special constants ('flags').
5877
5878 (scm_isymnames): Now holds only the printed names of the
5879 memoization codes.
5880
5881 (scm_iprin1): Separate the handling of memoization codes and
5882 guile's special constants.
5883
5884 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
5885 SCM_IFLAGNUM): new
5886
5887 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
5888 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
5889 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
5890 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
5891 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
5892 values.
5893
5894 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
5895
5896 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
5897 tc9 macros and scm_tc9_flag.
5898
eecac806
MV
58992003-09-15 Marius Vollmer <mvo@zagadka.de>
5900
5901 * posix.c (scm_setgroups): Check that the gid list is not too
5902 long. Thanks to Paul Jarc!
5903
22f2cf2d
DH
59042003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5905
5906 * tags.h: Reduced the number of short instructions from 14 to 13.
5907 The typecode of the former 14th short instruction is now used to
5908 represent long instructions. Changed some comments to reflect
5909 this fact.
5910
5911 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
5912 previously used by SCM_IM_DEFINE.
5913
5914 (SCM_IM_DEFINE): Turned into a long instruction.
5915
5916 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
5917 instruction.
5918
5919 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
5920 code that is separate from all instructions, one level of dispatch
5921 for long instructions can be eliminated.
5922
5923 * print.c (scm_isymnames): Removed some commented code.
5924
62f548e1
MV
59252003-09-12 Marius Vollmer <mvo@zagadka.de>
5926
97a61c5f
MV
5927 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
5928 compiler on IA64.
5929
50e0ba57
MV
5930 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
5931
5932 * modules.c (scm_module_reverse_lookup): Check that the obarray
5933 really is a hashtable and do nothing if not.
5934
62f548e1
MV
5935 * inline.h: Use "extern inline" only with GCC. Use "static
5936 inline" else.
5937
0d5e3480
DH
59382003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5939
5940 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
5941 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5942
5943 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
5944 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
5945 deprecated.h.
5946
6b412e91
DH
59472003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5948
5949 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
5950 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5951
5952 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
5953 0.0==some_expression to some_expression==0.0. The latter is
5954 better readable. The former is preferred by some people, since it
5955 leads to a compiler error when confusing == with =. However, when
5956 using gcc, a warning will be issued if in an if-statement an
5957 assigment appears. Since many Guile developers are using gcc,
5958 such errors will not remain unnoticed anyway. We can therefore
5959 focus on better readability.
5960
7e3b25bf
DH
59612003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5962
5963 * tags.h: Added description of Guile's type system. Removed some
5964 old and misleading comments.
5965
3ea39242
DH
59662003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5967
5968 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
5969 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5970
5d7d39ff
DH
59712003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5972
5973 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
5974
5975 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
5976 respective SLOPPY macro.
5977
baa84a20
DH
59782003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5979
5980 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
5981 type string, not SCM_TYP7S.
5982
ba15f500
KR
59832003-09-03 Kevin Ryde <user42@zip.com.au>
5984
5985 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
5986 2s-complement.
5987
53bb8782
KR
5988 * stime.c (scm_strptime): Add comment about glibc strptime %s and
5989 current timezone requiring SCM_DEFER_INTS.
5990
defdc4b4
NJ
59912003-08-30 Neil Jerram <neil@ossau.uklinux.net>
5992
5993 * script.c (scm_compile_shell_switches): Make -s switch optional
5994 if file to be loaded does not begin with a `-'. (Thanks to Aaron
5995 VanDevender for the patch!)
5996
0f008a15
KR
59972003-08-30 Kevin Ryde <user42@zip.com.au>
5998
5999 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
6000 and to have non-integer types rejected as per other logical funcs.
6001
438a3ba1
KR
60022003-08-28 Kevin Ryde <user42@zip.com.au>
6003
6004 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
6005
98dceb37
KR
60062003-08-23 Kevin Ryde <user42@zip.com.au>
6007
6008 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
6009 thread safe, and could take a long time too.
6010
1fa79a38
KR
60112003-08-22 Kevin Ryde <user42@zip.com.au>
6012
6013 * numbers.c (scm_difference): Correction to bignum - negative inum.
6014
d97f9b42
KR
60152003-08-14 Kevin Ryde <user42@zip.com.au>
6016
6017 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
6018 [__GNUC__]: Use volatile asm macros rather than a function call.
6019 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
6020 macros while defining functions.
6021
6022 * simpos.c (getenv): Use <stdlib.h> for prototype.
6023 (scm_system): In docstring, refer to status:exit-val rather than
6024 "functions above".
6025
b9052fcc
KR
60262003-08-09 Kevin Ryde <user42@zip.com.au>
6027
6028 * srcprop.c (scm_source_properties): Return plist from hash if it's a
6029 list set by source-properties! rather than an SRCPROPS object,
6030
8e5b4b9e
KR
60312003-07-29 Kevin Ryde <user42@zip.com.au>
6032
6033 * properties.c (scm_primitive_property_ref): In docstring, note
6034 parameters to not-found-proc, use hyphens rather than underscores for
6035 that parameter name.
6036 (scm_primitive_property_set_x): In docstring, VAL is the value
6037 parameter not CODE.
6038
20703ac4
MV
60392003-07-27 Marius Vollmer <mvo@zagadka.de>
6040
c6ccee34
MV
6041 * print.c (scm_print_symbol_name): handle more weird characters by
6042 escaping the symbol name properly. Thanks to Paul Jarc!
6043
2f4931bf
MV
6044 * posix.h (scm_setgroups): New prototype.
6045 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
6046 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
6047 Don't use SCM_WRITABLE_VELTS.
6048
265c456f
MV
6049 * gc.h (SCM_GC_SET_CELL_BVEC): New.
6050 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
6051 Matthias Koeppe!
6052
20703ac4
MV
6053 * __scm.h (SCM_C_INLINE_KEYWORD): New.
6054 * numbers.c: Use it in place of SCM_C_INLINE so that the code
6055 compiles when SCM_C_INLINE is undefined.
6056
59c4bb82
DH
60572003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6058
6059 * __scm.h: Reformulated the architecture and compiler properties
6060 in terms of properties of scm_t_bits and SCM variables rather than
6061 in terms of c standard types. This is since it is not known which
6062 of the standard types scm_t_bits and SCM variables will be defined
6063 to.
6064
d7850c8d
KR
60652003-07-24 Kevin Ryde <user42@zip.com.au>
6066
6067 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
6068 and real.
6069
8a0c514f
KR
60702003-07-18 Kevin Ryde <user42@zip.com.au>
6071
6072 * numbers.c (scm_product): In complex * bignum, correction to
6073 REAL/IMAG fetch, x is the complex, not y.
6074
0aacf84e
MD
60752003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6076
6077 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
6078 scm_inf_p test as Scheme values.
6079 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
6080 and a positive inum.
6081 Use GNU indentation style.
6082
192de9a4
DH
60832003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6084
6085 * values.c (scm_values): Build lists of length 1 by using
6086 scm_list_1 instead of using scm_cons.
6087
bbb4438a
KR
60882003-07-10 Kevin Ryde <user42@zip.com.au>
6089
b58c85ce
KR
6090 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
6091 * list.c (scm_list_n): Ditto.
6092
bbb4438a
KR
6093 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
6094
287f8ad1
KR
60952003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
6096
6097 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
6098 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
6099 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
6100 the other using intptr_t.
6101
005d2366
KR
61022003-07-08 Kevin Ryde <user42@zip.com.au>
6103
0aacf84e 6104 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
6105 (scm_magnitude): Use hypot.
6106
6107 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
6108 @footnote since it doesn't go through to guile-procedures.txt.
6109
6110 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
6111 outside @var to quieten makeinfo, and use @code.
6112
cbfe8e62
HWN
61132003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6114
6115 * gc-malloc.c (decrease_mtrigger): new function
6116 (increase_mtrigger): new function, separate debug registering and
6117 mtrigger administration.
6118 (scm_gc_realloc): bugfix: do mtrigger administration before the
6119 actual realloc, for the realloc might invalidate a GC-d segment of
6120 memory. Thanks to Sam Hocevar for pointing this out.
6121 (scm_gc_realloc): use scm_malloc_reregister instead of
6122 unregistering and registering in sequence.
6123
aeb4c2e1
HWN
61242003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6125
6126 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
6127
4c27f8d2
HWN
61282003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6129
6130 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
6131 clauses.
6132
983e697d
MV
61332003-06-29 Marius Vollmer <mvo@zagadka.de>
6134
6135 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
6136 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
6137 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
6138 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
6139 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
6140 the release_1_6 branch.
6141
78b6566e
SJ
61422003-06-25 Stefan Jahn <stefan@lkcc.org>
6143
6144 * continuations.c: Redeclaration of getcontext() via the
6145 __asm__ ("getcontext") directive.
6146
6147 * continuations.h: Include <ucontext.h> instead of
6148 <sys/ucontext.h>.
6149
1ebb8497
KR
61502003-06-21 Kevin Ryde <user42@zip.com.au>
6151
6152 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
6153 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
6154 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
6155 available.
6156 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
6157 (isfinite): Remove, conflicts with C99 isfinite().
6158
fbf85ba4
MV
61592003-06-19 Marius Vollmer <mvo@zagadka.de>
6160
6161 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
6162 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
6163 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
6164 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
6165 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
6166 the release_1_6 branch.
6167
fcc5d734
SJ
61682003-06-14 Stefan Jahn <stefan@lkcc.org>
6169
6170 * threads.h: Redefined scm_getspecific() and scm_setspecific()
6171 to be functions instead of macros.
6172
6173 * threads.c: Conditionalized inclusion of <sys/time.h> and
6174 <unistd.h>.
6175 (scm_getspecific, scm_setspecific): Made these two function
6176 real part of the API.
6177
6178 * posix.c (s_scm_putenv): Added some code to make a
6179 (putenv "FOO="), i.e. setting an empty string, work also on
6180 Win32 systems. Thanks to Kevin Ryde for the proposal.
6181
c3ae8e07
KR
61822003-06-12 Kevin Ryde <user42@zip.com.au>
6183
75b14838
KR
6184 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
6185 freebsd to comment about need to use unsetenv.
c3ae8e07 6186
9d9fa092
MV
61872003-06-02 Marius Vollmer <mvo@zagadka.de>
6188
6189 * ports.c (scm_peek_char): Safe the column of the port around the
6190 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
6191
f2478375
KR
61922003-06-07 Kevin Ryde <user42@zip.com.au>
6193
6194 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
6195 and friends required by scm_t_bits setups.
6196
6375e040
DH
61972003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6198
6199 * tags.h (scm_tc2_int): Added.
6200
6201 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
6202 scm_tc2_int.
6203
6204 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
6205 scm_tcs_closures): Hard coded values replaced by symbolic ones.
6206
f5c6ec2f
DH
62072003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6208
6209 * eval.c: Partially undid my patch from 2003-05-31. This patch
6210 caused the segfault referenced in the previous changelog entry.
6211
47dbd81e
DH
62122003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6213
6214 * tags.h: Fixed comment about the immediate type code layout.
6215
6216 * eval.c: Fixed handling of non-special instructions. Without
6217 this patch, guile will segfault on (#\0) and similar instructions.
6218
3ec52c51
KR
62192003-06-05 Kevin Ryde <user42@zip.com.au>
6220
6221 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
6222 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
6223
e418bd7c
KR
6224 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
6225 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
6226
d0624e39
DH
62272003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6228
6229 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
6230 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
6231 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
6232 generalized it to apply not only to C level functions but also to
6233 scheme level functions.
6234
6235 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
6236 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
6237 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
6238 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
6239 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
6240 respectively.
6241
6242 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
6243 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
6244 eval.h into eval.c and a copy is placed into deprecated.h.
6245
6246 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
6247 into eval.c. This definition was not part of the API in any
6248 officially released version of guile and thus does not need to go
6249 through a phase of deprecation.
6250
e90c3a89
DH
62512003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
6252
d0624e39
DH
6253 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
6254 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
6255 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
6256 definitions are make static and renamed from scm_s_xxx to s_xxx.
6257 In deprecated.c the original definitions are copied.
6258
d0624e39
DH
6259 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
6260 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
6261 eval.h into eval.c and a copy (slightly modified to work in user
6262 code) is placed into deprecated.h.
6263
6264 * eval.c: Use the local static s_xxx definitions instead of the
6265 scm_s_xxx definitions throughout.
6266
14b18ed6
DH
62672003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6268
6269 This set of patches separates the representation of the cxr family
6270 of functions (car, cdr etc.) from the dsubr family of functions
6271 (i. e. functions that take a double precision floating point
6272 argument). Further, the algorithm for handling the cxr function
6273 is improved.
6274
6275 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
6276 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
6277 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
6278 cosh, tanh), objects.c (scm_class_of), procprop.c
6279 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
6280 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
6281 typecode for the dsubr family of functions.
6282
6283 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
6284 ramap_dsubr.
6285
6286 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
6287 (scm_init_pairs): Make use of the (now usable) second cell element
6288 of a scm_tc7_cxr function to implement the cxr family of functions
6289 more efficiently.
6290
2ca0d207
DH
62912003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6292
6293 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
6294 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
6295 end of an if-else-if-sequence of checks.
6296
9a069bdd
DH
62972003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6298
6299 * eval.c (SCM_CEVAL): Improved readability of call-with-values
6300 execution. Generalize apply_closure to apply_proc and use that
6301 for call-with-values.
6302
e910e9d2
DH
63032003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6304
6305 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
6306 a non closure.
6307
1e498fbd
SJ
63082003-05-30 Stefan Jahn <stefan@lkcc.org>
6309
6310 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
6311 appropriately for mingw32 hosts.
6312
6313 * numbers.h: Defining copysign(), isnan() and finite() to
6314 be prefixed by a single '_' for mingw32 hosts.
6315
c47e2599
KR
63162003-05-30 Kevin Ryde <user42@zip.com.au>
6317
6318 * numbers.c (z_negative_one): New variable.
6319 (scm_init_numbers): Initialize it.
6320 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
6321
2e945bcc
SJ
63222003-05-29 Stefan Jahn <stefan@lkcc.org>
6323
6324 * win32-dirent.c: Use malloc() instead of scm_malloc().
6325
6326 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
6327 warning.
6328
6329 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
6330 mingw32 build.
6331
6332 * modules.c (s_scm_module_import_interface): Renamed local
6333 variable interface to _interface. Seems like 'interface'
6334 is a special compiler directive for the mingw32 compiler.
6335
6336 * mkstemp.c: Provide prototype to avoid compiler warning.
6337
6338 * load.c (s_scm_search_path): Fixed absolute and relative
6339 path detections for native Windows platforms.
6340
6341 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
6342 to build on mingw32).
6343
6344 * gc-freelist.c ("s_scm_map_free_list",
6345 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
6346
6347 * fports.c (fport_fill_input): Disable use of
6348 fport_wait_for_input() on Win32 platforms.
6349
6350 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
6351
6352 * Makefile.am: Modified some rules for cross compiling.
6353
ddd8f927
DH
63542003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6355
6356 * eval.c (SCM_CEVAL): In case of an application, all checks for a
6357 proper function object and the correct number of arguments are now
6358 performed in the application part of SCM_CEVAL.
6359
6360 (scm_badformalsp): Removed.
6361
f8ba2197
DH
63622003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6363
6364 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
6365
79f55b7c
MD
63662003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6367
a502595f
MD
6368 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
6369 always being false by inserting preprocessor conditional. (Thanks
6370 to Bruce Korb.)
6371
79f55b7c
MD
6372 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
6373 (void *) in order to avoid an aliasing warning; thanks to Bruce
6374 Korb.)
6375
6376 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
6377
6378 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
6379 SCM_STACK_PTR.
6380
6381 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
6382 thread->base --> t->base.
6383
6384 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
6385
47dee228
MV
63862003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6387
6388 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
6389 scm_variable_set_name_hint, scm_builtin_variable,
6390 scm_internal_with_fluids, scm_make_gsubr,
6391 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
6392 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
6393 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
6394 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
6395 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
6396 scm_make_subr_with_generic, scm_make_subr_opt,
6397 scm_call_catching_errors, scm_make_smob_type_mfpe,
6398 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
6399 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
6400 branch. Some have been slightly rewritten.
6401 (scm_i_object_chars, scm_i_object_length): New, to support
6402 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
6403
e681d187
DH
64042003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6405
6406 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
6407 names and inits in the memoized code of do.
6408
7e59d9d4
MD
64092003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6410
6411 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
6412 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
6413 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6414 a compilation error if error-on-warning is enabled).
6415
9950a42c
MV
64162003-05-17 Marius Vollmer <mvo@zagadka.de>
6417
6418 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6419 removes preprocessor directives from the snarfage that might
6420 otherwise confuse us. These directives appear when compiling with
6421 "-g3", for example.
6422
0068984b
HWN
64232003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6424
26e68795
HWN
6425 * ChangeLog: add my surname
6426
0068984b
HWN
6427 * srcprop.c (scm_finish_srcprop): use
6428 scm_gc_register_collectable_memory()
6429 (scm_make_srcprops): idem.
6430
131805f0
HWN
64312003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6432
6433 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6434 wrap-around for scm_mtrigger
6435 (scm_gc_register_collectable_memory): abort on overflowing
6436 scm_mallocated().
6437
d4611024
KR
64382003-05-13 Kevin Ryde <user42@zip.com.au>
6439
6440 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6441 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6442
7aaf8dc9
MD
64432003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6444
dfd03fb9
MD
6445 * backtrace.c (scm_display_error_message): Introduced fancy
6446 printing with max level 7 and length 10. (Purpose: avoid printing
6447 gigantic objects in error messages.)
6448
6449 * print.c, print.h (scm_i_port_with_print_state): New function.
6450
6451 * print.c (scm_iprin1, scm_printer_apply,
6452 scm_port_with_print_state): Use scm_i_port_with_print_state.
6453 (scm_simple_format): Modified not to destroy print states.
6454 (print_state_mutex): New mutex.
6455 (scm_make_print_state, scm_free_print_state, scm_prin1):
6456 Lock/unlock print_state_mutex.
6457
7aaf8dc9
MD
6458 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6459 Use current names in definitions.
6460
a4d9ffa1
KR
64612003-05-10 Kevin Ryde <user42@zip.com.au>
6462
6463 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6464
d25e96a4
KR
6465 * numbers.c (scm_integer_length): On negative bignums, adjust
6466 mpz_sizeinbase to account for it looking at absolute value where we
6467 want ones-complement.
6468
6469 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6470 since we're only using the ulong return value, and x might not fit.
6471
5bf6a6f0
DH
64722003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6473
6474 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6475 read. This will allow to make the definition in read.c static.
6476
f58c472a
DH
64772003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6478
6479 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6480 from evalext to eval. This will allow to make some of the
6481 definitions in eval.c static.
6482
90382aeb
KR
64832003-05-06 Kevin Ryde <user42@zip.com.au>
6484
6485 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6486 (scm_logcount): Use mpz_com, not mpz_neg.
6487
3b88ed2a
DH
64882003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6489
6490 The purpose of this patch is to make guile's internal memoizers
6491 distinguishable from memoizing macros created on the scheme level
6492 or from user provided primitive memoizing macros. The reason is,
6493 that the internal memoizers are the only ones that are allowed to
6494 transform their scheme input into memoizer byte code, while all
6495 other memoizing macros may only transform scheme code into new
6496 scheme code.
6497
6498 To achieve this, a new macro type 'builtin-macro!' is introduced.
6499 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6500 this will change when the memoizer and executor are separated.
6501
6502 * macros.[ch] (scm_i_makbimacro): New.
6503
6504 * macros.h (SCM_BUILTIN_MACRO_P): New.
6505
6506 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6507
6508 * eval.c, goops.c: All of guile's primitive memoizing macros are
6509 primitive builtin-macros now.
6510
6511 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6512 builtin-macros are handled equally to memoizing macros.
6513
b0780eb1
MV
65142003-05-04 Marius Vollmer <mvo@zagadka.de>
6515
6516 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6517 work around a bug in GCC 2.95.2 but is now a bug in itself.
6518
1cbf4fe9
MV
65192003-05-02 Marius Vollmer <mvo@zagadka.de>
6520
6521 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6522 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6523 scm_tcs_symbols): New.
6524
1a61d41b
MV
65252003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6526
096ecbaf
MV
6527 * deprecated.h, deprecated.c (scm_protect_object,
6528 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6529 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6530 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6531 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6532 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6533 scm_ptob_descriptor, scm_port_rw_active,
6534 scm_close_all_ports_except): New.
6535
1a61d41b
MV
6536 * ports.c (scm_c_port_for_each): New function, mostly copied from
6537 scm_port_for_each.
6538 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6539 * ports.h (scm_c_port_for_each): New prototype.
6540
c8e1d354
MD
65412003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6542
6543 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6544 macro was introduced in anticipation of GOOPS method compilation
6545 code.)
6546
6547 * goops.c: Removed binding of @dispatch.
6548
a4aa2134
DH
65492003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6550
6551 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6552 instructions that bind the macros on the scheme level back to
6553 goops.c in order to make sure again that the bindings go into the
6554 (oop goops) module and are not visible from the outside.
6555
9fbee57e
DH
65562003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6557
6558 * eval.c: Non functional change: Separated R5RS and non-R5RS
6559 macros into different sections of the file and ordered the
6560 memoizers alphabetically.
6561
12841895
DH
65622003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6563
6564 * eval.c (scm_ilookup): Rewritten to improve readability.
6565
6a3f13f0
DH
65662003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6567
6568 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6569 Partially reverted patch from 2003-04-23 in oder to find a better
6570 compromise between readability and debuggability.
6571
b0c5d67b
DH
65722003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6573
6574 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6575 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6576 definitions of the special goops memoizers from goops.[ch] to
6577 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6578 throughout guile.
6579
b9ad392e
MD
65802003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6581
6582 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6583
6584 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6585
6586 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6587
6588 * ioext.c (scm_fdes_to_ports): Ditto.
6589
6590 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6591 lock/unlock scm_i_port_table_mutex.
6592
6593 * strports.c (scm_mkstrport): Ditto.
6594
6595 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6596
6597 * fports.c (scm_fdes_to_port): Ditto.
6598
d0b07b5d
DH
65992003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6600
6601 This set of patches contains no functional changes, only debatable
6602 minor stylistic ones. Still, in order to prepare a patch between
6603 my local copy and the CVS version, I decided to submit the changes
6604 below. Then, the patch will hopefully only contain relevant
6605 modifications :-)
6606
6607 * eval.c (iqq): Added const specifier.
6608
6609 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6610 Use NULL instead of 0 to indicate that a pointer is returned.
6611 Removed some misleading 'fall through' comments.
6612
6613 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6614 Split up long expressions into smaller ones to be more debugging
6615 friendly.
6616
a98e8e98
DH
66172003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6618
6619 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6620 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6621 rather than casting to SCM.
6622
c178c3a6
DH
66232003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6624
6625 * sort.c, pairs.h: Removed unnecessary includes.
6626
d339981a
DH
66272003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6628
6629 * sort.c: Replaced hand-made trampline code by the new official
6630 mechanism from eval.c. This fixes a segfault in the new test file
6631 sort.test.
6632
6633 (quicksort, compare_function, scm_restricted_vector_sort_x,
6634 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6635 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6636 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6637 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6638 eval.c.
6639
6640 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6641 cmp_fun_t): Removed.
6642
6643 (compare_function): Added.
6644
6645 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6646 arithmetics with index arithmetics. Changed quicksort to work on
6647 an array of SCM values instead of an array of characters. Avoid
6648 bytewise copying of SCM elements. Avoid allocating memory on the
6649 stack with alloca. Fixed some comments.
6650
821f18a4
DH
66512003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6652
6653 * eval.c (EXTEND_ENV): Eliminated.
6654
6655 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6656 EXTEND_ENV.
6657
94fb5a6e
DH
66582003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6659
6660 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6661
6662 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6663 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6664
6665 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6666 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6667 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6668 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6669 functions such that they check if the object is a non-immediate.
6670 Further, renamed identifiers to use the scm_dbg_ prefix and made
6671 their inclusion into the lib dependent of the
6672 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6673
fce0b22d
DH
66742003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6675
6676 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6677 debug option.
6678
1685446c
DH
66792003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6680
821f18a4 6681 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
6682 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6683 any calls to SCM_NCONSP any more.
6684
6685 * unif.c (l2ra): Eliminate redundant check.
6686
9ff1720f
DH
66872003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6688
6689 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6690 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6691 SCM_NNULLP. Now, guile itself does not include any calls to
6692 SCM_NNULLP any more.
6693
05b15362
DH
66942003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6695
6696 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6697 scm_copy_tree): Place assignment expressions which are part of
6698 other expressions into an expression of their own.
6699
0c88d7df
DH
67002003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6701
6702 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6703 compare SCM values with !=.
6704
5cb22e96
DH
67052003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6706
6707 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6708 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6709 and definition of the memoizer for the generalized set! macro from
6710 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6711 define the macro object.
6712
6713 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6714 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6715 eval.c, it is made static and renamed to s_set_x.
6716
6717 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6718 over SCM_N<foo>.
6719
a44a9715
DH
67202003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6721
6722 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6723 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6724 to undefineds and registered the object as a permanent object.
6725
6726 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6727 static in eval.c, renamed it to f_apply and registered the object
6728 as a permanent object.
6729
1b43d24c
DH
67302003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6731
5cb22e96 6732 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
6733 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6734
aec16f99
DH
67352003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6736
6737 * numbers.c (scm_logtest): Fixed argument bug in the call to
6738 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6739
f96460ce
DH
67402003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6741
6742 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6743 type errors that showed up when compiling with SCM_DEBUG defined.
6744
d0f6ceb8
DH
67452003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6746
6747 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6748 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6749 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6750 fix compile errors with --disable-deprecated.
6751
19a7a089
RB
67522003-04-17 Rob Browning <rlb@defaultvalue.org>
6753
6754 * numbers.c (scm_integer_expt): fix case where we were declaring
6755 vars in the middle of a statement block. Thanks to Thamer
6756 Al-Harbash.
6757
47cd67db
MD
67582003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6759
0fd7dcd3
MD
6760 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6761 change.
6762
47cd67db
MD
6763 * eq.c (scm_eqv_p): Turned into a primitive generic.
6764
3b8b889c
RB
67652003-04-16 Rob Browning <rlb@defaultvalue.org>
6766
312006bb
RB
6767 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6768 Thanks to Boyd Gerber.
6769 Added check for __arm__ in addition to arm for LINUX and copied
6770 __s390__ defines from upstream libgc. Thanks to James Treacy for
6771 reporting the problems.
c7ef2ea1 6772
3b8b889c
RB
6773 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
6774
6775 * socket.c: use SCM_CHAR_BIT.
6776
6777 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
6778
6779 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
6780
43261b39
MD
67812003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6782
6783 * feature.c (scm_init_feature): Always add threads feature.
6784
58241edc
MD
67852003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6786
6787 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
6788 scm_at_assert_bound_ref. (We don't want the unbound check. See
6789 oop/goops/active-slot.scm.)
6790
94e91275
RB
67912003-04-14 Rob Browning <rlb@defaultvalue.org>
6792
6793 * tags.h: scm_t_intptr should have been intptr_t.
6794
3071ea27
RB
67952003-04-13 Rob Browning <rlb@defaultvalue.org>
6796
6797 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
6798 test. Instead use
6799 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
6800 as gc_os_dep.c suggests is appropriate.
6801
6802 * goops.c (prep_hashsets): make static to match prototype.
6803 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
6804 Chin.
6805
6806 * c-tokenize.lex: remove trailing comma from enum. Thanks to
6807 Albert Chin.
6808
6809 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
6810 Klausner.
6811
21ab2aeb
MD
68122003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6813
6814 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
6815 indicated through extra fields in getters-n-setters.
6816 (scm_add_slot): Adapted to new format of getters_n_setters slot.
6817 (Thanks to Andy Wingo.)
6818
dff96e95
HWN
68192003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6820
6821 * gc-segment.c: add comment
6822
07921c76
RB
68232003-04-07 Rob Browning <rlb@defaultvalue.org>
6824
b5331f10
RB
6825 * debug.h: change "id" arg name to "info_id" to avoid objective-c
6826 clash.
6827
07921c76
RB
6828 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
6829 and add regression test to standalone/.
6830
68312003-04-06 Rob Browning <rlb@defaultvalue.org>
6832
6833 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
6834 Thanks to Dale P. Smith.
6835
6836 * random.c: #include gmp.h.
6837 (scm_c_random_bignum): normalize result on return.
6838
6839 * init.c: #include gmp.h.
6840
6841 * numbers.h: remove the gmp.h #include (not needed now).
6842
6843 * posix.h: change occurences of "id" to something else so we don't
6844 cause trouble when included via objective-c (can't hurt, might
6845 help). Still have usage in debug.h, though.
6846
938f6b7c
MD
68472003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6848
372691d8
MD
6849 * random.c (scm_c_random_bignum): Don't generate a random number
6850 equal to m (the second argument of scm_c_random_bignum); only
6851 generate numbers in the range 0 <= r < m.
c5f268f8
MD
6852 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
6853 scm_var_random_state.
372691d8 6854
938f6b7c
MD
6855 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
6856 clause.
6857
6cdb8c3f
RB
68582003-04-05 Rob Browning <rlb@defaultvalue.org>
6859
938f6b7c 6860 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
6861 uses before any code.
6862
15635be5
MD
68632003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6864
1ecfd013
MD
6865 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
6866 not top_srcdir.
6867
15635be5
MD
6868 * hashtab.c (rehash_after_gc): Clear to_rehash list before
6869 processing it in order to avoid an infinite loop.
6870
6871 * print.c (scm_prin1): Remember old state of pstate->writingp.
6872
73be1d9e
MV
68732003-04-05 Marius Vollmer <mvo@zagadka.de>
6874
6875 * Changed license terms to the plain LGPL thru-out.
6876
ad815c06
RB
68772003-04-04 Rob Browning <rlb@defaultvalue.org>
6878
6879 * socket.c (FLIPCPY_NET_HOST_128): new macro.
6880 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
6881 rewrite to handle GMP bignums.
6882
6883
6884 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
6885
6886 * ports.c (scm_getc): minor tweak.
6887
6888 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
6889 rewrite to handle GMP bignums.
6890
6891 * numbers.c: rewrite *many* functions to handle GMP bignums.
6892
6893 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
6894 handle GMP bignums.
6895
6896 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
6897
6898 * init.c (check_config): remove SCM_BIGDIG conditionals.
6899 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
6900
6901 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
6902
6903 * eval.c: remove SCM_BIGDIG conditionals.
6904
6905 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
6906
6cdb8c3f
RB
69072003-03-31 Rob Browning <rlb@defaultvalue.org>
6908
6909 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
6910 to Kevin Ryde.)
6911
69122003-03-27 Rob Browning <rlb@defaultvalue.org>
6913
6914 * threads.h: fix various preprocessor usages of new public
6915 symbols to expect 0 or 1 values rather than 1 or undefined.
6916 i.e. change #ifdef to #if, etc.
6917
6918 * threads.c: fix various preprocessor usages of new public
6919 symbols to expect 0 or 1 values rather than 1 or undefined.
6920 i.e. change #ifdef to #if, etc.
6921
6922 * tags.h: fix various preprocessor usages of new public
6923 symbols to expect 0 or 1 values rather than 1 or undefined.
6924 i.e. change #ifdef to #if, etc.
6925
6926 * stacks.c: fix various preprocessor usages of new public
6927 symbols to expect 0 or 1 values rather than 1 or undefined.
6928 i.e. change #ifdef to #if, etc.
6929
6930 * stackchk.h: fix various preprocessor usages of new public
6931 symbols to expect 0 or 1 values rather than 1 or undefined.
6932 i.e. change #ifdef to #if, etc.
6933
6934 * stackchk.c: fix various preprocessor usages of new public
6935 symbols to expect 0 or 1 values rather than 1 or undefined.
6936 i.e. change #ifdef to #if, etc.
6937
6938 * sort.c: fix various preprocessor usages of new public
6939 symbols to expect 0 or 1 values rather than 1 or undefined.
6940 i.e. change #ifdef to #if, etc.
6941
6942 * read.c: fix various preprocessor usages of new public
6943 symbols to expect 0 or 1 values rather than 1 or undefined.
6944 i.e. change #ifdef to #if, etc.
6945
6946 * random.c: fix various preprocessor usages of new public
6947 symbols to expect 0 or 1 values rather than 1 or undefined.
6948 i.e. change #ifdef to #if, etc.
6949
6950 * print.c: fix various preprocessor usages of new public
6951 symbols to expect 0 or 1 values rather than 1 or undefined.
6952 i.e. change #ifdef to #if, etc.
6953
6954 * objects.c: fix various preprocessor usages of new public
6955 symbols to expect 0 or 1 values rather than 1 or undefined.
6956 i.e. change #ifdef to #if, etc.
6957
6958 * numbers.h: fix various preprocessor usages of new public
6959 symbols to expect 0 or 1 values rather than 1 or undefined.
6960 i.e. change #ifdef to #if, etc.
6961
6962 * null-threads.c: fix various preprocessor usages of new public
6963 symbols to expect 0 or 1 values rather than 1 or undefined.
6964 i.e. change #ifdef to #if, etc.
6965
6966 * lang.c: fix various preprocessor usages of new public
6967 symbols to expect 0 or 1 values rather than 1 or undefined.
6968 i.e. change #ifdef to #if, etc.
6969
6970 * lang.h: fix various preprocessor usages of new public
6971 symbols to expect 0 or 1 values rather than 1 or undefined.
6972 i.e. change #ifdef to #if, etc.
6973
6974 * iselect.h: fix various preprocessor usages of new public
6975 symbols to expect 0 or 1 values rather than 1 or undefined.
6976 i.e. change #ifdef to #if, etc.
6977
6978 * init.c: fix various preprocessor usages of new public
6979 symbols to expect 0 or 1 values rather than 1 or undefined.
6980 i.e. change #ifdef to #if, etc.
6981
6982 * gh_data.c: fix various preprocessor usages of new public
6983 symbols to expect 0 or 1 values rather than 1 or undefined.
6984 i.e. change #ifdef to #if, etc.
6985
6986 * gh.h: fix various preprocessor usages of new public
6987 symbols to expect 0 or 1 values rather than 1 or undefined.
6988 i.e. change #ifdef to #if, etc.
6989
6990 * gen-scmconfig.c: change most new public symbols to be defined to
6991 0 or 1 rather than being either 1 or undefined.
6992
6993 * gc_os_dep.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 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
6997
6998 * gc.h: fix various preprocessor usages of new public
6999 symbols to expect 0 or 1 values rather than 1 or undefined.
7000 i.e. change #ifdef to #if, etc.
7001
7002 * gc-card.c: fix various preprocessor usages of new public
7003 symbols to expect 0 or 1 values rather than 1 or undefined.
7004 i.e. change #ifdef to #if, etc.
7005
7006 * gc-mark.c: fix various preprocessor usages of new public
7007 symbols to expect 0 or 1 values rather than 1 or undefined.
7008 i.e. change #ifdef to #if, etc.
7009
7010 * feature.c: fix various preprocessor usages of new public
7011 symbols to expect 0 or 1 values rather than 1 or undefined.
7012 i.e. change #ifdef to #if, etc.
7013
7014 * evalext.c: fix various preprocessor usages of new public
7015 symbols to expect 0 or 1 values rather than 1 or undefined.
7016 i.e. change #ifdef to #if, etc.
7017
7018 * eval.h: fix various preprocessor usages of new public
7019 symbols to expect 0 or 1 values rather than 1 or undefined.
7020 i.e. change #ifdef to #if, etc.
7021
7022 * eval.c: fix various preprocessor usages of new public
7023 symbols to expect 0 or 1 values rather than 1 or undefined.
7024 i.e. change #ifdef to #if, etc.
7025
7026 * eq.c: fix various preprocessor usages of new public
7027 symbols to expect 0 or 1 values rather than 1 or undefined.
7028 i.e. change #ifdef to #if, etc.
7029
7030 * coop.c: fix various preprocessor usages of new public
7031 symbols to expect 0 or 1 values rather than 1 or undefined.
7032 i.e. change #ifdef to #if, etc.
7033
7034 * coop-threads.c: fix various preprocessor usages of new public
7035 symbols to expect 0 or 1 values rather than 1 or undefined.
7036 i.e. change #ifdef to #if, etc.
7037
7038 * coop-pthreads.c: fix various preprocessor usages of new public
7039 symbols to expect 0 or 1 values rather than 1 or undefined.
7040 i.e. change #ifdef to #if, etc.
7041
7042 * coop-defs.h: fix various preprocessor usages of new public
7043 symbols to expect 0 or 1 values rather than 1 or undefined.
7044 i.e. change #ifdef to #if, etc.
7045
7046 * convert.i.c: fix various preprocessor usages of new public
7047 symbols to expect 0 or 1 values rather than 1 or undefined.
7048 i.e. change #ifdef to #if, etc.
7049
7050 * continuations.c: fix various preprocessor usages of new public
7051 symbols to expect 0 or 1 values rather than 1 or undefined.
7052 i.e. change #ifdef to #if, etc.
7053
7054 * _scm.h: fix various preprocessor usages of new public symbols to
7055 expect 0 or 1 values rather than 1 or undefined. i.e. change
7056 #ifdef to #if, etc.
7057
d11d697a
MV
70582003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7059
9686f86d
MV
7060 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
7061
7062 * deprecated.c, deprecated.h: New files, to collect deprecated
7063 things in one place.
7064 * Makefile.am: Added them in all the right places.
7065
d11d697a
MV
7066 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
7067 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
7068 builds work.
9686f86d
MV
7069 (DOT_X_FILES): Removed "iselect.x".
7070 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 7071
e3c0c3b9
RB
70722003-03-25 Rob Browning <rlb@defaultvalue.org>
7073
7074 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
7075 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
7076
7077 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
7078
7079 * vports.c: #include <config.h> if HAVE_CONFIG_H.
7080
7081 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
7082 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7083
7084 * threads.h: replace usage of struct timespect with
7085 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
7086 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
7087 favor of scm_t_timespec from scmconfig.h.
7088
7089 * threads.c: move libguile/_scm.h include to the top so we pick up
7090 any critical defines like _GNU_SOURCE early. Replace usage of
7091 struct timespect with scm_t_timespec. Replace usage of
7092 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
7093 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
7094
7095 * threads-plugin.h: replace usage of struct timespect with
7096 scm_t_timespec.
7097
7098 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
7099 usage of struct timespect with scm_t_timespec.
7100
7101 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
7102 HAVE_INTTYPES_H handling to scmconfig.h. #include
7103 "libguile/__scm.h". Rework handling for scm_t_bits,
7104 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
7105 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
7106 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
7107 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
7108 SCM_HAVE_ARRAYS.
7109
7110 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
7111
7112 * struct.c: #include <config.h> if HAVE_CONFIG_H.
7113
7114 * strports.c: #include <config.h> if HAVE_CONFIG_H.
7115
7116 * strop.c: #include <config.h> if HAVE_CONFIG_H.
7117
7118 * stime.h: move handling of time related headers to scmconfig.h.
7119
7120 * stime.c: #include <config.h> if HAVE_CONFIG_H.
7121
7122 * stacks.c: replace usage of STACK_GROWS_UP with
7123 SCM_STACK_GROWS_UP.
7124
7125 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7126 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7127
7128 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7129 of uint32 and HAVE_UINT_32 with scm_t_int32.
7130
7131 * smob.c: #include <config.h> if HAVE_CONFIG_H.
7132
7133 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
7134
7135 * script.c: #include <config.h> if HAVE_CONFIG_H.
7136
7137 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
7138
7139 * scmconfig.h.top: new file -- preamble for scmconfig.h.
7140
7141 * rw.c: #include <config.h> if HAVE_CONFIG_H.
7142
7143 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
7144
7145 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7146
7147 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
7148
7149 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7150 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
7151 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
7152 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7153
7154 * ramap.c: replace usage of HAVE_LONG_LONGS with
7155 "SCM_SIZEOF_LONG_LONG != 0".
7156
7157 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
7158 "libguile/scmconfig.h".
7159
7160 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
7161
7162 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7163 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7164
7165 * posix.c: #include <config.h> if HAVE_CONFIG_H.
7166
7167 * ports.c: #include <config.h> if HAVE_CONFIG_H.
7168
7169 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7170
7171 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
7172 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
7173 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
7174 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
7175 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
7176 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
7177 "SCM_SIZEOF_LONG_LONG != 0".
7178
7179 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7180 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
7181 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
7182 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
7183
7184 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
7185
7186 * null-threads.h: replace usage of struct timespect with
7187 scm_t_timespec.
7188
7189 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
7190
7191 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
7192 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
7193 scm_t_uint64 and rename usages.
7194
7195 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
7196
7197 * load.c: #include <config.h> if HAVE_CONFIG_H.
7198
7199 * iselect.h: move handling of time related headers to scmconfig.h.
7200 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
7201 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
7202 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
7203
7204 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7205 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7206 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7207
7208 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
7209
7210 * inline.h: #include "libguile/__scm.h" at the top. Change code
7211 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
7212 what to do instead of creating a new public #define. Rename usage
7213 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7214 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
7215 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
7216
7217 * inline.c: rearrange handling -- now we just #define
7218 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
7219 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
7220 appropriate, and we use that in inline.h along with the above
7221 define to determine how to respond.
7222
7223 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7224 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7225
7226 * guile.c: #include <config.h> if HAVE_CONFIG_H.
7227
7228 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7229 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7230
7231 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7232
7233 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
7234
7235 * gen-scmconfig.c: new file -- see comments in file for details.
7236
7237 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
7238
7239 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
7240 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7241
7242 * gc.h: replace usage of SIZEOF_LONG with
7243 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
7244 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
7245 since we handle that in scmconfig.h now.
7246
7247 * gc.c: #include <config.h> if HAVE_CONFIG_H.
7248
7249 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7250 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
7251 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7252
7253 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
7254
7255 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7256 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7257
7258 * fports.c: #include <config.h> if HAVE_CONFIG_H.
7259
7260 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
7261
7262 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7263 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7264
7265 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
7266
7267 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7268 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7269
7270 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
7271 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
7272 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7273 with "SCM_SIZEOF_LONG_LONG != 0".
7274
7275 * error.c: #include <config.h> if HAVE_CONFIG_H.
7276
7277 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7278 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7279 with "SCM_SIZEOF_LONG_LONG != 0".
7280
7281 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
7282
7283 * coop.c: replace usage of struct timespect with scm_t_timespec.
7284 #include <config.h> if HAVE_CONFIG_H.
7285
7286 * coop-threads.c: #include "libguile/_scm.h" early. Replace
7287 usage of struct timespect with scm_t_timespec. Replace usage of
7288 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7289
7290 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
7291 usage of struct timespect with scm_t_timespec. Replace usage of
7292 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7293
7294 * coop-defs.h: move handling of time related headers to
7295 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
7296 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
7297 timespect with scm_t_timespec.
7298
7299 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7300
7301 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7302
7303 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7304 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7305
7306 * continuations.c: move libguile/_scm.h include to the top so we
7307 pick up any critical defines like _GNU_SOURCE early.
7308
7309 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
7310
7311 * async.c: #include <config.h> if HAVE_CONFIG_H.
7312
7313 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
7314
7315 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
7316 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
7317
7318 * __scm.h: move libguile/scmconfig.h include up to the top, so
7319 we're sure to pick up any critical defines like _GNU_SOURCE early.
7320 #include <limits.h> removed in favor of scmconfig.h inclusion when
7321 appropriate. STDC_HEADERS based inclusion of stdlib.h,
7322 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
7323 scmconfig.h inclusion when appropriate. Various Win32 related
7324 definitions removed in favor of scmconfig.h inclusion when
7325 appropriate.
7326 (HAVE_UINTPTR_T): definition removed (see NEWS).
7327 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
7328 (HAVE_LONG_LONGS): definition removed (see NEWS).
7329 (HAVE_LONG_LONG): definition removed (see NEWS).
7330 (HAVE_PTRDIFF_T): definition removed (see NEWS).
7331
7332 * Makefile.am: scmconfig.h is now generated by building and
7333 running gen-scmconfig.h and capturing its output. gen-scmconfig
7334 uses config.h and the configure.in generated gen-scmconfig.h to
7335 decide what to output. See gen-scmconfig.c for details.
7336 (noinst_PROGRAMS): add gen-scmconfig.
7337 (gen_scmconfig_SOURCES): new variable.
7338 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
7339 cross-compiling right.
7340 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
7341 (BUILT_SOURCES): add scmconfig.h.
7342
25e0bf97
MV
73432003-03-19 Marius Vollmer <mvo@zagadka.de>
7344
7345 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
7346 Adrian Bunk. Thanks!
7347
74b6d6e4
MD
73482003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7349
7350 * goops.c (make_class_from_template): New fourth arg:
7351 applicablep.
7352 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
7353 cpls.
7354
7355 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
7356
7357 * goops.c, objects.c, objects.h (scm_make_extended_class): New
7358 second arg: applicablep.
7359 (scm_i_inherit_applicable): New function.
7360
7361 * goops.c, goops.h (scm_class_applicable,
7362 scm_class_extended_accessor): New classes.
7363
5c9e7dad
DH
73642003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7365
7366 * procs.c (scm_procedure_documentation): Removed redundant
7367 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
7368 predicates.
7369
f8af5c6d
MD
73702003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7371
c614a00b
MD
7372 * list.c, list.h (scm_filter, scm_filter_x): New functions.
7373
109c2c9f
MD
7374 * modules.c (scm_module_import_interface): New function.
7375
f8af5c6d
MD
7376 * goops.c, goops.h (scm_class_accessor_method): Renamed from
7377 scm_class_accessor.
7378 (scm_class_accessor): New class.
7379
a48d60b1
MD
73802003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7381
7382 * goops.c (scm_primitive_generic_generic): Enable primitive
7383 generic if not enabled.
7384 (scm_sys_goops_loaded): Setup unextended primitive generics.
7385
7386 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
7387
7388 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
7389 snarf macros.
7390
7391 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
7392 testing example. All uses of SCM_GPROC should be converted.)
7393
7394 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
7395 scm_assoc.
7396
7397 * eq.c (scm_equal_p): Turned into a primitive generic.
7398
84edc049
RB
73992003-02-27 Rob Browning <rlb@defaultvalue.org>
7400
7401 * Makefile.am (scmconfig.h): new target -- generate file from
7402 ../config.h.
7403 (modinclude_HEADERS): remove version.h.
7404 (nodist_modinclude_HEADERS): add version.h.
7405
ea5c9285
MD
74062003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7407
b4a1358c
MD
7408 This fixes a serious GC bug, introduced during the latest
7409 reorganization of the GC, which disabled freeing of structs and
7410 GOOPS objects:
7411
7412 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
7413 SCM_EOL.
53af8255
MD
7414 (scm_struct_prehistory): Move scm_free_structs to
7415 scm_before_mark_c_hook.
ea5c9285 7416
b4a1358c
MD
7417 * gc-card.c (sweep_card): Check that we haven't swept structs on
7418 this card before. That can happen if scm_i_sweep_all_segments has
7419 been called from some other place than scm_igc.
7420
c35738c1
MD
74212003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7422
231a4ea8
MD
7423 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7424 (since hash tables now adapt their size).
7425
7426 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7427 (current number of prehistory bindings; hashtable code will select
7428 a prime which is greater than this value).
7429
7430 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7431 (current number of initial symbols).
7432
7433 * properties.c (scm_init_properties): Don't specify size of
7434 scm_properties_whash.
7435
7436 * objprop.c (scm_init_objprop): Don't specify size of
7437 scm_object_whash.
7438
7439 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7440
c35738c1
MD
7441 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7442
7443 The following changes introduce the use of resizable hash tables
7444 throughout Guile. It also renames the old *-hash-table* functions
7445 to *-alist-vector* and places them, together with the rest of the
7446 weak vector support, in the module (ice-9 weak-vector). We should
7447 probably introduce a new, better, API for weak references, for
7448 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7449 look like and are used like ordinary pairs.)
7450
7451 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7452 leaf_environment_fold, obarray_remove_all): Use hashtable
7453 accessors.
7454
7455 * gc.c (scm_init_storage): Moved hook initialization to
7456 scm_storage_prehistory.
7457 (scm_storage_prehistory): New function.
7458 (scm_igc): Added commentary about placement of
7459 scm_after_sweep_c_hook.
7460
7461 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7462 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7463 SCM_WVECT_WEAK_VALUE_P.
7464
7465 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7466 functions.
7467 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7468 Removed.
7469 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7470 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7471
7472 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7473 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7474
7475 * modules.c (module-reverse-lookup): Use hashtable accessors.
7476
7477 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7478
7479 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7480 scm_make_weak_value_alist_vector,
7481 scm_make_doubly_weak_alist_vector): New functions.
7482
7483 * weaks.c (scm_init_weaks_builtins): New function.
7484
7485 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7486 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7487 SCM_WVECT_NOSCAN_P): New macros.
7488
7489 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7490 and SCM_WVECT_WEAK_VALUE_P.
7491
7492 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7493 allocate_weak_vector and exported.
7494
0a4c1355
MD
74952003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7496
7497 * hashtab.c: Undid thread safety. (We decided that it's better to
7498 let the user explicitly protect the tables (or not) according what
7499 is suitable for the application.)
7500
87ca11ff
MD
75012003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7502
7503 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7504 thread safe and handle resizing tables.
7505 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7506 SCM_DEFER/ALLOW_INTS.
7507
f59a096e
MD
75082003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7509
7510 * hashtab.c (scm_vector_to_hash_table,
7511 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7512 functions.
7513 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7514 safe and handle resizing tables.
7515
7516 * weaks.c (scm_make_weak_key_hash_table,
7517 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7518 Size argument made optional. Return resizable table if not
7519 specified.
7520
4b612c5b
MD
75212003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7522
7523 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7524 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7525
b3d7f6df
MD
75262003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7527
7528 * debug.c (scm_procedure_source): Handle all objects for which
7529 procedure? is #t. (Thanks to Bill Schottstaedt.)
7530
756414cf
MD
75312003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7532
361d631f
MD
7533 * futures.c (mark_futures): Don't need to mark data of recycled
7534 futures.
7535 (scan_futures, cleanup_undead): Be smarter about marking
7536 futures---avoid unnecessary passes through future lists.
7537
756414cf
MD
7538 * futures.h, futures.c: New files; Introduced recycling of
7539 futures. For fine-grained threading this lifts performance to
7540 another level. We can now use parallelization in inner loops of
7541 Guile programs without impossible overhead.
7542
7543 * threads.h, threads.c: Moved futures to their own file.
7544
7545 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7546 (DOT_X_FILES): Added futures.x.
7547 (DOT_DOC_FILES): Added futures.doc.
7548 (modinclude_HEADERS): Added futures.h.
7549
7550 * threads.c, threads.h (scm_i_create_thread): Renamed from
7551 create_thread and made global.
7552
7553 * futures.c (scm_make_future): New procedure.
7554
7555 * eval.c: #include "libguile/futures.h".
7556
7557 * init.c: #include "futures.h"
7558 (scm_init_guile_1): Call scm_init_futures.
7559
7560 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7561
7562 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7563
7564 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7565 functions.
7566
7567 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7568
b4debead
MD
75692003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7570
7571 * threads.c (create_thread): Don't unwind dynwind chain of parent
7572 thread before creation. Just start the new thread with an empty
7573 dynwind chain.
7574
93f26b7b
MD
75752003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7576
7577 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7578
38d8927c
MD
75792003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7580
41c96c32
MD
7581 * threads.c (scm_timed_wait_condition_variable): Support timed
7582 waiting also for simple condition variables.
7583
38d8927c
MD
7584 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7585 of calling the procedure change-object-class.
7586
9cf5d9b7
MD
75872003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7588
7589 * ramap.c (scm_ramapc): Typo in error message.
7590
bbf8d523
MD
75912003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7592
b46fae00
MD
7593 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7594 slots with instance allocation.
7595
bbf8d523
MD
7596 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7597 class.
7598 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7599
7600 * goops.c (scm_generic_function_methods): Support extended
7601 generic functions.
7602
ebf9b47c
MD
76032002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7604
7605 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 7606 Thanks to Neil for pointing this out!
ebf9b47c 7607
14a9ba3f
NJ
76082002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7609
7610 * lang.h: Remove declarations matching definitions removed from
7611 lang.c (just below).
7612
c6a040a8
NJ
76132002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7614
6054d805
NJ
7615 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7616 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7617 and already commented out.
7618
c6a040a8
NJ
7619 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7620 scm_lreadparen): Support reading vectors with Elisp syntax if
7621 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7622 is not currently defined, and there isn't even a configure switch
7623 to enable it yet.)
7624
3742c12f
MV
76252002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7626
7627 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7628 builds work.
7629 (EXTRA_DIST): Added version.h.in.
7630
fb50ef08
MD
76312002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7632
7633 This change makes it possible for one thread to do lazy sweeping
7634 while other threads are running. Now only the mark phase need to
7635 have all threads asleep. We should look further into this issue.
7636 Presently, I've put the locking of scm_i_sweep_mutex at
7637 "conservative" places due to my current lack of knowledge about
7638 the garbage collector. Please feel free to restrict these regions
7639 further to allow for maximal parallelism!
7640
7641 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7642
7643 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7644 scm_gc_register_collectable_memory): Substitute locking of
7645 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7646 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7647 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7648 the single-thread section (which now only contains the mark
7649 phase).
7650 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7651 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7652
7653 * threads.c (gc_section_mutex): Removed.
7654
9ed24633
MD
76552002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7656
0d48aca5
MD
7657 * threads.c (create_thread): Clear parent field in root state in
7658 order not to unnecessarily remember dead threads.
7659
9ed24633
MD
7660 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7661 (scm_trampoline_1, scm_trampoline_2): Use them.
7662
29717c89
MD
76632002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7664
7665 Partial introduction of real plugin interface.
7666
7667 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7668 (EXTRA_DIST): Added threads-plugin.c.
7669
7670 * threads-plugin.h, threads-plugin.c: New files.
7671
7672 * threads.h: #include "libguile/threads-plugin.h".
7673
7674 * threads.c: #include "libguile/threads-plugin.c".
7675
7676 * pthread-threads.c: Temporarily remove debugging functions.
7677
7678 * threads.c, threads.h (scm_yield): Added back.
7679
e29e0b09
MD
76802002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7681
7682 * threads.c (really_launch): Detach before unlocking
7683 thread_admin_mutex in order not to risk being joined.
7684 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7685 thread_admin_mutex locked during GC.
7686
7687 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7688 functions.
7689
0b6843b1 76902002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 7691
6da2dfc4
MD
7692 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7693 support for debugging mutex operations.
7694
1b92fb6b
MD
7695 * threads.c (scm_thread): Removed filed joining_threads.
7696 (thread_print): Print thread number as well as address of thread
7697 structure.
0b6843b1
MD
7698 (scm_join_thread): Bugfix.
7699 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7700 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7701 scm_broadcast_condition_variable): Use the low-level API.
7702 (scm_all_threads): Return copy of thread list (to prevent
7703 unintended destruction).
7704 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 7705
93cd4dcd
MD
7706 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7707 pthread "native" recursive mutex support.
7708
2ff4f181
MD
77092002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7710
28d52ebb
MD
7711 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7712 Simply lock a thread C API recursive mutex.
7713 (SCM_NONREC_CRITICAL_SECTION_START,
7714 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7715 SCM_REC_CRITICAL_SECTION_END): Removed.
7716
7717 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7718 direct calls to scm_rec_mutex_lock / unlock around the three calls
7719 to scm_m_expand_body.
7720
7721 * eval.c, eval.h (promise_free): New function.
7722 (scm_force): Rewritten; Now thread-safe; Removed
7723 SCM_DEFER/ALLOW_INTS.
7724
7725 * pthread-threads.h: Added partially implemented plugin interface
7726 for recursive mutexes. These are, for now, only intended to be
7727 used internally within the Guile implementation.
7728
7729 * pthread-threads.c: New file.
7730
7731 * threads.c: Conditionally #include "pthread-threads.c".
7732
7733 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7734 thread-safe;
7735
7736 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7737 SCM_GLOBAL_REC_MUTEX): New macros.
7738
7739 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7740 macros---use mutexes instead.
7741
7742 * tags.h (SCM_IM_FUTURE): New tag.
7743
7744 * eval.c (scm_m_future): New primitive macro.
7745 (SCM_CEVAL): Support futures.
7746 (unmemocopy): Support unmemoization of futures.
7747
7748 * print.c (scm_isymnames): Name of future isym.
7749
2ff4f181
MD
7750 * version.c: Unmade some changes to my private copy that got
7751 committed by mistake.
7752
392d2833
MD
77532002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7754
e200ddee
MD
7755 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7756 2002-12-10.
7757
392d2833
MD
7758 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7759
7760 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7761 logical place.
7762
7763 * threads.c (create_thread): Remember root object until the handle
7764 of the new thread is on all_threads list.
7765
7766 * root.c (scm_make_root): Moved copying of fluids until after
7767 creation of root handle so that the fluids are GC protected. Also
7768 removed the critical section.
7769
c4c52ebe
MD
77702002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7771
960c408c
MD
7772 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
7773
3cdde9d6 7774 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 7775 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
7776 (scm_realloc): Serialize call to realloc
7777 (scm_calloc): Same for calloc.
7778 Thanks to Wolfgang Jaehrling!
7779 (Now we have to make sure all calls to malloc/realloc are made
7780 through scm_malloc.)
7781
960c408c
MD
7782 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
7783
c4c52ebe
MD
7784 * threads.c (really_launch): Release heap (to prevent deadlock).
7785 (create_thread): Release heap before locking thread admin mutex.
7786
b0dc3d71
MD
77872002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7788
7789 * threads.c (scm_i_thread_invalidate_freelists): New
7790 function.
7791
7792 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
7793
7794 * modules.c (scm_export): Inserted a return statement.
7795
06e80f59
HWN
77962002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7797
7798 * modules.c (scm_export): new function
7799
7800 * gc-card.c: add a note about malloc()/free() overhead.
7801
a12611c3
MD
78022002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7803
7804 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
7805 in srcdir.
7806
c7fabadf
MD
78072002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7808
7809 These changes remove scm_ints_disabled (which hasn't has any
7810 effect in Guile for quite some time).
7811
7812 * async.c, error.h (scm_ints_disabled): Removed.
7813
7814 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
7815 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
7816 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
7817 (old_ints): Removed.
7818
7819 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
7820 critical section.
7821 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
7822 SCM_ALLOW_INTS.
7823
9bc4701c
MD
78242002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7825
52340b65
MD
7826 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
7827 Removed accidental #if 0 around these functions.
7828
9bc4701c
MD
7829 These changes are the start of support for preemptive
7830 multithreading. Marius and I have agreed that I commit this code
7831 into the repository although it isn't thoroughly tested and surely
7832 introduces many bugs. The bugs should only be exposed when using
7833 threads, though. Signalling and error handling for threads is
7834 very likely broken. Work on making the implementation cleaner and
7835 more efficient is needed.
7836
7837 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
7838 (SCM_NONREC_CRITICAL_SECTION_START,
7839 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7840 SCM_REC_CRITICAL_SECTION_END): New macros.
7841 (SCM_CRITICAL_SECTION_START/END): Defined here.
7842
7843 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
7844 the three calls to scm_m_expand_body.
7845
7846 * gc.h: #include "libguile/pthread-threads.h";
7847 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
7848
7849 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
7850 scm_t_key;
7851
7852 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
7853 access.
7854
7855 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
7856
7857 * gc-freelist.c, threads.c (really_launch): Use
7858 SCM_FREELIST_CREATE.
7859
7860 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
7861
7862 * gc.c (scm_i_expensive_validation_check, scm_gc,
7863 scm_gc_for_newcell): Put threads to sleep before doing GC-related
7864 heap administration so that those pieces of code are executed
7865 single-threaded. We might consider rewriting these code sections
7866 in terms of a "call_gc_code_singly_threaded" construct instead of
7867 calling the pair of scm_i_thread_put_to_sleep () and
7868 scm_i_thread_wake_up (). Also, we would want to have as many of
7869 these sections eleminated.
7870
7871 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
7872
7873 * inline.h: #include "libguile/threads.h"
7874
7875 * pthread-threads.h: Macros now conform more closely to the
7876 pthreads interface. Some of them now take a second argument.
7877
7878 * threads.c, threads.h: Many changes.
7879
78802002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7881
7882 * Makefile.am (version.h): Changed $^ --> $< in rule for
7883 version.h.
7884
b2cbe8d8
RB
78852002-12-08 Rob Browning <rlb@defaultvalue.org>
7886
7887 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
7888 (SCM_MINOR_VERSION): use @--@ substitution now.
7889 (SCM_MICRO_VERSION): use @--@ substitution now.
7890 (scm_effective_version): new function prototype.
7891
7892 * version.c (scm_effective_version): new function, also add
7893 effective-version.
7894
7895 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
7896 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
7897 SCM_LIBRARY_DIR.
7898 (version.h): generate this here rather than configure.in. This
7899 approach tracks source edits better (i.e. more immediately).
7900 Might be worth considering for other .in files too.
7901
5441c65c
MV
79022002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
7903
7904 Reorganized thread package selection. A thread package now only
7905 implements a small set of pthread like functions and Guile
7906 implements the rest on top of that. Guile's implementation is
7907 what the "coop-pthreads" package has been previously. Support for
7908 "coop" threads has been removed until I get time to add it again.
7909
7910 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
7911 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
7912 null-threads.c, coop-pthreads.c.
7913 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
7914 pthread-threads.h.
7915
7916 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
7917
7918 * threads.h: Do not include "libguile/coop-defs.h". Include
7919 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
7920 (previously deprecated) C level thread API prototypes. They are
7921 now in the thread package specific headers, "null-threads.h" and
7922 "pthread-threads.h".
7923 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
7924 New.
7925 (scm_threads_init): Removed.
7926 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
7927 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
7928 SCM_I_THREAD_SWITCH_COUNT): Define here.
7929 (scm_single_thread_p): Removed.
7930 (scm_call_with_new_thread): Take two args directly instead of list
7931 of two args.
7932 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
7933 SCM_SET_THREAD_LOCAL_DATA): Define here.
7934
7935 * threads.c: Merged with "coop-pthreads.c".
7936
7937 * null-threads.h: Implement pthread-like API as a set of macros.
7938
7939 * pthread-threads.h: New, implement pthread-like API by deferring
7940 to pthread itself.
7941
7942 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
7943 has been lost in the reorganization.
7944
504d99c5
MD
79452002-12-01 Mikael Djurfeldt <mdj@linnaeus>
7946
7947 The following change makes it possible to move procedure
7948 application dispatch outside inner loops. The motivation was
7949 clean implementation of efficient replacements of R5RS primitives
7950 in SRFI-1.
7951
7952 The semantics is clear: scm_trampoline_N returns an optimized
7953 version of scm_call_N (or NULL if the procedure isn't applicable
7954 on N args).
7955
7956 Applying the optimization to map and for-each increases efficiency
7957 noticeably. For example, (map abs ls) is 8 times faster than
7958 before.
7959
7960 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
7961
7962 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
7963
7964 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
7965 (map, for-each): Handle also application on two args as a special
7966 case; Use trampolines.
7967
7968 Other changes:
7969
7970 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
7971 (subr2oless): Removed.
7972 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
7973 vector GC protected.
7974
7975 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
7976 scm_out_of_range.
7977
63dd3413
DH
79782002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7979
7980 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
7981
4ba5f279
MD
79822002-11-17 Mikael Djurfeldt <mdj@linnaeus>
7983
7984 * debug.c (scm_make_iloc): Added missing "return".
7985
56ae231f
MV
79862002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
7987
7988 * strports.c (scm_eval_string_in_module): Validate second arg to
7989 be a module. Thanks to Arno Peters!
7990
80b28865
DH
79912002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7992
7993 * .cvsignore: remove goops.c
7994
c88b1456
DH
79952002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7996
7997 * modules.c (scm_env_top_level, scm_lookup_closure_module,
7998 module_variable, scm_module_lookup_closure,
7999 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
8000 scm_system_module_env_p): Don't compare SCM values with C
8001 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
8002 over SCM_NFALSEP.
8003
a8a19efc
DH
80042002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8005
8006 * eval.h (SCM_MAKE_ILOC): New macro.
8007
8008 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
8009 the iloc bitpattern here.
8010
76734914
MD
80112002-11-14 Mikael Djurfeldt <mdj@linnaeus>
8012
8013 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
8014 part of the API, otherwise it's difficult to write Guile
8015 extensions using non-blocking I/O => moved #include
8016 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
8017
8018 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
8019 s_unlock_mutex.
8020
8b5b4a75
MV
80212002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
8022
8023 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
8024 are defined in configure.in.
8025
8026 * threads.c: Removed SCM_API from function definitions. SCM_API
8027 is only for declarations.
8028
e5a83084
MD
80292002-11-07 Mikael Djurfeldt <mdj@linnaeus>
8030
9be8bb45
MD
8031 * coop-pthreads.h: Added support for thread specific data to the
8032 generic C API for the coop-pthreads case.
8033
e5a83084
MD
8034 * threads.c, threads.h (scm_cond_init): Undo unintentional API
8035 change.
6c214b62 8036 (scm_cond_broadcast): Added missing function.
e5a83084 8037
7edf178e
MV
80382002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8039
8040 * coop.c (coop_next_runnable_thread): Removed, wich should have
8041 happened when GUILE_ISELECT was hard-wired.
8042
7f5b1b77
MV
80432002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
8044
7caa1b07
MV
8045 * Makefile.am (libguile_la_SOURCES): Added threads.c
8046 (DOT_DOC_FILES): Added threads.doc.
8047 (DOT_X_FILES): Added threads.x.
8048 (EXTRA_libguile_la_SOURCES): Removed threads.c.
8049 (noinst_HEADERS): Added coop-pthreads.c.
8050 (modinclude_HEADERS): Added coop-pthreads.h.
8051
8052 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
8053 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
8054
bb11cbf4
MV
8055 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
8056 Thanks to Bill Schottstaedt!
8057
1d4cbbed
MV
8058 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
8059
7f5b1b77
MV
8060 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
8061 SCM_COPT_THREADS is defined.
8062 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
8063 is defined.
8064
8065 * coop-pthreads.c: Some harmless renamings of internal stuff.
8066 (create_thread): New, generalized version of
8067 scm_call_with_new_thread.
8068 (scm_call_with_new_thread): Use it.
8069 (scm_spawn_thread): New, use create_thread.
8070
d52f53b1
MV
80712002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
8072
8073 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
8074 start testing it now.
8075
8076 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
8077 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
8078 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
8079 is defined.
8080
30f920c3
MV
80812002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
8082
8083 * scmsigs.c (signal_cell_handlers, install_handler_data,
8084 scm_delq_spine_x, really_install_handler, install_handler): New
8085 scheme for triggering signal handlers, to simplify take_signal.
8086 (take_signal): Simplified, to avoid race conditions.
8087 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
8088 hasn't exited yet.
8089
8090 * async.c (scm_async_click): Reset pending_asyncs, handle
8091 signal_asyncs. Don't set cdr of a non-signal async to #f.
8092 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
8093 always. Set pending_asyncs.
8094 (scm_system_async_mark_for_thread): Check that thread has not
8095 exited.
8096 (scm_unmask_signals, decrease_block): Call scm_async_click after
8097 block_asyncs becomes zero.
8098
8099 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
8100 active_asyncs.
8101
8102 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
8103 fields.
8104 * root.c (root_mark): Mark them.
8105 (make_root): Initialize them.
8106
8107 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
8108 USE_COOP_THREADS.
8109 (scm_internal_select): Define one version for USE_COOP_THREADS and
8110 one for USE_NULL_THREADS.
8111 (scm_init_iselect): Likewise.
8112
8113 * inline.h (scm_cell, scm_double_cell): Also allow
8114 USE_COPT_THREADS to not protect the slot initializers.
8115
8116 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
8117 because threads need to be initialized before the stack, but
8118 gsubrs such as scm_timed_condition_variable_wait can only be
8119 created later.
8120
8121 * threads.h: Include "coop-pthreads.h" when requested.
8122 (scm_threads_make_mutex, scm_threads_lock_mutex,
8123 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
8124 not implemented anyway.
8125 (scm_init_thread_procs, scm_try_mutex,
8126 scm_timed_condition_variable_wait,
8127 scm_broadcast_condition_variable, scm_c_thread_exited_p,
8128 scm_thread_exited_p): New prototypes.
8129 (struct timespec): Define if not already defined.
8130 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8131 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8132 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8133 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
8134 deprecated.
8135
8136 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
8137 requested.
8138 (scm_thread_exited_p): New.
8139 (scm_try_mutex, scm_broadcast_condition_variable): Newly
8140 registered procedures.
8141 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
8142 Use the latter as the procedure for "wait-condition-variable",
8143 thus offering a optional timeout parameter to Scheme.
8144 (scm_wait_condition_variable): Implement in terms of
8145 scm_timed_wait_condition_variable.
8146 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8147 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
8148 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8149 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
8150 scm_make_mutex, etc, and deprecate.
8151 (scm_init_threads): Do not create smobs, leave this to
8152 scm_threads_init. Do not include "threads.x" file.
8153 (scm_init_thread_procs): New, include "threads.x" here.
8154
8155 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
8156 scm_null_mutex_lock, scm_null_mutex_unlock,
8157 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
8158 scm_null_condvar_wait, scm_null_condvar_signal,
8159 scm_null_condvar_destroy): Removed.
8160 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
8161 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
8162 scm_cond_destory): Do not define, they are now deprecated and
8163 handled by threads.{h,c}.
8164
8165 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
8166 (scm_threads_init): Create smobs here, using the appropriate
8167 sizes.
8168 (block): Removed, now unused.
8169 (scm_c_thread_exited_p): New.
8170 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
8171 scm_null_mutex_destroy, scm_null_condvar_init,
8172 scm_null_condvar_wait, scm_null_condvar_signal,
8173 scm_null_condvar_destroy): Removed and updated users to do their
8174 task directly.
8175 (scm_try_mutex, timeval_subtract,
8176 scm_timed_wait_condition_variable,
8177 scm_broadcast_condition_variable): New.
8178 (scm_wait_condition_variable): Removed.
8179
8180 * coop-defs.h (coop_m): Added 'level' field.
8181 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8182 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8183 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8184 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
8185 define.
8186 (coop_condition_variable_broadcast): New.
8187
8188 * coop-threads.c (scm_threads_init): Create smobs here, using the
8189 appropriate sizes.
8190 (scm_c_thread_exited_p, scm_try_mutex,
8191 scm_timed_wait_condition_variable,
8192 scm_broadcast_condition_variable): New.
8193 (scm_wait_condition_variable): Removed.
8194
8195 * coop.c (coop_new_mutex_init): Initialize level.
8196 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
8197 level.
8198 (coop_condition_variable_signal): Renamed to
8199 coop_condition_variable_broadcast and reimplemented in terms of
8200 that. Thus...
8201 (coop_condition_variable_broadcast): New.
8202
8203 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
8204
8205 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
8206
087ed40d
MV
82072002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
8208
65a23095
MV
8209 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
8210 of system headers.
8211
087ed40d
MV
8212 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
8213 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 8214 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 8215
5ec1d2c8
DH
82162002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8217
8218 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
8219 scm_definedp to scm_defined_p and deprecated scm_definedp.
8220
100ae50d
DH
82212002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8222
8223 * async.h, async.c (scm_system_async): Fixed deprecation to work
8224 correctly when deprecated features are excluded.
8225
2794cb50
MV
82262002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8227
8228 * async.c (scm_system_async_mark_for_thread): Validate thread
8229 argument.
8230
8231 * coop-threads.c (scm_i_thread_root): Do not validate argument.
8232
8233 * feature.c (scm_init_feature): Don't add 'threads' for
8234 USE_NULL_THREADS.
8235
8236 * inline.h (scm_cell, scm_double_cell): Also allow
8237 USE_NULL_THREADS to not protect the slot initializers.
8238
8239 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
8240 "USE_THREAD".
8241
8242 * Makefile.am (noinst_HEADERS): Added null-threads.c.
8243 (modinclude_HEADERS): Added null-threads.h.
8244
8245 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
8246 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
8247 (scm_init_threads): Use generic type names scm_t_mutex and
8248 scm_t_cond instead of coop_m and coop_c.
8249
8250 * null-threads.c, null-threads.h: New files.
8251
ff810d7a
MV
82522002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
8253
8254 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
8255 This is to support makes that know about "$<" only in pattern
8256 rules, like Sun's make.
8257
a90bdb73
MV
82582002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
8259
8260 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
8261 substitution. Thanks to David Allouche!
8262
e71a8bf2
DH
82632002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8264
8265 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
8266 !SCM_ENABLE_DEPRECATED.
8267
41f77ff5
MV
82682002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8269
504d99c5 8270 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
8271 scm_i_thread_root when USE_THREADS is defined. Use scm_root
8272 otherwise.
8273
8274 * scmsigs.c (take_signal): Only call scm_i_thread_root when
8275 USE_THREADS is defined. Use scm_root otherwise.
8276 (scm_sigaction_for_thread): Ignore THREAD argument when
8277 USE_THREADS is not defined. Also, move THREAD argument defaulting
8278 out of HAVE_SIGACTION section, which was a bug.
8279
6d16b125
MV
82802002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8281
8282 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
8283 signal_handlers, not the closure that is used as the async.
8284 The closure is stored in signal_handler_cells, as previously.
8285
acfa1f52
MV
82862002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
8287
8288 * root.h (scm_root_state): Added 'block_async' slot.
8289 (scm_active_asyncs): Removed abbrev.
8290 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
8291
8292 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
8293 abbrev.
8294
8295 * async.h (scm_call_with_blocked_asyncs,
8296 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8297 scm_c_call_with_unblocked_asyncs): New prototypes.
8298 (scm_mask_signals, scm_unmask_signals): Deprecated.
8299 (scm_mask_ints): Turned into a macro.
8300 * async.c (scm_mask_ints): Removed.
8301 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
8302 this should not be necessary.
8303 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
8304 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
8305 deprecation warning and check for errornous use. Set block_asyncs
8306 instead of scm_mask_ints.
8307 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
8308 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8309 scm_c_call_with_unblocked_asyncs): New.
8310
8311 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
8312 Asyncs are enabled by default.
8313
34010f56
NJ
83142002-10-09 Neil Jerram <neil@ossau.uklinux.net>
8315
8316 * vports.c (scm_make_soft_port): Allow vector argument to carry a
8317 6th element: an input waiting thunk.
8318 (sf_input_waiting): New.
8319
9310d6f2
MV
83202002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
8321
8322 * root.c (root_mark): Mark active_asyncs slot.
8323
8324 * async.c (scm_async_click): Set the cdr of a executed handler
8325 cell to SCM_BOOL_F, not SCM_EOL.
8326 (scm_i_queue_async_cell): Queue the cell at the end of the list,
8327 and only if the handler procedure is not already present.
8328 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
8329 with SCM_BOOL_F.
8330 * scmsigs.c (scm_sigaction_for_thread): Likewise.
8331
ac48c719
RB
83322002-10-04 Rob Browning <rlb@defaultvalue.org>
8333
1360a142
RB
8334 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
8335
8336 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
8337 scm_lt_dlopenext, and scm_lt_dlerror.
8338 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
8339 and scm_lt_dlerror.
8340 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
8341 and scm_lt_dlerror.
8342 (sysdep_dynl_init): switch to scm_lt_dlinit();
8343
8344 * Makefile.am (libguile_la_LIBADD): switch to use
8345 libguile-ltdl.la.
8346
504d99c5 8347 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 8348
497092c9
MV
83492002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
8350
8351 * scmsigs.h (scm_sigaction_for_thread): New prototype.
8352 * scmsigs.c (got_signal): Removed.
8353 (signal_handler_cells, signal_handler_threads): New.
8354 (take_signal): Queue the cell of the signal for the specified
8355 thread. Reset the signal handler on systems that don't have
8356 sigaction.
8357 (sys_deliver_signals): Removed.
8358 (close_1): New.
8359 (scm_sigaction_for_thread): Renamed from scm_sigaction and
8360 extended to also set the thread of a signal and allocate a cell
8361 for it. Keep the Scheme name "sigaction". Check that signum is
8362 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
8363 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
8364 (scm_init_scmsigs): Allocate signal_handler_cells and
8365 signal_handler_threads vectors.
8366
8367 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
8368 that system asnycs and user asyncs are separated. Reimplemented
8369 system asyncs to work per-thread.
8370
8371 * gc.c (scm_init_gc): Do not use scm_system_async.
8372
8373 * async.h (scm_asyncs_pending, scm_set_tick_rate,
8374 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
8375 Removed prototypes.
8376 (scm_i_queue_async_cell): New.
8377
8378 * __scm.h (scm_asyncs_pending_p): Removed.
8379 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
8380 scm_asyncs_pending_p.
8381
8382 * async.h (scm_system_async_mark_for_thread): New prototype.
8383
8384 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
8385
8386 * root.h (scm_root_state): Added new "active_asyncs" slot.
8387 * root.c (scm_make_root): Initialize it to SCM_EOL.
8388
8389 * coop-defs.h (coop_t): Added new "handle" slot.
8390 * coop-threads.c (all_threads, scm_current_thread,
8391 scm_all_threads, scm_i_thread_root): New.
8392 (scm_threads_init): Add main thread to all_threads.
8393 (scheme_launch_thread): Remove thread from all_threads when it
8394 terminates.
8395 (scm_call_with_new_thread): Initialize handle slot of coop_t
8396 structure and add new thread to all_threads.
8397 (scm_spawn_thread): Likewise.
8398
8399 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
8400 * threads.c (scm_current_thread, scm_all_threads): Register as
8401 primitives.
8402
8403 * dynl.c: Use scm_lt_ prefix for libltdl functions.
8404
480fa28d
NJ
84052002-09-29 Neil Jerram <neil@ossau.uklinux.net>
8406
8407 * script.c (scm_compile_shell_switches): Fix bad spelling of
8408 `explicitly' in comment.
8409
84102002-09-28 Neil Jerram <neil@ossau.uklinux.net>
8411
8412 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
8413 Refer to provided? in doc string rather than deprecated feature?.
8414
3553e1d1
GH
84152002-09-24 Gary Houston <ghouston@arglist.com>
8416
8417 * inline.h (scm_double_cell): prevent reordering of statements
8418 with any following code (for GCC 3 strict-aliasing).
8419 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8420 the earlier version of the reordering prevention.
8421
4ad0814a
HWN
84222002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8423
8424 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
8425
e88e4f2e
HWN
84262002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8427
8428 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8429 protection.
8430
1e71eafb
HWN
84312002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8432
8433 * inline.h: include stdio.h
8434
8435 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8436
61ef9c1f
HWN
84372002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8438
dac04e9f
HWN
8439 * gc-segment.c (scm_i_make_initial_segment): check user settings
8440 for sanity.
8441
8442 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8443 sanity.
dac04e9f
HWN
8444
8445 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
8446
ffd72400
HWN
8447 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8448
8449 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
8450 these won't ever wrap around with high memory usage. Thanks to
8451 Sven Hartrumpf for finding this.
ffd72400 8452
5bd4a949
HWN
8453 * gc-freelist.c: include <stdio.h>
8454
61ef9c1f
HWN
8455 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8456
ffd0ef3b
MV
84572002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8458
a27e3d14
MV
8459 * vectors.h (SCM_VECTOR_REF): New.
8460
ffd0ef3b
MV
8461 * snarf.h (SCM_DEFINE_PUBLIC): New.
8462
f8a1712b
MV
84632002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8464
8465 * socket.c (scm_addr_vector): Added size of address to arguments.
8466 Use it to avoid accessing a non-existent path in a sockaddr_un.
8467 Changed all callers.
8468
7200a36b
HWN
84692002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8470
1383773b
HWN
8471 * gc.h: remove DOUBLECELL card flags.
8472
8473 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8474 scm_realloc().
8475
8476 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8477 init loop; handle this from scm_init_card_freelist()
8478
8479 * gc-card.c (scm_init_card_freelist): init bit vector here.
8480
7200a36b 8481 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 8482 num2float.i.c (FLOAT2NUM): idem
7200a36b 8483
9981de3a
HWN
84842002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8485
8486 * eval.h: prepend libguile/ to include path
8487
19647556
MV
84882002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8489
8490 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
9a5fa6e9 8491 years. Thanks to Martin Grabmüller!
19647556 8492
38d1262a
HWN
84932002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8494
8495 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8496 unsigned numbers for computing minimum heap increment. This
8497 prevents weird results when a a negative minimum increment is
8498 computed.
8499
f800ebfb
MV
85002002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8501
8502 * gc_os_dep.c: When we have __libc_stack_end, use that directly
19647556 8503 instead of the old tricks.
f800ebfb
MV
8504
8505 * guile-snarf.in: Do not expect the input file to be the first
8506 argument after the optional "-o" option, just pass everything to
8507 the pre-processor without extracting the input file name.
8508
4a5309c9
HWN
85092002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8510
8511 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
8512 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
8513
f2893a25
HWN
85142002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8515
8516 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8517 Bill Schottstaedt for the bug report
8518
483f518b
MV
85192002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8520
8521 * print.c (scm_iprin1): Print primitives generics always as
8522 "primitive-generic" even when they have no primitive methods yet.
8523
917adc55
GH
85242002-08-17 Gary Houston <ghouston@arglist.com>
8525
8526 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8527 call.
8528
67329a9e
HWN
85292002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8530
85835e59 8531 * ports.c (scm_add_to_port_table): small bugfix.
67329a9e
HWN
8532
8533 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8534 malloc.
8535
8536 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8537 only use SCM_MIN_HEAP_SEG_SIZE.
8538
8539 * ports.c (scm_add_to_port_table): add backwards compatibility
8540 function
8541
8542 * ports.h: use scm_i_ prefix for port table and port table size.
8543
f07c886a
MD
85442002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8545
8546 * vports.c (scm_make_soft_port): Initialize pt variable.
8547
dc61cbc6
MV
85482002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8549
8550 * strports.h (scm_c_eval_string_in_module,
8551 scm_eval_string_in_module): New prototypes.
8552 * strports.c (scm_eval_string_in_module): New, but use
8553 "eval-string" as the Scheme name and make second parameter
8554 optional.
8555 (scm_eval_string): Implement using scm_eval_string_in_module.
8556 (scm_c_eval_string_in_module): New.
8557 Thanks to Ralf Mattes for the suggestion!
8558
da220f27
HWN
85592002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8560
be3ff021
HWN
8561 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8562 message and abort.
8563
8564 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8565
da220f27
HWN
8566 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8567 stead of scm_t_port*. The function now takes a tag argument.
8568
eab1b259
HWN
85692002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8570
8571 * gc.h: add scm_debug_cells_gc_interval to public interface
8572
8573 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8574
8575 * gc.c (scm_i_expensive_validation_check): separate expensive
8576 validation checks from cheap ones.
8577
ba1b2226
HWN
85782002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8579
8580 * read.c (scm_input_error): new function: give meaningful error
8581 messages, and throw read-error
8582
8583 * gc-malloc.c (scm_calloc): add scm_calloc.
8584
39e8f371
HWN
85852002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8586
33138b05
HWN
8587 * tags.h: remove GC bits documentation from the tags table.
8588
39e8f371
HWN
8589 * read.c (INPUT_ERROR): Prepare for file:line:column error
8590 messages for errors in scm_lreadr() and friends.
8591
85922002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8593
8594 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
8595 implementation).
8596 (scm_gc_calloc): new function
8597
26e68795 85982002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
402788a9 8599
5f16b897
HWN
8600 * ports.c (scm_new_port_table_entry): init port entry to 0
8601 completely.
402788a9
HWN
8602
8603 * ports.c (scm_new_port_table_entry): change function from
8604 scm_add_to_port_table. This prevents cells with null-pointers from
8605 being exposed to GC.
8606
504d99c5 8607 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
402788a9 8608 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
c8a1bdc4 8609
504d99c5 8610 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
c2cbcc57
HWN
8611 to gc-stats.
8612
c8a1bdc4
HWN
8613 * numbers.c (big2str): return "0" for 0 iso. ""
8614
c2cbcc57
HWN
8615 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8616 private-gc.h: new file
c8a1bdc4
HWN
8617
8618 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8619 sweeping. More documentation in workbook/newgc.text
8620
aea06b34
MV
86212002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8622
8623 * random.c (rstate_free): Return zero.
8624
35060ae9
DH
86252002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8626
8627 * environments.c (remove_key_from_alist): Removed.
8628
8629 (obarray_remove): Simplified.
8630
6a535440
SJ
86312002-07-24 Stefan Jahn <stefan@lkcc.org>
8632
8633 * continuations.h: ia64: Include <signal.h> before
8634 <sys/ucontext.h>.
8635
bcbd25b7
DH
86362002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8637
8638 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8639
26e68795 86402002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1d1559ce
HWN
8641
8642 * goops.c (scm_compute_applicable_methods): use
8643 scm_remember_upto_here_1 iso scm_remember_upto_here
8644
8645 * macros.c: include deprecation.h
8646
504d99c5 8647 * vectors.c (scm_vector_move_right_x): remove side effect in
1d1559ce 8648 macro arg.
504d99c5 8649 (scm_vector_move_left_x): idem.
1d1559ce
HWN
8650
8651 * net_db.c, posix.c, socket.c: variable naming: change ans to
8652 result.
8653
8654 * sort.c (scm_merge_vector_x): accept vector as argument
8655 iso. SCM*. This is needed for full GC correctness.
8656
8657 * gc.h: undo previous undocumented changes related to #ifdef
8658 GENGC.
8659
26e68795 86602002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
34d19ef6
HWN
8661
8662 * *.c: add space after commas everywhere.
8663
8664 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8665 Document cases where SCM_WRITABLE_VELTS() is used.
8666
8667 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8668 SCM_VELTS() return a const pointer
8669 (SCM_VECTOR_SET): add macro.
8670
3063e30a
DH
86712002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8672
8673 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8674 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8675 Deprecated the special kind of built-in dynamic syntax transformer
8676 that was inaccurately named "macro". Note: The built-in syntax
8677 transformers that are named "mmacro" or "memoizing-macro" still
8678 exist, and it is these which come much closer to what one would
8679 call a macro.
8680
4c5f8e8f
NJ
86812002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8682
8683 * eval.c (unmemocopy): Fix for
8684 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8685 with internal definitions and local-eval).
8686
4f6f9ae3
GH
86872002-07-12 Gary Houston <ghouston@arglist.com>
8688
8689 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8690 defined. They don't do anything useful, especially since the
8691 only case where DYNAMIC_LINKING is undefined seems to be
8692 when --with-modules=no is given to configure, which is basically
8693 requesting that the "dynamic linking module" be omitted.
8694
8695 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8696 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8697
8698 * extensions.c (load_extension): check DYNAMIC_LINKING for
8699 scm_dynamic_call.
8700 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8701 scm_init_dynamic_linking.
8702
c21935e6
MV
87032002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8704
8705 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8706 check for Cygwin when including <winsock2.h>, this is already
8707 check for by configure. Thus, revert change from 2002-07-07.
8708
ee95d597
GH
87092002-07-10 Gary Houston <ghouston@arglist.com>
8710
9540b68f 8711 * eq.c: include <string.h>
ee95d597
GH
8712 * dynl.c: docstring editing.
8713
46732b54
GH
87142002-07-09 Gary Houston <ghouston@arglist.com>
8715
8716 * dynl.c (scm_dynamic_call): docstring editing.
8717
c09d12e0
RB
87182002-07-08 Rob Browning <rlb@defaultvalue.org>
8719
8720 * gc_os_dep.c: HURD fixes.
8721
3f6571eb
MV
87222002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8723
8724 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8725
8726 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8727 this should be compiled for BUILD host.
8728 Override default rule for
8729 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8730 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8731 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8732
8733 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8734 <winsock2.h> on Cygwin even when we have it.
8735
bd987b8e
DH
87362002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8737
8738 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8739 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8740 the code. Full number of arguments checking of closures is
8741 mandatory now. However, the option to disable the checking has
8742 most probably not been used anyway.
8743
8505e285
DH
87442002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8745
bd987b8e
DH
8746 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8747 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8748 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8749 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8750 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8751 (scm_source_properties, scm_set_source_properties_x,
8752 scm_source_property): Removed compile time option SCM_RECKLESS to
8753 clean up the code. Full number of arguments checking of closures
8754 is mandatory now. However, the option to disable the checking has
8755 most probably not been used anyway.
8505e285
DH
8756
8757 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8758 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8759
2ee08a28
GH
87602002-06-30 Gary Houston <ghouston@arglist.com>
8761
732b9327
GH
8762 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8763 do anything useful. Added a comment about need for a mutex if
8764 pre-emptive threading is supported.
8765
2ee08a28
GH
8766 * posix.c (scm_convert_exec_args), dynl.c
8767 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8768 allocate_string_pointers. 2) simplified: don't reallocate the
8769 strings, just make an array of pointers 3) avoid memory leaks on
8770 error 4) let the procedure report errors in its own name.
8771 Consequences: 1) the procedures now assume that SCM strings are
8772 nul-terminated, which should always be the case. 2) Since strings
8773 are not reallocated, it's now possible for strings passed to
8774 dynamic-args-call to be mutated.
8775
c136c920
DH
87762002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8777
8778 * __scm.h, eval.c, eval.h: Removed compile time option
8779 MEMOIZE_LOCALS to clean up the code. Now, caching of local
8780 variable positions during memoization is mandatory. However, the
8781 option to disable the caching has most probably not been used
8782 anyway.
8783
e540802f
MV
87842002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
8785
8786 * print.c (scm_simple_format): Print missing part of format before
8787 ~% control. Thanks to Daniel Skarda!
8788
4c1ffcdd
MV
87892002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
8790
8791 * mkstemp.c: Added exception notice to license statement.
8792
ba1b077b
MV
87932002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
8794
8dc434c7
MV
8795 * numbers.c (mem2ureal): When returning an inexact zero, make sure
8796 it is represented as a floating point value so that we can change
8797 its sign.
8798
ba1b077b
MV
8799 From John W. Eaton <jwe@bevo.che.wisc.edu>
8800
8801 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
8802
74c58131
TTN
88032002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
8804
8805 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
0926d46e 8806 in addition to `i386'. Thanks to Dale P. Smith.
74c58131 8807
8766d4b5
MV
88082002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
8809
8810 * eq.c (real_eqv): New.
8811 (scm_eqv_p): Use it when comparing reals and complexes.
8812
8813 * numbers.c: Include <string.h>, for strncmp.
8814 (mem2complex): Do not create negative NaNs.
8815 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
8816 NaN.
8817 (scm_inexact_to_exact): Signal error when converting a NaN.
74c58131 8818
1d8c3cad
MV
88192002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8820
8821 * posix.c (scm_putenv): Handle removing variables explicitely by
8822 calling unsetenv.
8823
8824 From John W. Eaton.
74c58131 8825
1d8c3cad
MV
8826 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
8827 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
8828 and scm_nan.
8829 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
8830 [SCO && ! HAVE_ISINF] (isinf): New function.
8831 (xisinf, xisnan): New functions.
8832 (IS_INF): Delete.
8833 (isfinite): Define in terms of xisinf.
8834 (scm_inf_p, scm_nan_p): New functions.
8835 (guile_Inf, guile_NaN): New file-scope vars.
8836 (guile_ieee_init): New function.
8837 (scm_inf, scm_nan): New functions.
8838 (idbl2str): Handle Inf and NaN. Remove funny label and
8839 corresponding gotos.
8840 (ALLOW_DIVIDE_BY_ZERO): New macro.
8841 (scm_divide): Allow division by zero to occur if
8842 ALLOW_DIVIDE_BY_ZERO is defined.
8843 Handle bignums and ints as special cases.
8844
8845 Additional stuff by me:
8846
8847 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
8848 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
8849 (iflo2str): Don't output a '+' for negative numbers or for Inf and
8850 NaN. They will provide their own sign.
8851 (scm_divide): Only allow divides by inexact zeros. Dividing by
8852 exact zeros still signals an errors.
74c58131 8853
7a0c65eb
TTN
88542002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
8855
87b72063 8856 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb 8857 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
504d99c5 8858 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb
TTN
8859 Thanks to Andreas Rottmann.
8860
5e423a39
GH
88612002-04-20 Gary Houston <ghouston@arglist.com>
8862
8863 * removal of unused fields in root state (thanks to Christopher
8864 Cramer for pointing out the disuse.)
8865 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1841c44a 8866 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
b6287a25 8867
5e423a39
GH
8868 * root.c (root_mark): don't mark them.
8869 (scm_make_root): don't set them to #f.
8870 * init.c (scm_init_standard_ports): don't initialise with the
8871 default ports.
8872
9d2cce76
MV
88732002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
8874
8875 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
8876 cpp_sig_symbols.c.
8877
88782002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
8879
8880 * guile-snarf.in: Do not clean input file. This would write to
8881 the $(srcdir) during a VPATH build, which is not allowed. It also
8882 isn't needed since it only works when an output filename has been
8883 specified and in that case we don't need to clean the input file
8884 because the output file will already exist.
8885
6f79b6cc
MV
88862002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
8887
8888 * guile-snarf: Install the trap for removing $cleanfile only when
8889 the value of $cleanfile is actually known.
8890
21550b10
RB
88912002-04-10 Rob Browning <rlb@defaultvalue.org>
8892
8893 * .cvsignore: add versiondat.h and *.c.clean.c.
8894
bc76d628
DH
88952002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8896
8897 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
8898 function, replaces macro SRCBRKP.
8899
8900 (SRCBRKP): Deprecated.
8901
8902 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
8903 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
8904 temporary variable.
8905
5132eef0
DH
89062002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8907
8908 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
8909 CHECK_EXIT and removed all references to them.
8910
680516ba
DH
89112002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8912
8913 * debug.h (scm_ready_p, debug_print): Removed declarations.
8914
8915 * eval.c (EVALCELLCAR): Removed.
8916
8917 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
8918 operation from condition.
8919
e2bd68e0
MV
89202002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
8921
8922 * guile-snarf.in: When the output filename is "-", write to
8923 stdout. When no "-o" option is given, use "-" as the output
8924 filename (i.e., stdout). Only 'clean' the inputfile or remove the
8925 output file on error when the output file name is not "-". Define
8926 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
8927
8928 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
8929
ab1f1094
DH
89302002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
8931
8932 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
8933 and the corresponding goto statements. Removed redundant code.
8934
42030fb2
DH
89352002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8936
8937 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
8938 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
8939 Re-enabled handing of rpsubrs and asubrs.
8940
e050d4f8
DH
89412002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
8942
8943 * eval.c (SIDEVAL): Removed.
8944
8945 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
8946 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
8947 argument checking order for set! to locals, variables and symbols.
8948 Improvements to control structure. Removed some uses of arg1 and
8949 arg2 as temporary variables.
8950
a6d344d3
TTN
89512002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
8952
8953 * guile-snarf.in: Remove "--compat=1.4" support.
8954 Add "-d" and "-D" support.
8955
8956 (deprecated_list): New var.
8957 (compat_mode_clean_xxx): Delete.
8958 (grep_deprecated): New func.
8959 ("main"): If "-d" or "-D", call `grep_deprecated'.
8960
3939e9df
NJ
89612002-03-15 Neil Jerram <neil@ossau.uklinux.net>
8962
387d418c
NJ
8963 * hooks.h: Change scm_t_c_hookype_t everywhere to
8964 scm_t_c_hook_type.
8965
bb2c02f2 8966 Docstring fixes:
a6d344d3 8967
bb2c02f2
NJ
8968 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
8969
8970 * ports.c (scm_sys_make_void_port): Use `@file'.
8971
8972 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
8973 than `else'.
8974
8975 * macros.c (scm_makmacro): Don't say that the form replaces its
8976 source, because it doesn't.
8977 (scm_makmmacro): Clarify difference between this and scm_makmacro.
8978
8979 * backtrace.c (scm_display_error), filesys.c (scm_umask,
8980 scm_select, scm_basename), goops.c (scm_method_generic_function),
8981 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
8982 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
8983 spelling mistakes.
8984
3939e9df
NJ
8985 * debug.c (scm_debug_options), eval.c
8986 (scm_eval_options_interface), read.c (scm_read_options): Change
8987 incorrect @var in docstring to @code.
8988
3b3cc781
MV
89892002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
8990
500b0d5b
MV
8991 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
8992
3b3cc781
MV
8993 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
8994 guile-snarf can remove trailing non-init code.
8995
8996 * guile-snarf.in (modern_snarf): Remove everything following and
8997 including "^:^" from the output.
8998
dff98306
DH
89992002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9000
9001 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
9002
9003 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
9004
2287fb53
TTN
90052002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
9006
9007 * guile-snarf.in: Update copyright.
9008 Rewrite to internalize error handling.
9009 Add "--compat=1.4" handling.
9010 Add commentary.
9011
9012 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
9013 (snarfcppopts): New var.
9014 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
9015 (.c.doc): Use $(snarfcppopts).
9016
822250a4
TTN
9017 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
9018 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
9019 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
9020 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
9021 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
9022 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
9023 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
9024 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
9025 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
9026 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
9027 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
9028 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
9029 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
9030 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
9031
b7798e10
DH
90322002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9033
9034 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
9035 The next step will be to remove the union 't' and simplify the
9036 code of SCM_CEVAL that way.
9037
04a98cff
NJ
90382002-03-12 Neil Jerram <neil@ossau.uklinux.net>
9039
9040 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
9041 rreadfds, rwritefds, rexceptfds): Made static.
9042
9043 * gc.c (terminating), fports.c (terminating): Renamed
9044 scm_i_terminating.
9045
16d98032
MV
90462002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
9047
5046250e
MV
9048 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
9049 potential overflow problems. Thanks to John W Eaton!
9050
8794207d
MV
9051 * strop.c (string_capitalize_x): Treat characters as unsigned so
9052 that 8-bit chars work. Thanks to David Pirotte!
16d98032 9053
1d15ecd3
DH
90542002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9055
9056 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
9057 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
9058 proc as temporary variables. Introduced temporary variables with
9059 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9060 by a more explicit predicate in some places.
9061
90622002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
f12745b6
DH
9063
9064 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
9065 Added lots of comments regarding the implementation of #@dispatch.
9066 Changed intra-procedure communication to use t.arg1 instead of
9067 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
9068 variables. Introduced temporary variables with hopefully
9069 descriptive names for clarification. Replaced SCM_N?IMP by a more
9070 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
9071 of computing the expression explicitly. Eliminate now unused
9072 label nontoplevel_cdrxbegin.
9073
9074 * goops.h (SCM_INSTANCE_HASH): New macro.
9075
9076 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
9077
1ebf1566
TTN
90782002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9079
9080 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
9081 "guile-snarf" moved back from `noinst_SCRIPTS'.
9082
020c890c
NJ
90832002-03-08 Neil Jerram <neil@ossau.uklinux.net>
9084
58d233cc
NJ
9085 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
9086 exists when adding a source property other than those that are
9087 handled explicitly, add the new property to the SRCPROPS obj's
9088 plist.
9089
020c890c
NJ
9090 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
9091 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
9092
9093 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
9094 debug.status. It isn't needed, and it can overflow the bits
9095 reserved for it (which may lead to a segv or a GC abort).
9096
3f04400d
DH
90972002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9098
9099 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
9100 side-effecting operations from conditions and macro calls.
9101 Replaced SCM_N?IMP by a more explicit predicate in some places.
9102 Minimized the scope of some variables.
9103
97820583
SJ
91042002-03-02 Stefan Jahn <stefan@lkcc.org>
9105
9106 * convert.i.c: Fixed int <-> long conversions which would have
9107 failed if their sizes were different.
9108
38ace99e
DH
91092002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9110
9111 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
9112 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
9113 as temporary variables. Removed side-effecting operations from
9114 conditions and macro calls. Introduced temporary variables with
9115 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9116 by a more explicit predicate in some places. Removed code that
9117 was conditionally compiled if SICP was defined - which it never
9118 is.
9119
e5cb71a0
DH
91202002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9121
9122 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
9123 Removed some uses of t.arg1 and proc as temporary variables.
9124 Removed side-effecting operations from conditions and macro calls.
9125 Introduced temporary variables with hopefully descriptive names
9126 for clarification. Replaced SCM_N?IMP by a more explicit
9127 predicate in some places.
9128
6a0f6ff3
DH
91292002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9130
9131 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
9132 explicit predicate in some places.
9133
9134 (CHECK_EQVISH): Removed.
9135
9136 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
9137 variables. Removed side-effecting operations from conditions and
9138 macro calls. Introduced temporary variables for clarification.
9139 Sorted if-else-if check for the type of the last form in a list by
9140 frequency. Avoided some unnecessary tail-recursion calls.
9141
228a24ef
DH
91422002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9143
9144 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
9145 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
9146 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
9147 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
9148 scm_cell and all its uses to scm_t_cell in accordance to Guile's
9149 naming scheme for types.
9150
9151 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
9152 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
9153 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
9154 (scm_make_environment), eval.c (scm_closure), fports.c
9155 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
9156 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
9157 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
9158 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
9159 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
9160 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
9161 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
9162 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
9163 scm_alloc_cell to scm_cell.
9164
9165 * environments.c (core_environments_observe), gc.c
9166 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
9167 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
9168 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
9169 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
9170 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
9171 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
9172 (allocate_weak_vector): Renamed scm_alloc_double_cell to
9173 scm_double_cell.
9174
edb810bb
SJ
91752002-02-27 Stefan Jahn <stefan@lkcc.org>
9176
9177 * convert.i.c, convert.c: Better range checking.
9178
9179 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
9180
1ebf1566 9181 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
edb810bb
SJ
9182 Windows (MinGW).
9183
327d4dd3
TTN
91842002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
9185
9186 * Makefile.am: Update path to pre-inst-guile automake frag.
9187
89d7a92c 91882002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
646052c0
DH
9189
9190 * gc.c (scm_gc_sweep): Make it compile even when deprecated
9191 features are excluded.
9192
89d7a92c 91932002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
bac0e232
DH
9194
9195 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
9196
4f2716b6
GH
91972002-02-25 Gary Houston <ghouston@arglist.com>
9198
9199 * convert.c: include <string.h> for convert_i.c.
9200
46151112
RB
92012002-02-24 Rob Browning <rlb@defaultvalue.org>
9202
9203 * .cvsignore: add stamp-h1.
9204
cd328b4f
NJ
92052002-02-21 Neil Jerram <neil@ossau.uklinux.net>
9206
9207 * unif.c (scm_array_to_list): Correct name, which had been
9208 accidentally changed to scm_t_arrayo_list!
9209
c709de7f
MD
92102002-02-20 Mikael Djurfeldt <mdj@linnaeus>
9211
9212 * gc.c (scm_gc_sweep): Print an error message when aborting due to
9213 underflowing scm_mallocated.
9214
c1965d31
MV
92152002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9216
9217 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
9218 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
9219 Reimplemented using the new scm_gc_malloc, etc., functions and
9220 deprecated.
9221
b606945b
TTN
92222002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
9223
9224 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
9225 to `noinst_PROGRAMS'.
9226 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
9227 (noinst_PROGRAMS, noinst_SCRIPTS): New.
9228
7c686ba8
MV
92292002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9230
9231 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
9232 non-zero is returned from a port or smob free function.
9233 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
9234 scm_gc_register_collectable_memory,
9235 scm_gc_unregister_collectable_memory, scm_gc_malloc,
9236 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
9237
9238 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
9239 debug-malloc.c, dynl.c, environments.c, environments.h,
9240 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
9241 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
9242 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
9243 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
9244 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
9245 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
9246 appropriate. Return zero from smob and port free functions.
9247
9248 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
9249
9250 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
9251 messages while the GC is running.
9252 (scm_c_issue_deprecation_warning_fmt): New.
9253
9254 * fports.c (scm_setvbuf): Reset read buffer to saved values when
9255 it is pointing to the putback buffer.
9256
66adc0a6
TTN
92572002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9258
9259 * gsubr.c (create_gsubr): On "too many args" error,
9260 also display arg count and name. Thanks to Bill Schottstaedt.
9261
0187b4f4
TTN
92622002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
9263
9264 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
9265
9266 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
9267 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
9268 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
9269
9270 * guile-snarf-docs-texi.in: Bye bye.
9271
402e687c
MV
92722002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9273
9274 * symbols.c (scm_make_symbol): Fix typo in docstring.
9275
9276 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9277 scm_make_symbol): New prototypes.
9278
319b98ed
MV
92792002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
9280
9281 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
9282 (SCM_SYMBOL_INTERNED_P): New.
9283 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
9284 SCM_MAKINUM since hash values can well be bignums.
9285 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
9286 This signals a interned symbol.
9287 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9288 scm_make_symbol): New.
0187b4f4 9289
319b98ed
MV
9290 * print.c (scm_iprin1): Print uninterned symbols unreadably.
9291
34472dfe
TTN
92922002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
9293
9294 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
9295 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
0187b4f4 9296 Thanks to Dave Love.
34472dfe 9297
1b39c2e3
MV
92982002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
9299
9300 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
319b98ed 9301 This might help to make unintended clashes less likely.
1b39c2e3
MV
9302 (scm_string_to_symbol): Protect the string until the symbols is
9303 created.
9304
1fa86ca5
SJ
93052002-01-31 Stefan Jahn <stefan@lkcc.org>
9306
9307 * convert.c, convert.h, convert.i.c: New files containing C
34472dfe 9308 array to Scheme conversion helpers meant to be replacement
1fa86ca5
SJ
9309 functions for the deprecated gh interface.
9310
9311 * Makefile.am: Setup rules for new `convert.*' files.
9312
af68e5e5
SJ
93132002-01-28 Stefan Jahn <stefan@lkcc.org>
9314
9315 * symbols.c (scm_c_symbol2str): New function, replacement for
9316 `gh_scm2newsymbol()'.
9317
34472dfe 9318 * strings.c (scm_c_substring2str): New function. Proper
af68e5e5
SJ
9319 replacement for `gh_get_substr()'.
9320
9321 * socket.c: Include `stdint.h' if available for the `uint32_t'
9322 declaration.
9323
504d99c5 9324 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
af68e5e5
SJ
9325 compiler warning).
9326
9327 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
9328
c96d76b8 93292002-01-22 Neil Jerram <neil@ossau.uklinux.net>
34472dfe 9330
c96d76b8 9331 Other changes unrelated to Elisp...
34472dfe 9332
c96d76b8
NJ
9333 * eval.c (scm_m_if): Use s_if rather than repeating string literal
9334 "if".
9335 (comments): Fix a few typos.
9336 (scm_for_each): Add parentheses around oddly unparenthesized
9337 if/while conditions.
9338
9339 * read.c (scm_read_opts): Add full stop at end of doc for
9340 `keywords' option.
9341
9342 * script.c (scm_compile_shell_switches): Use scm_str2symbol
9343 instead of gh_symbol2scm.
9344
9345 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
9346 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
9347
9348 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
9349 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
9350
9351 First batch of changes for Elisp support...
9352
9353 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
9354 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
9355 throw.c, vectors.c, weaks.c: Add #include for lang.h.
9356
9357 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
9358 conditionalize compilation and initialization of Elisp support
9359 function.
34472dfe 9360
c96d76b8
NJ
9361 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
9362 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
9363 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
9364 filesys.c (fill_select_type, retrieve_select_type), fluids.c
9365 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
9366 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
9367 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
bbd26b5a
NJ
9368 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
9369 options.c (change_option_setting, scm_options), posix.c
9370 (environ_list_to_c), print.c (scm_iprlist), throw.c
9371 (scm_exit_status), vectors.c (scm_vector), weaks.c
9372 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
c96d76b8
NJ
9373
9374 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
9375 just SCM_FALSEP.
34472dfe 9376
c96d76b8
NJ
9377 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
9378 of just SCM_BOOLP.
9379
9380 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
9381 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
9382 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
9383 (scm_m_atfop): Support function aliasing. Support both function
9384 args, which need transformation, and macro args, which do not.
9385 Add explanatory comments.
9386 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
9387 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
9388 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
9389 SCM_NULLP || SCM_NILP instead of checks against (removed)
9390 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
9391 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
9392
9393 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
9394 scm_m_while, scm_nil_eq): Commented out; I don't think we need
9395 these, but I don't want to remove them yet, just in case.
9396 (scm_init_lang): Define `%nil' variable on Scheme level to hold
9397 Elisp nil value.
9398
9399 * lang.h (SCM_NILP): Test against Elisp nil value instead of
9400 against (removed) scm_lisp_nil.
9401 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
9402 (SCM_NULL_OR_NIL_P): New.
9403
9404 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
9405 SCM_VALIDATE_NULL.
9406
9407 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
9408 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
9409 value).
9410
9411 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
9412 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
9413 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9414 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9415
9416 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9417 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9418 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9419 Numbering shifted down accordingly.
9420 (SCM_ELISP_NIL): New IFLAG.
9421
9422 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
34472dfe 9423
a392ee15
DH
94242002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9425
9426 * eval.c: Removed outdated references to "everr". Improved some
9427 comments.
9428
9429 (scm_deval_args, deval_args): Renamed scm_deval_args to
9430 deval_args, since it is not part of the interface.
9431
9432 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9433 use references to debug.vect[0] before it exists. Add parentheses
9434 to switch statement.
9435
9436 * goops.h: Added local emacs variables.
9437
24933780
DH
94382002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9439
9440 * eval.[ch] (scm_deval_args): Made static.
9441
9442 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9443 test.
9444
9445 * strings.c (scm_c_string2str): Clarified comment. Replaced
9446 THINKME by FIXME for uniformness. Removed question about whether
9447 arguments need to be protected from garbage collection: Arguments
9448 must be protected as any other variable.
9449
f9450cdb
DH
94502002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9451
9452 * procs.h (SCM_CLOSURE_BODY): New Macro.
9453
9454 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9455 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9456 get_slot_value, set_slot_value), procs.c
9457 (scm_procedure_documentation), sort.c (closureless), stacks.c
9458 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9459 SCM_CLOSURE_BODY.
9460
9461 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9462
5dc64f64
MV
94632001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9464
9465 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9466 use "cp" instead.
9467
197ee3d3
MV
94682001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9469
9470 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9471 everywhere.
9472
9473 * continuations.c (scm_make_continuation): Do not retain the
9474 throw_value when the continuation is invoked.
9475
4d4528e7
SJ
94762001-12-08 Stefan Jahn <stefan@lkcc.org>
9477
9478 * strings.c (scm_c_string2str): New function. Converts a
34472dfe 9479 given Scheme string into a C string. Also put in two
4d4528e7
SJ
9480 THINKME's regarding the malloc policy for the missing converter
9481 routines.
9482
98347362
NJ
94832001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9484
9485 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9486 gh_symbol2scm.
9487
1fc8902f
DH
94882001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9489
9490 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9491 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9492
9493 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9494 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9495 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9496 macros.
9497
9498 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9499
9500 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9501 SCM_GC_CELL_* macros when accessing free cells.
9502
4878beec
MV
95032001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9504
9505 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
34472dfe 9506 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
4878beec
MV
9507 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9508 * strings.h (SCM_MAKE_STRING_TAG): New.
9509 * procs.h (SCM_MAKE_CCLO_TAG): New.
9510 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9511
9512 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9513 !SCM_ENABLE_DEPRECATED.
9514
9515 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9516 New.
9517
9518 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9519 signal handlers are allowed to divert the flow of control. Call
9520 scm_system_async_mark_from_signal_handler instead of
9521 scm_system_async_mark.
9522
9523
9524 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9525 scm_alloc_double_cell in their place.
34472dfe 9526
4878beec
MV
9527 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9528 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9529 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9530 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9531 scm_deprecated_newcell and scm_deprecated_newcell2.
9532
9533 gc.c (scm_tc16_allocated): Only define when including deprecated
9534 features.
9535 (scm_debug_newcell, scm_debug_newcell2): Removed.
9536 (scm_init_storage): Do not initialize scm_tc16_allocated.
9537 (scm_init_gc): Do it here.
9538 (allocated_mark): New, from old code.
9539 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
34472dfe 9540
4878beec 9541 * inline.c, inline.h: New files.
34472dfe 9542 * Makefile.am: Added them in all the right places.
4878beec 9543
34472dfe 9544 * _scm.h: Include "libguile/inline.h".
4878beec
MV
9545
9546 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9547 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9548 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9549 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9550 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9551 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9552 scm_alloc_double_cell, respectively.
9553
d2bc7fae
MV
95542001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9555
9556 * modules.c (scm_c_use_module): Adapt to changes to
9557 `process-use-modules'.
9558
5eec27e9
DH
95592001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9560
9561 * numbers.c (scm_divide): Fix more division by zero errors.
9562
8978878f
GH
95632001-11-21 Gary Houston <ghouston@arglist.com>
9564
9565 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9566 obsolete. autogen.sh says:
9567 invalid unused variable name: `OMIT_DEPENDENCIES'
9568
164826d3
DH
95692001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9570
9571 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9572 reporting the bug.
9573
84aff7a7
MV
95742001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9575
9576 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9577 Thanks to Eric Gillespie, Jr!
34472dfe 9578
6063dc1d
SJ
95792001-11-21 Stefan Jahn <stefan@lkcc.org>
9580
34472dfe
TTN
9581 * win32-socket.c (getservent, setservent, endservent,
9582 getprotoent, setprotoent, endprotoent): New functions.
6063dc1d
SJ
9583 Appropriate replacements for M$-Windows.
9584
9585 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9586 these definitions for GUILE_DEBUG.
9587
9588 * net_db.c: Include "win32-socket.h" if compiling with a native
34472dfe
TTN
9589 M$-Windows compiler. Include some pieces of code (protoent and
9590 servent interface) protected by HAVE_* macros when using a
6063dc1d
SJ
9591 native M$-Windows compiler.
9592
351982f6
MV
95932001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9594
9595 * modules.c (scm_c_export): Do nothing when the first argument is
9596 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9597
849038b5
TTN
95982001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9599
9600 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9601 also include `buildstamp'.
9602
5c790b44
RB
96032001-11-18 Rob Browning <rlb@defaultvalue.org>
9604
9605 * version.c
9606 (s_scm_major_version): use SCM_MAJOR_VERSION.
9607 (s_scm_minor_version): use SCM_MINOR_VERSION.
9608 (s_scm_micro_version): use SCM_MICRO_VERSION.
9609 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9610 SCM_MICRO_VERSION.
9611
9612 * version.h.in
9613 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9614 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9615 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9616
694a9bb3
NJ
96172001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9618
9619 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9620 Rewrite docstrings without reference to substring-move-left/right,
9621 since the latter no longer exist.
9622
302c12b4
DH
96232001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9624
9625 * eval.c: Removed bogus comment about acros.
9626
9627 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9628 Minimize scope of local variable. Eliminate dependency on
9629 macro DEBUG_EXTENSIONS.
9630
9631 (s_splicing): New error message string.
9632
9633 (scm_m_body): Issue 'bad body' message rather than 'missing
9634 expression' message.
9635
9636 (scm_m_quote): Eliminate unnecessary copying.
9637
9638 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9639 checking of the body to scm_m_body.
9640
9641 (scm_m_do): Move comment to function header. Rename arg1 to
9642 binding. Made the code a bit easier to read.
9643
9644 (evalcar): Removed.
9645
9646 (iqq): Added a comment. Changed the depth parameter to
9647 unsigned. Use size_t for vector lengths. Make sure vector object
9648 is gc protected as long as its contents are read. Add some syntax
9649 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9650 control structure a bit.
9651
9652 (scm_m_delay): Added comment about the implementation of
9653 scm_m_delay.
9654
9655 (scm_m_define): Add comment about guile's currying define
9656 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9657 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9658
9659 (scm_m_letrec1): Removed. Part of the functionality is taken
9660 over by the new function 'transform_bindings'.
9661
9662 (transform_bindings): New function. Takes over some of the
9663 functionality of removed function 'scm_m_letrec1', namely to split
9664 a list of bindings into a reversed list of variables and a list of
9665 initializers.
9666
9667 (scm_m_letrec): Call 'transform_bindings'.
9668
9669 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9670 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9671 test. Use 'transform_bindings'. Fixed scoping error with named
9672 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9673 Jerram for suggesting the fix). Cleaned up the control structure
9674 a bit.
9675
9676 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9677 unnecessary consing. Eliminated unnecessary
9678 SCM_DEFER/ALLOW_INTS.
9679
9680 (SCM_CEVAL): Un-obfuscated some loops.
9681
cecb4a5e
NJ
96822001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9683
8f85c0c6
NJ
9684 * gc.h (scm_unhash_name): Old declaration removed.
9685
9686 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9687 @code{primitive-eval}.
9688
9689 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9690 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9691 Change @deffnx lines in docstrings to say {Scheme Procedure}
9692 rather than primitive or procedure.
9693
9694 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9695 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9696 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9697 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9698 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9699 (scm_string_split, scm_string_ci_to_symbol), strings.c
9700 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9701 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9702 Docstring fixes and improvements reflecting edits that have been
9703 made in the reference manual source.
9704
9705 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9706 scm_object_property, scm_set_object_property_x): Remove invalid
9707 @deffnx lines for corresponding procedure property primitives.
9708
cecb4a5e
NJ
9709 These changes add a @deffnx C function declaration and function
9710 index entries for each Guile primitive to the copy of the doc
9711 snarf output that is used for reference manual synchronization.
9712 Online help is unchanged.
849038b5 9713
cecb4a5e
NJ
9714 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9715 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9716 name to SCM_SNARF_DOCS.
849038b5 9717
cecb4a5e
NJ
9718 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9719 snarf-check-and-output-texi.
9720
9721 * Makefile.am (guile-procedures.texi): New rule.
9722 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9723 Changed so that the last stage of doc snarfing is now performed
9724 twice, once to produce guile-procedures.txt for online help, and
9725 once to produce guile.texi for reference manual synchronization.
9726
ddea3325
DH
97272001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9728
9729 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9730 safely usable as a single statement followed by a ';', for example
9731 in an if statement.
9732
9733 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9734
72dd0a03
NJ
97352001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9736
9737 * random.c (scm_random_solid_sphere_x,
9738 scm_random_hollow_sphere_x): Correct "shere" typos.
9739
9740 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9741
9742 * version.c (scm_version): Update docstring to include
9743 `micro-version'.
9744
6558eda6
MV
97452001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9746
409b8588
MV
9747 * modules.c (scm_c_export): Call va_end after collecting the
9748 symbols.
9749
adb8c0f2
MV
9750 * strop.h, strop.c (scm_substring_move_left_x,
9751 scm_substring_move_right_x): Removed.
9752
6558eda6
MV
9753 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9754 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9755 configure does.
9756
5d8fc640
MV
97572001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9758
9759 * numbers.c: Document macros to define when including
9760 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9761 now rely on SIZEOF_ macros that have been figured out at
9762 configure time.
9763
9764 * num2integral.i.c: Adapt to new interface.
9765 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9766 target type by casting it and checking whether it is still the
9767 same. Do not try to handle bignums for integral types that are
9768 smaller than fixnums. When handling bignums, collect the
9769 magnituse first into a unsigned type, and correctly check for
9770 overflow.
9771 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
9772 only -MIN_VALUE can still be negative of all negative numbers (in
9773 twos-complement).
9774
849038b5 9775 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
9776
9777 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
9778 HAVE_LONG_LONG depending on whether their size is non-zero.
9779
d6b8cf11
TTN
97802001-11-11 Thien-Thi Nguyen <ttn@glug.org>
9781
9782 * strop.c (scm_string_null_p): Docfix; nfc.
9783 Thanks to Scott Lenser.
9784
9401323e
NJ
97852001-11-07 Neil Jerram <neil@ossau.uklinux.net>
9786
9787 * extensions.c (scm_load_extension): Canonicalize docstring
9788 whitespace.
9789
9790 * unif.c (scm_uniform_array_write), ports.c
9791 (scm_current_output_port, scm_force_output), dynwind.c
9792 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
9793 filesys.c (scm_open, scm_lstat), struct.c
9794 (scm_make_struct_layout), random.c (scm_random,
9795 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
9796 (scm_i_index): Remove superfluous whitespace from end of docstring
9797 lines.
9798
9799 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
9800 strings.c (scm_make_string), variable.c (scm_make_variable,
9801 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
9802 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
9803 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
9804 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
9805 newline at end of docstrings.
9806
9807 * modules.c (scm_set_current_module): Add missing newline to
9808 docstring.
9809
b4e15479
SJ
98102001-11-07 Stefan Jahn <stefan@lkcc.org>
9811
9812 * win32-socket.[ch]: New files. Defines Winsock-API error codes
9813 and makes them available through Guile. That is because the
9814 Winsock-API does not store its errors in `errno' and thus cannot
9815 return error messages via `strerror (errno)'.
9816
9817 * socket.c (scm_init_socket): Initialize `win32-socket' part
9818 here under M$-Windows.
9819
d6b8cf11 9820 * numbers.h: Added missing declaration of
b4e15479
SJ
9821 `scm_sys_check_number_conversions()'.
9822
9823 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
9824 and use in `(strerror)' and `(system-error)'.
9825
d6b8cf11 9826 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
9827 `win32-socket.[ch]' to extra source and header files.
9828
7ab89df1
MV
98292001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
9830
9831 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
9832 a call to turn-on-debugging when --debug has been given instead of
9833 turning it on directly. Also, handle new `--no-debug' option,
9834 which might suppress the call to turn-on-debugging.
9835
0233bfc1
SJ
98362001-11-05 Stefan Jahn <stefan@lkcc.org>
9837
9838 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
9839
8f99e3f3
SJ
98402001-11-04 Stefan Jahn <stefan@lkcc.org>
9841
9842 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 9843 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
9844 correctly and allows a clean build on Win32.
9845
d6b8cf11 9846 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
9847 into FOO.
9848
9849 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
9850 import macros for external libraries (libcrypt, libqthreads,
9851 libreadline and libregex).
9852
9853 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
9854
9855 * posix.c (flock): Added support for flock() in M$-Windows.
9856
9857 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
9858 of __SCM_IMPORT__.
9859
9860 * fports.c (getflags): Differentiate reading and writing pipes
9861 descriptors.
9862
9863 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
9864 M$-Windows.
9865
9866 * coop.c (coop_condition_variable_timed_wait_mutex): Use
9867 conditionalized error code if `ETIMEDOUT' is not available.
9868 (scm_thread_usleep): Remove bogus declaration of `struct timeval
9869 timeout'.
9870
9871 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
9872 belongs. That is because NO_PREPRO_MAGIC gets undefined after
9873 each inclusion of `num2integral.i.c'.
9874 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
9875
4e21fa60
MV
98762001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
9877
9878 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
9879 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
9880
08112c95
MD
98812001-11-02 Mikael Djurfeldt <mdj@linnaeus>
9882
7663c008
MD
9883 * print.c (scm_iprin1): Mark print state as revealed when
9884 dispatching to generic write or display.
9885
08112c95
MD
9886 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
9887
f712d833
MV
98882001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
9889
9890 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 9891
f712d833
MV
9892 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
9893 and win32-dirent.h to extra source and header files. These
9894 include the uname() and the POSIX dirent interface implementation
9895 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
9896 linkers which do not allow unresolved symbols inside shared
9897 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
9898 dependency.
9899
d6b8cf11
TTN
9900 * __scm.h: Defined SCM_API. This macro gets prepended to all
9901 function and data definitions which should be exported or imported
f712d833
MV
9902 in the resulting dynamic link library in the Win32 port.
9903
9904 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 9905 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
9906 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
9907 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
9908 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
9909 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
9910 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 9911 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
9912 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
9913 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
9914 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
9915 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
9916 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
9917 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
9918 vports.h, weaks.h:
9919 Prefixed each each exported symbol with SCM_API.
9920
d6b8cf11 9921 * continuations.c: Added comment about the use of the extern
f712d833
MV
9922 declarations of {get,set}context() functions used in the ia64 port.
9923
9924 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
9925 is meant to be a `unsigned long *'.
9926
9927 * filesys.c: Include `direct.h' if possible. Use local
9928 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
9929 macros for M$-Windows. Implementation of `fstat_Win32()' which is
9930 able to differentiate between sockets and other file descriptors.
9931 Use this function as wrapper in `scm_fstat()'. Fixed typo in
9932 `scm_dirname()'.
9933
9934 * fports.c: Include `io.h' is possible. Put `*fp' into referring
9935 statement block in `scm_fport_buffer_add()'.
9936 Some corrections in `getflags()'.
d6b8cf11 9937
f712d833
MV
9938 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
9939
9940 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
9941 build on Win32. Disable preloaded symbols on Win2 platforms.
9942
9943 * ioext.c, ports.c: Include `io.h' is possible.
9944
9945 * mkstemp.c: Include `process.h' is possible.
9946
9947 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
9948 too.
9949 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
9950
9951 * posix.c: Remove unnecessary dirent includes and defines. Include
9952 local `win32-uname.h' for MinGW. Extern declaration of
9953 `mkstemp()' for systems where it does not exists. Make
9954 `getlogin()' available on M$-Windows.
9955
9956 * scmsigs.c: Made `usleep()' avalable on MinGW.
9957
9958 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
9959
9960 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
9961
9962 * win32-uname.c: Include "win32-uname.h", not "uname.h".
9963
d245ce23
MD
99642001-10-28 Mikael Djurfeldt <mdj@linnaeus>
9965
9966 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
9967 Don't apply scm_uniform_vector_length on arrays.
9968
8ea46249
DH
99692001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9970
9971 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
9972 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
9973 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
9974 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
9975 scm_list_<n> over scm_cons[2]?.
9976
9977 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
9978 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
9979 SCM_C[AD][AD]R instead of explicit form.
9980
9981 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
9982 comparison parameters.
9983
9984 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
9985 !SCM_NULLP instead of SCM_NIMP.
9986
9987 (scm_m_case): Don't copy the form. Renamed proc to clause and
9988 minimized its scope. Renamed x to clauses. Removed side
9989 effecting operation from macro call.
9990
9991 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
9992 minimized its scope. Renamed x to clauses. Minimized the scope
9993 of variable 'len'. Make sure the else clause is treated specially
9994 even in case of '=>' occurences. Don't change the else to #t in
9995 order to be able to distinguish this case in the evaluator. Leave
9996 type checking of the recipient to the evaluator.
9997
9998 (scm_c_improper_memq): Made the comment somewhat clearer.
9999
10000 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
10001 test for SCM_IM_LET at the place of the formal parameters.
10002 Simplified the formal parameter checking.
10003
10004 (scm_m_letstar): Added Comment. Renamed proc to bindings.
10005 Renamed arg1 to binding and minimized its scope. Eliminated
10006 unnecessary consing.
10007
10008 (scm_m_do): Renamed proc to bindings. Minimized the scope of
10009 variable 'len'.
10010
10011 (build_binding_list): New static function.
10012
10013 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
10014 Further, split up the 'letrec' unmemoizing code to the
10015 corresponding parts for 'do', 'let' and 'letrec', adding comments
10016 to each form. Cleanup the handling of the do form (This removes
10017 some *real* code :-).
10018
10019 (SCM_CEVAL): Removed side effecting operation from macro call.
10020 Handle the 'else clause of the 'cond form specially - the symbol
10021 'else is not replaced with #t any more.
10022
8186c4f5
GH
100232001-10-14 Gary Houston <ghouston@arglist.com>
10024
10025 * version.c (scm_version): use sprintf instead of snprintf,
10026 for portability. thanks to Bill Schottstaedt.
10027
89759084
MD
100282001-10-14 Mikael Djurfeldt <mdj@linnaeus>
10029
10030 * read.c (scm_lreadr): When user-defined hash procedure returns
10031 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
10032 an exception. (This prevents parsing of uniform vectors from
10033 interfering with parsing of numbers.)
10034
9c7ce563
MV
100352001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
10036
10037 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
10038 PTRDIFF_MIN. Thanks to Ken Raeburn.
10039
100402001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
10041
10042 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
10043
10044 * eval.c (scm_m_atbind): First try to find the variable without
10045 defining it locally; when it has not been found, define it
10046 locally.
10047
10048 * modules.c (module_variable): Pass over variables that exist but
10049 are unbound.
10050
100512001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10052
10053 * backtrace.c (display_backtrace_file_and_line): Only use
10054 scm_basename when POSIX support is compiled in. Thanks to Chris
10055 Cramer.
10056
1fe5e088
DH
100572001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10058
10059 * numbers.c (mem2uinteger): Return number read so far when coming
10060 across a hexdigit after having read a # or if not reading a hex
10061 value. This will enable the calling code to correctly handle
10062 forms like 1e2. (The background is, that the exponent markers d,
10063 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
10064 providing this patch.
10065
10066 (mem2complex): Fix erroneous double-negation. Now, numbers like
10067 1-i will be read correctly.
10068
68665a97
MD
100692001-10-12 Mikael Djurfeldt <mdj@linnaeus>
10070
10071 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
10072
10073 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
10074
d5cf5324
DH
100752001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
10076
10077 * print.c (scm_print_state_vtable, print_state_pool):
10078 Initialize. These variables are now registered as gc roots.
10079
10080 (scm_current_pstate): Update documentation.
10081
10082 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
10083 scm_prin1, scm_init_print): print_state_pool is registered as a
10084 gc root and thus does not need to be protected by a surrounding
10085 pair any more.
10086
10087 (make_print_state): The car of print_state_pool no longer holds
10088 the scm_print_state_vtable.
10089
10090 (scm_current_pstate, scm_make_print_state, print_circref,
10091 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
10092 SCM_N<foo>.
10093
10094 (scm_prin1): When building lists, prefer scm_list_<n> over
10095 scm_cons[2]?.
10096
10097 (scm_iprlist): Removed a redundant SCM_IMP test.
10098
10099 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
10100
37c56aec
DH
101012001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10102
10103 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
10104
10105 (scm_memcons, scm_mem_to_proc): When building lists, prefer
10106 scm_list_<n> over scm_cons[2]?.
10107
10108 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
10109
10110 (scm_procedure_name): Use SCM_CADR instead of explicit form.
10111
10112 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
10113 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
10114 for some reason his patch didn't make it into the cvs.
10115
79d34f68
DH
101162001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
10117
10118 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
10119 little bit - should even be somewhat more accurate now.
10120
5e137c65
RB
101212001-10-08 Rob Browning <rlb@defaultvalue.org>
10122
10123 * gc.c: support ia64 register backing store.
10124 (SCM_MARK_BACKING_STORE): new macro.
10125
10126 * continuations.h: support ia64 register backing store.
10127 (struct scm_t_contregs): add ia64 register backing store.
10128
10129 * continuations.c: support ia64 register backing store.
10130 (continuation_mark): mark ia64 register backing store.
10131 (continuation_free): free ia64 register backing store.
10132 (scm_make_continuation): capture ia64 register backing store.
10133 (copy_stack_and_call): copy ia64 register backing store.
10134
ee083ac2
DH
101352001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10136
10137 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
10138 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
10139 instead of SCM_NIMP to test for that case.
10140
10141 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
10142 scm_t_bits instead of long.
10143
71dcdbf9
MV
101442001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10145
10146 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
10147 SCM_T_SIGNED_BITS_MIN): New.
10148 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
10149 Use them to make these macros computable by the preprocessor.
10150
10151 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
10152 whether the integral type fits in a fixnum, not the compiler.
10153 This removes a spurious compiler warning. Also, honor the
10154 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
10155 needed for `long long's.
10156
10157 * numbers.c: Define NO_PREPRO_MAGOC when including
10158 num2integral.c.i for `long long' and `signed long long'.
10159
152812c0
MD
101602001-10-06 Mikael Djurfeldt <mdj@linnaeus>
10161
10162 These changes fixes a race condition in the Guile coop - pthread
10163 compatibility code.
d6b8cf11 10164
152812c0
MD
10165 * coop.c (mother_awake_p): New variable.
10166 (coop_create): Set mother_awake_p before creating or signalling
10167 mother; wait until mother is going to sleep before returning.
10168 (mother): Reset mother_awake_p before going to sleep.
10169
11d49f54
DH
101702001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10171
10172 * options.c (protected_objects, scm_init_options): The content of
10173 protected_objects is now protected from garbage collection using
10174 scm_gc_register_root instead of scm_permanent_object.
10175
10176 (get_option_setting): New static function that computes an option
10177 setting as it was formerly done in the function scm_options.
10178
10179 (get_documented_option_setting): New static function that
10180 returns option documentation as it was formerly done in the
10181 function scm_options. Note that documentation C strings are no
10182 longer precomputed into SCM objects. Instead, they are converted
10183 into SCM strings every time get_documented_option_setting is
10184 called.
10185
10186 (change_option_setting): New static functions that modifies the
10187 option setting as it was formerly done in the function
10188 scm_options. The function is now exception safe, i. e. won't
10189 cause a memory leak when interrupted. Further, only non-immediate
10190 option values are added to the protection list.
10191
10192 (scm_options): This function now has only the purpose to dispatch
10193 to to get_option_setting, get_documented_option_setting or
10194 change_option_setting, depending on the arguments given to
10195 scm_options.
10196
10197 (scm_init_opts): Don't convert documentation C strings into SCM
10198 strings. Further, don't protect any object values: They _must_
10199 be immediate values, otherwise there is no guarantee that they
10200 have not been collected before anyway.
10201
10202 * options.[ch] (scm_t_option): Made type unsigned, name into a
10203 constant char* and val into a scm_t_bits type.
10204
10205 (scm_options, scm_init_opts): The number of options is guaranteed
10206 to be larger or equal to zero. Thus, the type is changed to
10207 unsigned.
10208
3dbacabc
DH
102092001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10210
10211 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
10212 testing an unsigned value for being >= 0.
10213
14282d0f
DH
102142001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10215
10216 * numbers.h: Removed old comment about using SCM_CAR to access
10217 non-pair cells.
10218
10219 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
10220 the return value is signed. Thanks to Brian Crowder for the bug
10221 report.
10222
10223 (SCM_SRS): Avoid unnecessary casting and don't unpack input
10224 values. With this patch, SCM_SRS can be safely used for other
10225 types than scm_t_signed_bits. However, it should still better be
10226 an internal macro and thus be renamed to SCM_I_SRS.
10227
10228 (SCM_MAKINUM, SCM_INUM): Use proper casting.
10229
2dbec7b5
GH
102302001-10-03 Gary Houston <ghouston@arglist.com>
10231
10232 * continuations.h, unif.h: in the descriptions of the bit patterns
10233 of the heap cells, make bit 0 the least significant.
10234
cf4ee841
TTN
102352001-09-25 Thien-Thi Nguyen <ttn@glug.org>
10236
10237 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
10238 Thanks to Golubev I. N.
10239
4a151b3d
GH
102402001-09-25 Gary Houston <ghouston@arglist.com>
10241
10242 * ports.c (scm_drain_input): extended the docstring. thanks to
10243 Alex Schroeder and Thien-Thi Nguyen.
10244
581ded70
MD
102452001-09-23 Mikael Djurfeldt <mdj@linnaeus>
10246
10247 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
10248 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
10249 macros. (The NUM names might soon change.)
10250
10251 * numbers.h: Added missing declarations.
10252
5437598b
MD
102532001-09-22 Mikael Djurfeldt <mdj@linnaeus>
10254
10255 * Makefile.am: Distribute num2float.i.c.
10256
10257 * num2float.i.c: New file, multiply included by numbers.c, used
10258 to "templatize" the float <-> num conversion routines.
10259
10260 * numbers.c: New functions: scm_num2float, scm_float2num,
10261 scm_num2double, scm_double2num.
10262
0b073f0f
RB
102632001-09-21 Rob Browning <rlb@defaultvalue.org>
10264
10265 * .cvsignore: really add version.h
10266
10267 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
10268 Otherwise it fails on the alpha. However, we might rather choose
10269 this size conditionally.
10270
10271 * numbers.c (scm_gcd): change "k" to a long from an int.
10272 Otherwise it fails on the alpha. However, we might rather choose
10273 this size conditionally.
10274
10275 * error.c (scm_wta): coerce char* to intptr_t before int
10276 assignment.
10277
10278 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
10279 int.
10280
10281 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
10282
2830fd91
MD
102832001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10284
10285 * numbers.c (scm_integer_expt): Accept inexact integer in second
10286 argument. (Thanks to Bill Schottstaedt.)
10287
c13f0a90
RB
102882001-09-20 Rob Browning <rlb@defaultvalue.org>
10289
10290 * .cvsignore: add version.h
10291
10292 * versiondat.h.in: removed (obsolete).
10293
10294 * version.h.in: renamed from version.h.
10295 (SCM_GUILE_MAJOR_VERSION): new public macro.
10296 (SCM_GUILE_MINOR_VERSION): new public macro.
10297 (SCM_GUILE_MICRO_VERSION): new public macro.
10298
10299 * version.h: renamed to version.h.in.
10300
10301 * version.c
10302 (scm_major_version): support integer *_VERSION macros.
10303 (scm_minor_version): support integer *_VERSION macros.
10304 (scm_micro_version): support integer *_VERSION macros.
10305 (scm_version): support integer *_VERSION macros.
10306
147c18a0
MD
103072001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10308
10309 * error.c, error.h: Made error keys globally accessible.
10310 Applications might want to test for these or use them in a direct
10311 call to scm_error.
10312
10313 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
10314 routines are passed an inexact. This change in behavior is
10315 motivated by concordance with R5RS: It is more common that a
10316 primitive doesn't want to accept an inexact for an exact.
10317
662c5539
DH
103182001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10319
10320 The following patch partially undoes my patch from 2001-06-30,
10321 where I added the function scm_gc_mark_cell_conservatively. The
10322 function is buggy, since it breaks guile during conservative
10323 marking if a pointer on the stack points directly into the list of
10324 free cells on the heap: With conservative cell marking this will
10325 cause the whole free list to be scanned and marked - boom!
10326
10327 * gc.c (allocated_mark, MARK, heap_segment,
10328 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 10329 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
10330 scm_gc_mark_cell_conservatively and update the corresponding
10331 comments and uses accordingly. Thanks to Christopher Cramer for
10332 the patch. (Minor corrections by me.)
10333
6c1b7628
GH
103342001-09-15 Gary Houston <ghouston@arglist.com>
10335
10336 * root.h (scm_root_state): removed the continuation_stack and
10337 continuation_stack_ptr members, which have no apparent purpose.
10338 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
10339 removed.
662c5539 10340
6c1b7628
GH
10341 * root.c (root_mark), init.c (restart_stack, start_stack), gc
10342 (scm_igc): remove all references to contination_stack and
10343 continuation_stack_ptr, avoiding allocation of a vector and
10344 useless processing during gc.
10345
455c0ac8
DH
103462001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10347
10348 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
10349
10350 (TCONC_IN): Make sure that the cell word 0 is initialized last.
10351
10352 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
10353
10354 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
10355
10356 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
10357 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
10358
22ba637b
DH
103592001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10360
10361 * guardians.c (mark_dependencies_in_tconc,
10362 whine_about_self_centered_zombies, scm_init_guardians): Register
10363 the static global variable `self_centered_zombies' via
10364 scm_gc_register_root, to make some cdr-ing unnecessary.
10365
c3c4d801
DH
103662001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10367
10368 * backtrace.c (display_backtrace_file,
10369 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
10370 values, use SCM_FALSEP when comparing SCM values against #f.
10371 Thanks to Rob Browning for the bug report.
10372
b00418df
DH
103732001-09-12 Martin Baulig <martin@home-of-linux.org>
10374
10375 * strings.[ch] (scm_str2string): New function.
10376
a0d34a0b
MV
103772001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
10378
10379 * gc.c (scm_done_free): Always subtract size from scm_mallocated
10380 when computing nm, even if it's negative.
10381 (scm_must_malloc): Abort on overflow of scm_mtrigger.
10382 (scm_must_realloc): Likewise.
10383
b10586f0
ML
103842001-09-01 Michael Livshin <mlivshin@bigfoot.com>
10385
10386 * numbers.c (scm_sys_check_number_conversions): new function,
10387 defined if Guile is compiled in debugging mode. currently checks
10388 `scm_num2ulong', should check much much more.
10389
10390 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
10391 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 10392
8c494e99
DH
103932001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10394
10395 * __scm.h: Added new section about compile time selectable
10396 features.
10397
10398 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
10399 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
10400 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
10401 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
10402 Removed.
10403
10404 * deprecation.c (scm_include_deprecated_features): Simplified.
10405
10406 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9a5fa6e9 10407 `SCM_IMP' instead of `!SCM_CELLP´.
8c494e99
DH
10408
10409 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
10410 Extract side-effecting operations from macros.
10411
10412 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
10413 scm_top_level_lookup_closure_var and scm_system_transformer.
10414
10415 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10416
10417 (heap_segment): Use CELL_P instead of SCM_CELLP.
10418
10419 * init.c (start_stack): Don't initialize
10420 scm_top_level_lookup_closure_var and scm_system_transformer.
10421
10422 * modules.c (scm_set_current_module): Don't access
10423 scm_top_level_lookup_closure_var and scm_system_transformer.
10424
10425 (scm_sym2var): Don't call scm_variable_set_name_hint.
10426
10427 (scm_post_boot_init_modules): Removed deprecated initializations.
10428
10429 * print.c (scm_ipruk): Don't access cell contents of non cells.
10430
10431 * strings.c (scm_string_set_x): All strings are writable.
10432
10433 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10434 type. There is only one string type now.
10435
10436 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10437
10438 * tags.h: Remove comments about two different string types.
10439
10440 (SCM_CELLP, SCM_NCELLP): Deprecated.
10441
10442 * variable.c (make_variable): Remove code variant for vcells.
10443
10444 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10445 SCM_VARIABLE_LOC): Remove code variant for vcells.
10446
10447 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10448 SCM_ENABLE_DEPRECATED with the logic reversed.
10449
10450 * dynl.c (moddata, registered_mods), dynl.[ch]
10451 (scm_register_module_xxx, scm_registered_modules,
10452 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10453 (*top-level-lookup-closure*), eval.[ch]
10454 (scm_top_level_lookup_closure_var, scm_system_transformer,
10455 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10456 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10457 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10458 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10459 scm_unprotect_object), modules.c (root_module_lookup_closure,
10460 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10461 beautify_user_module_x_var, try_module_autoload_var,
10462 scm_module_full_name), modules.[ch] (scm_the_root_module,
10463 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
cf4ee841 10464 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
8c494e99
DH
10465 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10466 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10467 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10468 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10469 scm_make_shared_substring), tags.h (scm_tc7_substring,
10470 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10471 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10472 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10473 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10474 Removed.
10475
10476 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10477 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10478 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10479 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10480 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10481 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10482 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10483 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10484 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10485 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10486 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10487 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10488 (setzone, scm_strftime, scm_strptime), vports.c
10489 (scm_make_soft_port): Remove calls to
10490 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10491 gone, all strings are 0-terminated anyway.
10492
10493 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10494 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10495 double inclusion of the same headers to the SCM_<filename>_H
10496 format.
10497
10498 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10499 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10500 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10501 any more.
10502
10503 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10504 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10505 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10506 !SCM_<foo> over SCM_N<foo>.
10507
dee01b01
DH
105082001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10509
10510 * Makefile.am: Remove references to symbols-deprecated.c.
10511
10512 * symbols.c (scm_init_symbols): Don't initialize deprecated
10513 symbol functions.
10514
10515 * symbols-deprecated.c: Removed.
10516
10517 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10518 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10519 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10520 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10521 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10522 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10523 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10524 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10525 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10526 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10527 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10528 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10529 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10530 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10531 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10532 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10533 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10534 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10535 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10536 scm_intern0, scm_sysintern, scm_sysintern0,
10537 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10538 scm_string_to_obarray_symbol, scm_intern_symbol,
10539 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10540 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10541 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10542 vectors.[ch] (scm_vector_set_length_x): Removed.
10543
10544 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10545 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10546 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10547 Renamed the macros that are defined to inhibit double inclusion of
10548 the same headers to the SCM_<filename>_H format.
10549
10550 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10551 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10552 SCM_N<foo>.
10553
b29058ff
DH
105542001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10555
10556 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10557 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10558 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10559 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10560 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10561 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10562 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10563 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10564 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10565 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10566 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10567 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10568
10569 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10570 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10571 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10572 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10573 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10574 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10575 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10576 double inclusion of the same headers to the SCM_<filename>_H
10577 format.
10578
10579 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10580 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10581 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10582 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10583 !SCM_<foo> over SCM_N<foo>.
10584
0527e687
DH
105852001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10586
10587 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10588 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10589 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10590 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10591 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10592 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10593 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10594 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10595 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10596 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10597 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10598 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10599 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10600 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10601 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10602 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10603 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10604 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10605 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10606 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10607 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10608 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10609 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10610 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10611 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10612 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10613 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10614 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10615 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10616 the macros that are defined to inhibit double inclusion of the
10617 same headers to the SCM_<filename>_H format.
10618
fada26b2
MV
106192001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10620
10621 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10622 "scm_t_portable" with "scm_port_table" which was an artifact from
10623 the great "scm_*_t -> scm_t_" renaming.
10624
e4d1c1ea
TTN
106252001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10626
10627 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10628 used; nfc. Thanks to Bill Schottstaedt.
10629
10630 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10631 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10632 Thanks to Chris Cramer.
10633
b573e744
MV
106342001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10635
10636 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10637
10638 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10639 dynamic scope.
10640 * dynwind.h (scm_swap_bindings): Declare.
10641 * dynwind.c (scm_swap_bindings): Make non-static.
10642
8a3e715b
ML
106432001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10644
10645 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10646 doing exactly nothing about them). thanks Neil!
10647
cf504ee0
NJ
106482001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10649
10650 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
ec2667f0 10651
43b83b54
TTN
106522001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10653
10654 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10655 (proto) in the case when either `GUILE_DEBUG' or
10656 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10657
10658 (map_free_list): Fix typo: Ref `f' correctly.
10659
10660 Thanks to Chris Cramer.
10661
ab4cd34b
RB
106622001-08-15 Rob Browning <rlb@defaultvalue.org>
10663
10664 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10665 variables.
10666 (libpath.h): change libguileversion to libguileinterface.
10667
b754e3d1
MV
106682001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10669
10670 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10671 ChangeLog-2000. Thanks to Daniel Skarda!
10672
8b1d12c7
ML
106732001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10674
10675 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10676 do it from the Makefile.
10677
10678 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10679 are of a reasonable size.
10680
baffb19f
NJ
106812001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10682
10683 * stacks.c (scm_make_stack): Improve docstring by explaining use
10684 of cutting args.
10685
c1151355
MV
106862001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10687
10688 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10689 scm_char_whitespace_p, scm_char_upper_case_p,
10690 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10691 characters to fulfill isascii in addition to the primary
10692 predicate.
10693
3c9a524f
DH
106942001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10695
10696 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10697 scm_istr2flo, scm_istring2number): Removed.
10698
10699 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10700 SCM_SLOPPY_<foo>.
10701
10702 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10703 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10704 Added.
10705
10706 (scm_string_to_number): Use new number parser.
10707
10708 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10709 handles complex numbers.
10710
10711 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10712 SCM_<foo>_H.
10713
10714 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10715 SCM_N<pred>.
10716
10717 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10718
10719 (scm_i_mem2number): Added.
10720
10721 (scm_exact_to_inexact): Changed signature.
10722
10723 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10724 here instead of within scm_i_mem2number. Call scm_i_mem2number
10725 instead of scm_istr2int and scm_istring2number.
10726
01f11e02
DH
107272001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10728
10729 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10730 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10731 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10732 !SCM_<pred> over SCM_N<pred>.
10733
10734 (scm_eval_body): Remove side effecting code from macro call.
10735
10736 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10737 SCM_NIMP test.
10738
6cf69537
DH
107392001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10740
10741 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10742
54866b6c
MV
107432001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10744
10745 Removed vcell slot from structs.
43b83b54 10746
54866b6c
MV
10747 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10748 subsequent indices.
10749
10750 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10751 zero. Use scm_vtable_index_layout instead of "0" when accessing
10752 said slot.
10753 (scm_init_struct): Remove vcell slot layout code from
10754 required_vtable_fields.
10755
10756 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10757
10758 * goops.c (build_class_class_slots): Removed vcell slot
10759 definition.
10760
10761 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10762 Removed vcell slot layout code.
10763 (scm_si_vcell): Removed.
10764
5b54c4da
MV
107652001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10766
a0f5718e 10767 "Glocs" have been removed.
43b83b54 10768
a0f5718e
MV
10769 * tags.h: Update tag system docs.
10770 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
10771 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
10772 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
10773 or SCM_NCONSP, respectively.
10774
10775 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
10776 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
10777 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
10778
10779 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
10780 tell glocs from structs.
43b83b54 10781
a0f5718e
MV
10782 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
10783
10784 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
10785 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
10786 instead of with glocs.
10787 (EVALCAR): Do not test for glocs.
10788 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
10789 condition.
10790 (scm_unmemocar): Do not handle glocs.
10791 (scm_m_atfop): Memoize as a variable, not as a gloc.
10792 (scm_eval_args, scm_deval_args): Do not handle glocs.
10793 (scm_ceval, scm_deval): Likewise.
43b83b54 10794
a0f5718e
MV
10795 * eval.h (SCM_XEVALCAR): Do not test for glocs.
10796 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
10797 Removed.
10798
10799 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
10800
10801 * dynwind.c (scm_swap_bindings): Likewise.
10802 (scm_dowinds): Updated to recognize lists of variables instead of
10803 lists of glocs.
10804
10805 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
10806
43b83b54 10807
5b54c4da
MV
10808 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
10809 where it is needed.
43b83b54 10810
3c3db128
GH
108112001-07-25 Gary Houston <ghouston@arglist.com>
10812
10813 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
10814 docstrings to reflect the n-ary implementation.
10815
dd29a169
MV
108162001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10817
10818 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
10819 value of a variable, not the plain "return" statement.
10820
f5fe6c2f
MV
108212001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
10822
10823 * eval.c: Allow variables in memoized code (in addition to glocs).
10824 (scm_lookupcar): Handle variables in lost races. Replace symbol
10825 with variable directly, do not make a gloc.
10826 (scm_unmemocar): Rewrite variables using a reverse lookup, just
10827 like glocs.
10828 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
10829 the main switch.
10830
ee0c7345
MV
108312001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10832
6d9ad98a
MV
10833 * variable.c (scm_i_variable_print): Use "value" instead of
10834 "binding" since a binding is the mapping between symbols and
10835 variables, not between variables and their values.
10836
ee0c7345
MV
10837 * tags.h (scm_tc7_variable): New.
10838 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
10839 * print.c (scm_iprin1): Likewise.
10840
10841 * variable.h (scm_tc16_variable): Removed.
10842 (SCM_VARIABLEP): Test for new tc7 code.
10843 (scm_i_variable_print): New.
10844 * variable.c (scm_tc16_variable): Removed.
10845 (variable_print): Renamed to scm_i_variable_print and made
10846 non-static.
10847 (variable_equal_p): Removed.
10848 (make_variable): Construct a tc7 object instead of a smob.
10849 (scm_init_variable): Do not register smob.
43b83b54 10850
f3805ebb
MV
108512001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
10852
10853 * tags.h: Include inttypes.h when we have it.
10854
108552001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
10856
10857 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
10858 is taken by the new SCM_IM_CALL_WITH_VALUES.
10859 * print.c (scm_isymnames): Update table accordingly.
43b83b54 10860
6a1677a3
GH
108612001-07-22 Gary Houston <ghouston@arglist.com>
10862
10863 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
10864 SCM_MAKINUM to convert regoff_t value to SCM.
10865
1bed8c28
GH
108662001-07-21 Gary Houston <ghouston@arglist.com>
10867
10868 * scmsigs.c: include sys/time.h for itimer stuff.
10869
e658215a
RB
108702001-07-19 Rob Browning <rlb@defaultvalue.org>
10871
10872 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
10873
10874 * c-tokenize.lex: add option %nounput to quiet warning.
10875 Add prototype for yylex to quiet warning.
10876
10877 * scmconfig.h.in: add flags for setitimer and getitimer.
10878
10879 * scmsigs.h (scm_init_scmsigs): new prototype.
10880 (scm_init_scmsigs): new prototype.
10881
10882 * scmsigs.c (s_scm_setitimer): new function.
10883 (s_scm_setitimer): new function.
10884
58ade102
MG
108852001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10886
10887 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
10888 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
10889 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
10890 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
10891 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
10892 guile-func-name-check.in, guile-snarf-docs-texi.in,
10893 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
10894 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
10895 objprop.c, objprop.h, options.c, options.h, random.h,
10896 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
10897 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
10898 version.c, version.h: Updated copyright notice.
10899
6b80d352
DH
109002001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10901
10902 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
10903 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
10904 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
10905 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
10906 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
10907 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
10908 sym_environment, scm_sym_change_class): New static variables to
10909 hold predefined symbols.
10910
10911 (build_class_class_slots): Build the list using scm_list_n
10912 instead of cons. Also, slots are already created as lists, thus
10913 making a call to maplist unnecessary.
10914
10915 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
10916 scm_class_direct_subclasses, scm_class_direct_methods,
10917 scm_class_precedence_list, scm_class_slots, scm_class_environment,
10918 scm_method_procedure, create_standard_classes, purgatory): Use
10919 predefined symbols.
10920
10921 (build_slots_list, compute_getters_n_setters,
10922 scm_sys_initialize_object, scm_sys_inherit_magic_x,
10923 get_slot_value_using_name, set_slot_value_using_name,
10924 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
10925 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
10926 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
10927
10928 (scm_sys_prep_layout_x): Minimize variable scopes.
10929
10930 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
10931 scm_sys_fast_slot_set_x): Fix signedness.
10932
10933 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
10934 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
10935 scm_memoize_method, scm_wrap_object): Use packing and unpacking
10936 when converting to and from SCM values.
10937
10938 (scm_enable_primitive_generic_x): Add rest argument checking.
10939
10940 (map, filter_cpl, maplist, scm_sys_initialize_object,
10941 scm_sys_prep_layout_x, slot_definition_using_name,
10942 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
10943 call_memoize_method, scm_make, scm_make_class): Prefer explicit
10944 predicates over SCM_N?IMP tests.
10945
10946 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
10947 checking.
10948
10949 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
10950 alias.
10951
63bcad19
DH
109522001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
10953
10954 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
10955
10956 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
10957
10958 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
10959
10960 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
10961
4d6aae71
ML
109622001-07-12 Michael Livshin <mlivshin@bigfoot.com>
10963
10964 * strings.c (s_scm_string): fix arg position in assert.
10965
4b8ec619
GH
109662001-07-11 Gary Houston <ghouston@arglist.com>
10967
10968 * strports.c (st_write): use memcpy, not strncpy. thanks to
10969 Dale P. Smith.
10970
dbb640bd
TTN
109712001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
10972
10973 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
10974 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
10975 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
10976 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
10977 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
10978 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
10979 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
10980 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
10981 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
10982 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
10983 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
10984 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
10985 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
10986 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
10987 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
10988 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
10989 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
10990 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
10991 weaks.c, weaks.h: Remove "face-lift" comment.
10992
fd6c6321
RB
109932001-07-08 Rob Browning <rlb@defaultvalue.org>
10994
10995 * .cvsignore: add stamp-h.in.
10996
f91e4547
MG
109972001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10998
10999 * hooks.c (scm_make_hook, scm_add_hook_x),
11000 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
11001 value info to the docstrings.
11002
7beabedb
MG
110032001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11004
11005 Some more compatibility patches for Windows.
dbb640bd 11006
7beabedb
MG
11007 * posix.c (getlogin): getlogin() implementation for Windows.
11008
11009 * backtrace.c, ioext.c: Include <stdio.h>.
11010
11011 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
11012 exist.
11013
11014 * cpp_sig_symbols.in: Added SIGBREAK.
11015
0d0560d0
MV
110162001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
11017
11018 * strports.c (scm_read_0str, scm_eval_0str): Call
11019 scm_c_read_string and scm_c_eval_string respectively, not
11020 themselves. Thanks to Dale P. Smith!
11021
9a97e362
DH
110222001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11023
11024 * unif.c (scm_array_set_x): The variable args does not
11025 necessarily have to be a list. Further, got rid of a redundant
11026 SCM_NIMP test.
11027
592996c9
DH
110282001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11029
11030 * list.c (SCM_I_CONS): Make sure the cell type is initialized
11031 last.
11032
11033 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
f91e4547 11034 init_heap_seg): Fixed signedness.
592996c9
DH
11035
11036 (init_heap_seg): Replaced strange for-loop with a while loop.
11037
11038 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
11039
11040 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
11041
11042 The following patch adds conservative marking for the elements of
11043 free or allocated cells.
11044
11045 * gc.c (allocated_mark, heap_segment): New static functions.
11046
11047 (which_seg): Deleted, since the functionality is now provided by
11048 function heap_segment.
11049
11050 (map_free_list): Use heap_segment instead of which_seg.
11051
11052 (MARK): If cell debugging is disabled, mark free cells
11053 conservatively.
11054
11055 (scm_mark_locations, scm_cellp): Extracted the search for the
11056 heap segment of a SCM value into function heap_segment.
11057
11058 (scm_init_storage): Allocated cells must be marked
11059 conservatively.
11060
11061 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
11062
11063 The following patch changes the representation of weak vectors to
11064 double cells instead of using an extension of the vector's
11065 allocated memory.
11066
11067 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
11068 the result of SCM_WVECT_GC_CHAIN.
11069
11070 (scm_gc_sweep): Weak vectors don't have extra fields any more.
11071
11072 * weaks.c (allocate_weak_vector): New static function. It does
11073 not patch any previously created vector object during the
11074 construction of a weak vector, and thus doesn't need to switch
11075 off interrupts during vector creation.
11076
11077 (scm_make_weak_vector, scm_make_weak_key_hash_table,
11078 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11079 Use allocate_weak_vector to provide the new weak vector object.
11080
11081 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
11082 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
11083 now stored in the double cell.
11084
11085 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
11086 Use SCM_WVECT_TYPE.
11087
11088 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
11089 using an entry of the double cell.
11090
4dadf664
TTN
110912001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
11092
11093 * stamp-h.in: bye bye
11094
02202352
MV
110952001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
11096
11097 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
11098 scm_eval_0str.
11099
11100 * load.c, load.h (scm_c_primitive_load,
11101 scm_c_primitive_load_path): New.
11102
11103 * strports.c, strports.h (scm_c_read_string): Renamed from
11104 scm_read_0str. Also, added "const" qualifier to argument.
11105 (scm_c_eval_string): Renamed from scm_eval_0str.
11106 (scm_read_0str, scm_eval_0str): Deprecated.
11107
df1ad0d1
MG
111082001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11109
11110 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
11111 SCM_LIST1.
11112
1afff620
KN
111132001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
11114
11115 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
11116 scm_list_n): New functions.
11117 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
11118 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
11119 (lots of files): Use the new functions.
4dadf664 11120
1afff620
KN
11121 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
11122
11123 * strings.c: #include "libguile/deprecation.h".
11124
b858464a
MG
111252001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11126
11127 * read.c (scm_lreadr): When reading a hash token, check for a
11128 user-defined hash procedure first, so that overriding the builtin
11129 hash characters is possible (this was needed for implementing
11130 SRFI-4's read synax `f32(...)').
4dadf664 11131
b858464a
MG
11132 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
11133 because the latter is unsigned now and breaks comparisons like
11134 (n < (scm_t_signed_bits)MIN_VALUE).
4dadf664 11135
d95c0b76
NJ
111362001-06-26 Neil Jerram <neil@ossau.uklinux.net>
11137
11138 * eval.h, eval.c (scm_call_4): New function.
11139
11140 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
11141 directly rather than dispatching to them via scm_ithrow and a lazy
11142 catch.
4dadf664 11143
d95c0b76
NJ
11144 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
11145 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
11146 for trap handler procedures.
11147
11148 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
11149 procedures not being #f.
11150
30e3be5a
ML
111512001-06-27 Michael Livshin <mlivshin@bigfoot.com>
11152
11153 * Makefile.am (c-tokenize.c): add rule to generate it.
11154 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
11155
11156 filter-doc-snarfage.c: remove.
11157
82893676
MG
111582001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11159
11160 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
11161
11162 The following set of changes makes compiling Guile under various
11163 Windows compilers easier. Compilation under GNU systems should
11164 not be affected at all.
11165
11166 Thanks to Stefan Jahn for all necessary information, patches and
11167 testing.
4dadf664 11168
82893676
MG
11169 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
11170 getpgrp, ttyname, primitive-fork and some header inclusion for
11171 Windows.
11172
11173 * random.c: Define M_PI, if not predefined and use __int64 for
11174 LONG64 under Windows.
11175
11176 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
11177 Windows and conditionalize some signal names.
11178
4dadf664 11179 * socket.c (scm_getsockopt): Added missing comma.
82893676
MG
11180 Include socket library header under Windows.
11181
11182 * stime.c (CLKTCK): Add cast to int, to make it compile under
11183 Windows.
11184
11185 * ports.c (truncate): New function, compiled only under Windows.
11186
11187 * net_db.c: Do not declare errno under Windows.
11188
11189 * iselect.h, inet_aton.c: Include socket library headers under
11190 Windows.
11191
11192 * guile.c (inner_main): Under Windows, initialize socket library
11193 and initialize gdb_interface data structures.
11194
11195 * gdb_interface.h: Under Windows, gdb_interface cannot be
11196 initialized statically. Initialize at runtime instead.
11197
11198 * fports.c (write_all): ssize_t -> size_t.
11199 (fport_print): Conditionalize call to ttyname().
11200 (getflags): New function, compiled only under Windows.
11201
11202 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
11203 primitives chown, link, fcntl.
11204 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
11205 as path seperator.
11206
11207 * backtrace.c: Include <io.h> under Windows.
11208
11209 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
11210
11211 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
11212 declaration.
11213
fdc28395
KN
112142001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
11215
11216 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11217 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
11218 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11219 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
11220 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
11221 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
11222 (scm_dynamic_wind, scm_dowinds), environments.c
11223 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
11224 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
11225 goops.c (GETVAR, purgatory, make_class_from_template,
11226 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
11227 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
11228 (scm_primitive_load), modules.c (scm_resolve_module,
11229 scm_c_define_module, scm_c_use_module, scm_c_export,
11230 module_variable, scm_eval_closure_lookup, scm_sym2var,
11231 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
11232 ports.c (scm_port_for_each), print.c (scm_printer_apply),
11233 properties.c (scm_primitive_property_ref), ramap.c (ramap,
11234 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
11235 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
11236 (scm_object_to_string, scm_call_with_output_string,
11237 scm_call_with_input_string), throw.c (scm_body_thunk,
11238 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
11239 scm_make_shared_array), vports.c (sf_flush, sf_write,
11240 sf_fill_input, sf_close): Use one of the above functions.
11241 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
11242
36284627
DH
112432001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11244
11245 * filesys.c (scm_close), ports.c (scm_close_port,
11246 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
11247 instead of SCM_NEGATE_BOOL.
11248
11249 * filesys.c (scm_stat): Clean up type dispatch.
11250
11251 * filesys.c (scm_stat), ports.c (scm_input_port_p,
11252 scm_output_port_p): Get rid of redundant IM type check.
11253
11254 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
11255 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
11256 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
11257 scm_return_entry), numbers.c (scm_number_to_string), objects.c
11258 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
11259 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
11260 scm_addr_vector), stime.c (scm_strftime), strings.c
11261 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
11262 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
11263 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11264 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
11265 instead of scm_makfromstr.
11266
11267 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
11268 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
11269 scm_read_hash_extend), stime.c (scm_strftime), strings.c
11270 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
11271 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
11272 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
11273 !SCM_<pred> over SCM_N<pred>.
11274
11275 * strings.[ch] (scm_makfromstr): Deprecated.
11276
11277 (scm_mem2string): New function, replaces scm_makfromstr.
11278
11279 * strings.c (scm_substring), strop.c (string_copy,
11280 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11281 (scm_symbol_to_string): Fix gc problem.
11282
11283 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
11284 SCM_<foo>_H.
11285
11286 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
11287 warning about comparing signed and unsigned values. This fix is
11288 not optimal, since it won't work reliably if sizeof (c_start) >
11289 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
11290 solution is to define this macro as an inline function, thus
11291 allowing to specifiy the types of c_start and c_end.
11292
13dcb666
DH
112932001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
11294
11295 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
11296 scm_t_debug_frame*.
11297
11298 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
11299 Rename <foo>H to SCM_<foo>_H.
11300
11301 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
11302 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11303
11304 (narrow_stack): Make i unsigned. Don't use side-effecting
11305 operations in conditions.
11306
11307 (narrow_stack, scm_make_stack, scm_stack_id,
11308 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
11309
11310 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
11311 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
11312 more.
11313
11314 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
11315 signedness.
11316
ea2c3968 11317 (scm_last_stack_frame): Remove bogus `;'.
13dcb666
DH
11318
11319 * stacks.h (SCM_FRAMEP): Fix type check.
11320
ac13d9d2
ML
113212001-06-25 Michael Livshin <mlivshin@bigfoot.com>
11322
ee0c0e03
ML
11323 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
11324 c-tokenize.c when doing maintainer-clean.
11325
ac13d9d2
ML
11326 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
11327
11328 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
11329 simplify.
11330
11331 * eval.c: all hash signs are in column 0.
11332
11333 * Makefile.am (guile_filter_doc_snarfage): build using
11334 c-tokenize.c, not filter-doc-snarfage.c.
11335 rearrange snarfing dependencies a bit.
11336
11337 * c-tokenize.lex: new file.
11338
16be44e5
MV
113392001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
11340
11341 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
11342 scm_t_srcpropso_plist. See the big type renaming.
11343 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
11344 Thanks to Seth Alves!
4dadf664 11345
16be44e5
MV
11346 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
11347 they aren't defined already.
11348
5843e5c9
DH
113492001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
11350
11351 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
11352 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
11353 problem.
11354
11355 * backtrace.c (display_expression, scm_set_print_params_x,
11356 display_application, display_frame, scm_backtrace), numbers.c
11357 (scm_istring2number), objects.c (scm_class_of,
11358 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
11359 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11360
11361 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
11362 always positive.
11363
11364 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
11365 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
11366
11367 * objects.c (scm_class_of): Type fix.
11368
11369 (scm_mcache_lookup_cmethod): Improved comment, simplified,
11370 eliminated goto.
11371
11372 * pairs.h (scm_error_pair_access): The function can return if
11373 called recursively.
11374
6b41a313
MG
113752001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11376
11377 * init.c (scm_init_guile_1): Removed initialization of tag.c.
11378
11379 * gdbint.c, init.c: Removed inclusion of tag.h.
11380
11381 * tag.h, tag.c: Removed files.
11382
11383 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
11384
fbbdb121
GH
113852001-06-20 Gary Houston <ghouston@arglist.com>
11386
11387 * deprecation.c, extensions.c, rw.c: include string.h.
11388
72c17ed0
GH
113892001-06-19 Gary Houston <ghouston@arglist.com>
11390
11391 * filter-doc-snarfage.c (process): added ungetc in
11392 MULTILINE_COOKIE case since otherwise it fails when there's no
11393 space between the '(' and the quote of the following string
11394 (gcc 3.0).
11395
4ff9f825
MV
113962001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11397
4927dd28
MV
11398 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
11399
b629af45
MV
114002001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11401
11402 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
0f002b27
MV
11403 extension takes place.
11404 * strings.h (SCM_STRING_LENGTH): Likewise.
11405 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4dadf664 11406
4ff9f825
MV
11407 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
11408 it.
11409
11410 * tags.h: Include <stdint.h> when we have it.
11411 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
11412 available. Else use "unsigned long".
11413 (scm_signed_bits_t): New.
11414
11415 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11416 (SCM_INUM): Cast result to scm_signed_bits_t.
11417
58bee6a8
TTN
114182001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11419
11420 * mkstemp.c: Update path to #include file scmconfig.h.
11421 Thanks to Golubev I. N.
11422
00d8d838
DH
114232001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11424
11425 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11426
ea2c3968 11427 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
00d8d838
DH
11428 the macro definition.
11429
11430 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11431 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11432 instead of SCM_INST_TYPE.
11433
11434 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11435 the object is a struct before accessing its struct flags.
11436
11437 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11438
495c67e5
GH
114392001-06-10 Gary Houston <ghouston@arglist.com>
11440
11441 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11442 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11443 work reliably anymore. try it from boot-9.scm instead.
11444
6a9003d3
MV
114452001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11446
11447 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
9a5fa6e9 11448 Thanks to Matthias Köppe!
58bee6a8 11449
47bcd646
ML
114502001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11451
a88ff5b6
ML
11452 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11453 space-happy C preprocessors.
11454
47bcd646 11455 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
9a5fa6e9 11456 inside cookies. thanks to Matthias Köppe!
47bcd646 11457
bab246f3
DH
114582001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11459
11460 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11461 keywords. Fix gc protection.
11462
11463 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11464 operations in macro calls.
11465
11466 * pairs.c (scm_error_pair_access): Avoid recursion.
11467
11468 Thanks to Matthias Koeppe for reporting the bugs that correspond
11469 to the following set of patches.
11470
11471 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11472 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11473 bitvector base address using SCM_BITVECTOR_BASE.
11474
11475 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11476 unsigned long*.
11477
dcb410ec
DH
114782001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11479
11480 * goops.c (SCM_CLASS_REDEF): Removed.
11481
11482 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11483 SCM_<foo>_H.
11484
11485 Thanks to Matthias Koeppe for reporting the bugs that correspond
11486 to the following set of patches.
11487
11488 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11489 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11490 scm_sys_allocate_instance, clear_method_cache,
11491 scm_sys_invalidate_method_cache_x, scm_make,
11492 create_standard_classes, scm_make_port_classes, scm_make_class,
11493 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11494
11495 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11496
11497 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11498
11499 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11500 UNARY_ELTS_CODE): Remove bogus break statement.
11501
11502 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11503 Don't access bit vectors elements as SCM objects.
11504
11505 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11506 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11507 Don't assign to an unpacked value.
11508
e81d98ec
DH
115092001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11510
11511 * __scm.h (SCM_NORETURN): Moved here from error.h.
11512
11513 (SCM_UNUSED): New macro.
11514
11515 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11516
11517 * backtrace.c (display_error_handler), continuations.c
11518 (continuation_print), debug.c (debugobj_print), dynwind.c
11519 (guards_print), environments.c (observer_print,
11520 core_environments_finalize, leaf_environment_cell,
11521 leaf_environment_print, eval_environment_print,
11522 eval_environment_observer, import_environment_define,
11523 import_environment_undefine, import_environment_print,
11524 import_environment_observer, export_environment_define,
11525 export_environment_undefine, export_environment_print,
11526 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11527 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11528 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11529 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11530 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11531 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11532 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11533 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11534 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11535 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11536 set_slot_value, test_slot_existence, scm_change_object_class,
11537 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11538 default_setter), guardians.c (guardian_print, guardian_gc_init,
11539 guardian_zombify, whine_about_self_centered_zombies), guile.c
11540 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11541 mallocs.c (malloc_print), numbers.c (scm_print_real,
11542 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11543 end_input_default, scm_port_print, fill_input_void_port,
11544 write_void_port), root.c (root_print), smob.c (scm_mark0,
11545 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11546 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11547 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11548 (scm_struct_free_0, scm_struct_free_standard,
11549 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11550 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11551 scm_handle_by_throw, scm_ithrow), weaks.c
11552 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11553 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11554 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11555
11556 * error.h (SCM_NORETURN): Moved to __scm.h.
11557
11558 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11559 Renamed <foo>H to SCM_<foo>_H.
11560
11561 * gc.c (debug_cells_gc_interval): New static variable.
11562
11563 (scm_assert_cell_valid): If selected by the user, perform
11564 additional garbage collections.
11565
11566 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11567 if additional garbage collections are desired.
11568
11569 (mark_gc_async): If additional garbage collections are selected
11570 by the user, don't call the after-gc-hook. Instead require the
11571 user to run the hook manually.
11572
11573 * pairs.c (scm_error_pair_access): New function. Only compiled
11574 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11575
11576 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11577
11578 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11579 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11580 is a real pair object. (Glocs are also accepted, but that may
11581 change.) If not, abort with an error message.
11582
17fa3fcf
DH
115832001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11584
11585 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11586
11587 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11588 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11589
feeedafb
MV
115902001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11591
11592 * extensions.c (scm_c_register_extension): Allow NULL as library
11593 name.
11594 (load_extension): Ignore NULL library names when comparing.
58bee6a8 11595
feeedafb
MV
11596 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11597 non-pointers are being compared. Thanks to Alexander Klimov!
11598
4bcdfe46
GH
115992001-06-04 Gary Houston <ghouston@arglist.com>
11600
11601 * rw.c (scm_write_string_partial): new procedure implementing
11602 write-string/partial in (ice-9 rw).
11603 * rw.h: declare scm_write_string_partial.
58bee6a8 11604
f480396b
MV
116052001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11606
feeedafb
MV
11607 * keywords.c (keyword_print): Substract 1 from length of symbol
11608 name, accounting for the silly dash.
11609
11610 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11611 Do not emit deprecation warning.
11612
f480396b
MV
11613 Added exception notice to all files.
11614
11615 * dynl.c: Include "deprecation.h".
11616
c794483c
MV
116172001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11618
11619 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11620 scm_clear_registered_modules): Deprecated.
11621
9454d8d5
RB
116222001-06-02 Rob Browning <rlb@cs.utexas.edu>
11623
11624 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11625 guile-snarf-docs-texi.
11626
11627 * fports.c: HAVE_ST_BLKSIZE changed to
11628 HAVE_STRUCT_STAT_ST_BLKSIZE.
11629 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11630 HAVE_STRUCT_STAT_ST_BLKSIZE.
11631
11632 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11633 HAVE_STRUCT_STAT_ST_RDEV.
11634 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11635 HAVE_STRUCT_STAT_ST_BLKSIZE.
11636 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11637 HAVE_STRUCT_STAT_ST_BLOCKS.
11638
114f9bab
MV
116392001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11640
b0c16cd9
MV
11641 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11642 of scm_eval_x to allow module changes between the forms in the
11643 string. Set/restore module using scm_c_call_with_current_module.
11644
114f9bab
MV
11645 * mkstemp.c: New file, slightly modified from libiberties
11646 mkstemps.c.
11647
c99f9605
ML
116482001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11649
11650 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11651 filter-doc-snarfage.c: new files.
11652
11653 * Makefile.am: add stuff to [build,] use and distribute
11654 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11655
11656 * guile-snarf.in: grok the new snarf output.
11657
11658 * snarf.h: make the output both texttools- and `read'-friendly.
11659
47bcd646
ML
11660 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11661 guile-snarf-docs. (should also deprecate, I guess. maybe not).
c99f9605 11662
7eb5d7b2
MV
116632001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11664
11665 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11666 error for unsupported format controls and for superflous
ec2667f0 11667 arguments. Thanks to Daniel Skarda!
7eb5d7b2
MV
11668
11669 * print.h, print.c (scm_print_symbol_name): Factored out of
11670 scm_iprin1.
11671 (scm_iprin1): Call it.
58bee6a8 11672
7eb5d7b2
MV
11673 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11674 weird names are printed correctly.
11675
11676 * print.c (scm_print_symbol_name): Symbols whose name starts with
11677 `#' or `:' or ends with `:' are considered weird.
11678
609c3d30
MG
116792001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11680
11681 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11682 and /.
11683
116842001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11685
11686 * debug.h: Removed prototype for scm_eval_string.
11687
8d09eb04
MG
116882001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11689
11690 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
58bee6a8 11691 (make-string 2000 #\!))' in an older version).
8d09eb04
MG
11692
11693 Change strncpy to memcpy to allow embedded NUL characters in
11694 symbol prefix.
11695
dd85ce47
ML
116962001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11697
fde50407
ML
11698 * hooks.c (scm_create_hook): deprecated.
11699 (make_hook): deleted.
11700 (scm_make_hook): all the hook creation code is now here.
11701
11702 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11703 a hook, make it permanent, and do a `scm_c_define' on it.
11704
dd85ce47
ML
11705 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11706
11707 * socket.c (s_scm_inet_pton): fix docstring quoting.
11708 (s_scm_inet_ntop): ditto.
11709
11710 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11711
11712 * hashtab.c (scm_internal_hash_fold): fix argument position in
11713 SCM_ASSERT.
11714
11715 * environments.c (s_scm_import_environment_set_imports_x): fix
11716 argument position in SCM_ASSERT.
11717
11718 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11719 (s_scm_make_iloc): ditto.
11720
729dbac3
DH
117212001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11722
11723 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11724
11725 * eval.c (promise_print): Read the promise's value as an object.
11726
11727 (SCM_CEVAL): Don't perform side-effecting operations in macro
11728 parameters.
11729
11730 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11731 conditional expression.
11732
11733 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11734 initializer.
11735
11736 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11737 text, removed redundant computation of effective_length and fixed
11738 the overflow check.
11739
11740 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11741 values.
11742
11743 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11744
11745 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11746
11747 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11748 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11749
11750 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11751
11752 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11753 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11754 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11755 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11756
11757 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11758
11759 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11760
ea2c3968 11761 * ramap.c (ramap_rp): Removed bogus `;'.
729dbac3
DH
11762
11763 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11764 problem.
11765
11766 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11767 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11768 Read SCM objects rather than scm_bits_t values.
11769
11770 * tags.h (SCM_VOIDP_TEST): Removed.
11771
11772 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
11773 value of 2 now corresponds to the former 1, the current 1
11774 corresponds to the former situation that SCM_VOIDP_TEST was
11775 defined.
11776
58bee6a8
TTN
11777 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
11778 If this appears to be not ANSI compliant, we will change it to
729dbac3
DH
11779 typedef struct scm_unused_struct { } * SCM;
11780 Thanks to Han-Wen Nienhuys for the suggestion.
11781
11782 * unif.c (scm_array_set_x): Fix typing problem, and use
11783 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
11784 dealing with uniform vectors.
11785
6b1b030e
ML
117862001-05-27 Michael Livshin <mlivshin@bigfoot.com>
11787
11788 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
11789 (scm_igc): mark from them, too (precisely, not conservatively!).
11790
11791 * root.h (scm_gc_registered_roots): new object in
11792 scm_sys_protects.
11793
11794 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
11795 `scm_protect_object'. shouldn't call it at all, though, it seems.
11796
11797 * gc.c (scm_[un]protect_object): deprecated.
11798 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
11799 (scm_gc_[un]register_root[s]): new.
11800
11801 * gc.h: add prototypes for scm_gc_[un]protect_object,
11802 scm_gc_[un]register_root[s].
11803
c014a02e
ML
118042001-05-26 Michael Livshin <mlivshin@bigfoot.com>
11805
11806 revert the controversial part of the 2001-05-24 changes.
11807
0120801d
MV
118082001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
11809
f4e0611e
MV
11810 * modules.c (scm_env_module): Exported to Scheme.
11811
0120801d 11812 * eval.c (scm_debug_opts): New option `show-file-name'.
729dbac3 11813
0120801d 11814 * debug.h (SCM_SHOW_FILE_NAME): New.
729dbac3 11815
0120801d
MV
11816 * backtrace.c: Include "libguile/filesys.h".
11817 (sym_base, display_backtrace_get_file_line,
11818 display_backtrace_file, display_backtrace_file_and_line): New.
11819 (display_frame): Call display_backtrace_file_and_line if that is
11820 requested.
11821 (display_backtrace_body): Call scm_display_backtrace_file if
11822 requested.
11823
11824 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
11825 Prototypes removed since there's no definition for these
11826 functions.
11827
880a7d13
MG
118282001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11829
11830 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
11831 Changed use of scm_array->scm_array_t and
11832 scm_array_dim->scm_array_dim_t to enable build with
11833 --disable-deprecated.
11834
1be6b49c
ML
118352001-05-24 Michael Livshin <mlivshin@bigfoot.com>
11836
11837 The purpose of this set of changes is to regularize Guile's usage
11838 of ANSI C integral types, with the following ideas in mind:
11839
d69c867a
ML
11840 - SCM does not nesessarily have to be long.
11841 - long is not nesessarily enough to store pointers.
1be6b49c
ML
11842 - long is not nesessarily the same size as int.
11843
11844 The changes are incomplete and possibly buggy. Please test on
11845 something exotic.
11846
11847 * validate.h
11848 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
11849 new macros.
11850
11851 * unif.h: type renaming:
11852 scm_array -> scm_array_t
11853 scm_array_dim -> scm_array_dim_t
11854 the old names are deprecated, all in-Guile uses changed.
11855
11856 * tags.h (scm_ubits_t): new typedef, representing unsigned
11857 scm_bits_t.
11858
11859 * stacks.h: type renaming:
11860 scm_info_frame -> scm_info_frame_t
11861 scm_stack -> scm_stack_t
11862 the old names are deprecated, all in-Guile uses changed.
11863
11864 * srcprop.h: type renaming:
11865 scm_srcprops -> scm_srcprops_t
11866 scm_srcprops_chunk -> scm_srcprops_chunk_t
11867 the old names are deprecated, all in-Guile uses changed.
11868
11869 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
11870 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
11871 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
11872 vectors.c, vports.c, weaks.c:
11873 various int/size_t -> size_t/scm_bits_t changes.
11874
11875 * random.h: type renaming:
11876 scm_rstate -> scm_rstate_t
11877 scm_rng -> scm_rng_t
11878 scm_i_rstate -> scm_i_rstate_t
11879 the old names are deprecated, all in-Guile uses changed.
11880
11881 * procs.h: type renaming:
11882 scm_subr_entry -> scm_subr_entry_t
11883 the old name is deprecated, all in-Guile uses changed.
11884
11885 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
11886 type renaming:
11887 scm_option -> scm_option_t
11888 the old name is deprecated, all in-Guile uses changed.
11889
11890 * objects.c: various long -> scm_bits_t changes.
11891 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
11892
11893 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
11894 SCM_I_FIXNUM_BIT.
11895
11896 * num2integral.i.c: new file, multiply included by numbers.c, used
11897 to "templatize" the various integral <-> num conversion routines.
11898
11899 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
11900 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
11901 deprecated.
11902 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
11903 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
11904 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
11905 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
11906 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
11907 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
11908 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
11909 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
11910 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
11911 scm_num2size): new functions.
11912
d69c867a 11913 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
1be6b49c
ML
11914
11915 * load.c: change int -> size_t in various places (where the
11916 variable is used to store a string length).
11917 (search-path): call scm_done_free, not scm_done_malloc.
11918
11919 * list.c (scm_ilength): return a scm_bits_t, not long.
11920 some other {int,long} -> scm_bits_t changes.
11921
11922 * hashtab.c: various [u]int -> scm_bits_t changes.
11923 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
11924 (scm_ihashx): n: uint -> scm_bits_t
11925 use scm_bits2num instead of scm_ulong2num.
11926
11927 * gsubr.c: various int -> scm_bits_t changes.
11928
11929 * goops.[hc]: various {int,long} -> scm_bits_t changes.
11930
d69c867a 11931 * gh_data.c (gh_num2int): no loss of precision any more.
1be6b49c
ML
11932
11933 * gh.h (gh_str2scm): len: int -> size_t
11934 (gh_{get,set}_substr): start: int -> scm_bits_t,
11935 len: int -> size_t
11936 (gh_<num>2scm): n: int -> scm_bits_t
11937 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
11938 (gh_length): return scm_bits_t, not unsigned long.
11939
11940 * gc.[hc]: various small changes relating to many things stopping
11941 being long and starting being scm_[u]bits_t instead.
11942 scm_mallocated should no longer wrap around.
11943
11944 * fports.h: type renaming:
11945 scm_fport -> scm_fport_t
11946 the old name is deprecated, all in-Guile uses changed.
11947
11948 * fports.c (fport_fill_input): count: int -> scm_bits_t
11949 (fport_flush): init_size, remaining, count: int -> scm_bits_t
11950
11951 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
11952 those prototypes, as the functions they prototype don't exist.
11953
11954 * fports.c (default_buffer_size): int -> size_t
11955 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
11956 default_size: int -> size_t
11957 (scm_setvbuf): csize: int -> scm_bits_t
11958
11959 * fluids.c (n_fluids): int -> scm_bits_t
11960 (grow_fluids): old_length, i: int -> scm_bits_t
11961 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
11962 scm_bits_t
11963 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
11964
11965 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
11966 the new and shiny SCM_NUM2INT.
11967
11968 * extensions.c: extension -> extension_t (and made a typedef).
11969
11970 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
11971 there are no nasty surprises if/when the various deeply magic tag
11972 bits move somewhere else.
11973
11974 * eval.c: changed the locals used to store results of SCM_IFRAME,
11975 scm_ilength and such to be of type scm_bits_t (and not int/long).
11976 (iqq): depth, edepth: int -> scm_bits_t
11977 (scm_eval_stack): int -> scm_bits_t
11978 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
11979 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
11980 i: int -> scm_bits_t
11981
11982 * environments.c: changed the many calls to scm_ulong2num to
11983 scm_ubits2num.
11984 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
11985
11986 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
11987
11988 * debug.h: type renaming:
11989 scm_debug_info -> scm_debug_info_t
11990 scm_debug_frame -> scm_debug_frame_t
11991 the old names are deprecated, all in-Guile uses changed.
11992 (scm_debug_eframe_size): int -> scm_bits_t
11993
11994 * debug.c (scm_init_debug): use scm_c_define instead of the
11995 deprecated scm_define.
11996
11997 * continuations.h: type renaming:
11998 scm_contregs -> scm_contregs_t
11999 the old name is deprecated, all in-Guile uses changed.
12000 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
12001 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
12002
12003 * continuations.c (scm_make_continuation): change the type of
d69c867a 12004 stack_size from long to scm_bits_t.
1be6b49c
ML
12005
12006 * ports.h: type renaming:
12007 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
12008 scm_port -> scm_port_t
12009 scm_ptob_descriptor -> scm_ptob_descriptor_t
12010 the old names are deprecated, all in-Guile uses changed.
12011 (scm_port_t.entry): int -> scm_bits_t.
12012 (scm_port_t.line_number): int -> long.
12013 (scm_port_t.putback_buf_size): int -> size_t.
12014
12015 * __scm.h (long_long, ulong_long): deprecated (they pollute the
d69c867a 12016 global namespace and have little value beside that).
1be6b49c
ML
12017 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
12018 SCM handle).
12019 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
d69c867a 12020 exist (for size_t & ptrdiff_t).
1be6b49c
ML
12021 (scm_sizet): deprecated.
12022
12023 * Makefile.am (noinst_HEADERS): add num2integral.i.c
12024
a6219f22
MV
120252001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
12026
12027 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
12028 SCM_VARIABLE_INIT since that it what it used to be.
12029
12030 * deprecation.c (scm_include_deprecated_features): Make docstring
9a5fa6e9 12031 ANSIsh. Thanks to Matthias Köppe!
a6219f22 12032
311b6a3c
MV
120332001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
12034
9dfc4faa
MV
12035 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
12036 needed for weak-key hashtables.
12037
12038 * procs.c (scm_make_subr_with_generic): Add missing last argument
12039 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
12040
12041 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
12042 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
311b6a3c
MV
12043
12044 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
12045
2fc933fe
MV
120462001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
12047
57ae112d
MV
12048 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
12049 `duplicate_string'. Do not use an indirect cell, store symbol
12050 directly in collision list of hash table.
12051 (duplicate_string): Removed.
58bee6a8 12052
57ae112d
MV
12053 * init.c (scm_init_guile_1): Call scm_init_extensions.
12054
12055 * Makefile.am: Add "extensions.c" and related files in all the
12056 right places.
12057
12058 * extensions.h, extension.c: New files.
12059
12060 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
12061
2fc933fe
MV
12062 * modules.h (scm_system_module_env_p): Move out of deprecated
12063 section.
12064
12065 * rw.h (scm_init_rw): Added prototype.
12066
12067 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
12068 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
12069 New functions. They replace scm_make_gsubr and
12070 scm_make_gsubr_with_generic. The `make' variants only create the
12071 gsubr object, while the `define' variants also put it into the
12072 current module. Changed all callers.
12073 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
12074
12075 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
12076 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
12077 functions. They replace scm_make_subr, scm_make_subr_opt and
12078 scm_make_subr_with_generic. The `make' variants only create the
12079 subr object, while the `define' variants also put it into the
12080 current module. Changed all callers.
12081 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
12082 Deprecated.
12083
12084 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
12085 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
12086 the comments above.
58bee6a8 12087
18928596
NJ
120882001-05-19 Neil Jerram <neil@ossau.uklinux.net>
12089
12090 * throw.c (scm_lazy_catch): Slight docstring clarification.
12091
21a13beb
MV
120922001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
12093
e2b6ddc6
MV
12094 * throw.c: Lazy-catch handlers are no longer allowed to return.
12095 Fixed comments throughout.
12096 (scm_ithrow): Signal an error when a lazy-catch handler returns.
12097 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
12098 recognized as such.
12099
21a13beb
MV
12100 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
12101 refered to s_scm_minor_version previously.
12102
12103 * modules.h, modules.c: Moved around a lot of code so that
12104 deprecated features appear at the bottom.
12105 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
12106 module_prefix, make_modules_in_var, beautify_user_module_x_var,
12107 scm_the_root_module, scm_make_module, scm_ensure_user_module,
12108 scm_load_scheme_module): Deprecated.
12109 (scm_system_module_env_p): Return SCM_BOOL_T directly for
12110 environments corresponding to the root module.
12111 (convert_module_name, scm_c_resolve_module,
12112 scm_c_call_with_current_module, scm_c_define_module,
12113 scm_c_use_module, scm_c_export): New.
12114 (the_root_module): New static variant of scm_the_root_module. Use
12115 it everywhere instead of scm_the_root_module.
58bee6a8 12116
21a13beb
MV
12117 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
12118 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
12119 (scm_c_with_fluid): New.
12120 (scm_with_fluids): Use scm_c_with_fluids instead of
12121 scm_internal_with_fluids.
58bee6a8 12122
21a13beb
MV
12123 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
12124 `scm_init_goops'. Do not explicitly create/switch modules.
12125 Return SCM_UNSPECIFIED.
12126 (scm_init_goops): Only register `%init-goops-builtins' procedure.
12127 (scm_load_goops): Use scm_c_resolve_module instead of
12128 scm_resolve_module.
58bee6a8 12129
21a13beb
MV
12130 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
12131 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
12132 `scm_init_rw' prior to loading the startup files.
12133
12134 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
12135 scm_init_rdelim. Do not explicitly create/switch modules.
12136 Return SCM_UNSPECIFIED.
12137 (scm_init_rdelim): Only register `%init-rdelim-builtins'
12138 procedure.
58bee6a8 12139
21a13beb
MV
12140 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
12141 explicitly create/switch modules. Return SCM_UNSPECIFIED.
12142 (scm_init_rw): Only register `%init-rw-builtins' procedure.
12143
12144 * script.c (scm_shell): Evaluate the compiled switches in the
12145 current module, not in the root module.
12146
121472001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
12148
12149 * fluids.c (scm_c_with_fluids): Rename from
12150 scm_internal_with_fluids.
12151 (scm_internal_with_fluids): Deprecated.
12152 (scm_c_with_fluid): New.
12153
09cb9e73
DH
121542001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12155
12156 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
12157
12158 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
12159 accessed with SCM_C[AD]R.
12160
12161 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
12162
c81ea65d
RB
121632001-05-16 Rob Browning <rlb@cs.utexas.edu>
12164
12165 * version.c (s_scm_major_version): doc fixes.
12166 (s_scm_minor_version): doc fixes.
12167 (s_scm_minor_version): new function.
12168
12169 * version.h (scm_init_version): new function.
12170
12171 * versiondat.h.in: add GUILE_MICRO_VERSION.
12172
887dfa7d
DH
121732001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
12174
12175 * deprecation.c (scm_init_deprecation): Renamed
12176 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
12177
78930a69
MV
121782001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
12179
12180 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
12181 dependent on cpp_cnvt.awk
12182
39cde5c5
MG
121832001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12184
12185 * script.c (scm_compile_shell_switches): New command line option
12186 `--use-srfi' for loading a list of SRFIs on startup.
12187 (scm_shell_usage): Added `--use-srfi' to help message.
12188
f3f9dcbc
MV
121892001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12190
78930a69 12191 Merged from mvo-vcell-cleanup-1-branch.
887dfa7d 12192
f3f9dcbc
MV
12193 The concept of vcells has been removed from Guile. With it,
12194 explicit obarrays and associated operations are gone. Use
12195 hashtables instead of obarrays.
887dfa7d 12196
f3f9dcbc
MV
12197 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
12198 result as variable instead of vcell. Glocs no longer point to a
12199 vcell but to a variable. Use scm_c_define instead of
12200 scm_sysintern and treat the result as a variable (which it is),
12201 not a vcell.
887dfa7d 12202
f3f9dcbc
MV
12203 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
12204 SCM_DEFVARIABLEP): Deprecated.
12205 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
12206 (variable_print): Do not print name of variable.
12207 (variable_equalp): Compare values, not vcells.
12208 (anonymous_variable_sym): Removed.
12209 (make_vcell_variable): Removed.
12210 (make_variable): New, as replacement.
12211 (scm_make_variable, scm_make_undefined_variable): Do not take name
12212 hint parameter.
12213 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
12214 error in that case.
12215 (scm_builtin_variable): Deprecated.
12216
12217 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
12218 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
12219 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
12220 scm_sysintern, scm_sysintern0, scm_symbol_value0,
12221 scm_string_to_obarray_symbol, scm_intern_symbol,
12222 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
12223 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
12224 Deprecated and moved to "symbols-deprecated.c".
12225 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
12226 (scm_init_symbols): Call scm_init_symbols_deprecated.
12227 * symbols-deprecated.c: New file.
12228 * Makefile.am: Added symbols-deprecated.c and related files in all
12229 the right places.
887dfa7d 12230
f3f9dcbc
MV
12231 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
12232 SCM_GLOBAL_VCELL_INIT): Deprecated.
12233 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
12234 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
887dfa7d 12235
f3f9dcbc
MV
12236 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
12237 SCM_GLOC_SYM.
12238
12239 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
12240 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
12241 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
12242 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
12243 Changed according to the `throughout' comments.
12244
12245 * modules.h, modules.c (scm_module_system_booted_p): Changed type
12246 to `int'.
12247 (scm_module_type): Removed.
12248 (the_root_module): Renamed to the_root_module_var. Now points to
12249 a variable instead of a vcell. Updated all uses.
12250 (scm_the_root_module): Return SCM_BOOL_F when module systems
12251 hasn't been booted yet.
12252 (SCM_VALIDATE_STRUCT_TYPE): Removed.
12253 (scm_post_boot_init_modules): Made static.
12254 (scm_set_current_module): Call scm_post_boot_init_modules on first
12255 call.
12256 (make_modules_in, beautify_user_module_x, resolve_module,
12257 try_module_autoload, module_make_local_var_x): Tacked on "_var"
12258 suffix. Now point to variables instead of vcells. Updated all
12259 uses.
12260 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
12261 and return SCM_BOOL_F in that case.
12262 (scm_module_transformer): Likewise.
12263 (sym_module, scm_lookup_closure_module, scm_env_module): New.
12264 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
12265 (scm_eval_closure_lookup): Do not allow new definitions when
12266 `interface' flag is set.
12267 (scm_standard_interface_eval_closure): New.
12268 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
12269 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
12270 scm_c_lookup, scm_c_module_define, scm_c_define,
12271 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
12272 scm_modules_prehistory): New.
12273 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
12274 instead of scm_intern0.
887dfa7d 12275
f3f9dcbc
MV
12276 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
12277 symbol.
12278
12279 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
12280 hashtable operations to maintain the keywords, not obarray ones.
12281
12282 * init.c (scm_load_startup_files): Do not call
12283 scm_post_boot_init_modules. This is done by
12284 scm_set_current_module now.
12285 (scm_init_guile_1): Call scm_modules_prehistory. Call
12286 scm_init_variable early on.
12287
12288 * goops.c (s_scm_sys_goops_loaded): Get
12289 var_compute_applicable_methods from scm_sym2var, not from a direct
12290 invocation of scm_goops_lookup_closure.
12291
12292 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
12293
12294 * gc.c: Added simple debugging hack to mark phase of GC: When
12295 activated, do not tail-call scm_gc_mark. This gives nice
12296 backtraces.
12297 (scm_unhash_name): Removed.
12298
12299 * feature.c (features): Renamed to features_var. Now points to a
12300 variable instead of a vcell. Updated all uses.
12301
12302 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
12303 `scm_current_module_lookup_closure' which will do the right thing
12304 when the module system hasn't been booted yet.
12305 (SCM_GLOC_SYM): Removed.
12306 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
12307 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
887dfa7d 12308
f3f9dcbc
MV
12309 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
12310 instead of with vcells. Do not overwrite `var' with the result of
12311 the lookup, use the new `real_var' instead. Remove `var2' in
12312 exchange (which was only used with threads).
12313 (sym_three_question_marks): New.
12314 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
12315 `SCM_GLOC_SYM'.
12316 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
12317 (scm_m_atfop): Expect the function definition to be a variable
12318 instead of a vcell.
12319 (scm_macroexp): Do not use `unmemocar', explicitely remember the
12320 symbol instead.
12321 (scm_unmemocopy): Removed thoughts about anti-macro interface.
12322 (scm_eval_args): Use more explicit code in the gloc branch of the
12323 atrocious struct ambiguity test. The optimizer will sort this
12324 out.
12325 (scm_deval_args): Likewise.
12326 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
12327 remember the symbol instead. Added some comments where
12328 scm_tc3_cons_gloc really exclusively refers to structs.
12329 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
12330 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
12331 of scm_sysintern in general.
12332
12333 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
12334 explicit magic.
12335
12336 * debug.c (s_scm_make_gloc): Only allow proper variables, no
12337 pairs. Put the variable directly in the gloc.
12338 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
12339 (scm_init_debug): Use scm_c_define instead scm_sysintern.
12340
12341 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
12342
12343 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
12344 scm_the_last_stack_fluid_var. It now points to a variable instead
12345 of a vcell. Updated all uses.
12346 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
12347 instead of a vcell. Updated all uses.
12348
12349 * _scm.h: Include "variables.h" and "modules.h" since almost
12350 everybody needs them now.
12351
12352 * root.h (scm_symhash, scm_symhash_vars): Removed.
12353 * gc.c (scm_init_storage): Do not initialize them.
887dfa7d 12354
7c33806a
DH
123552001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12356
12357 * eval.c (scm_init_eval): Initialize scm_undefineds and
58bee6a8 12358 scm_listofnull.
7c33806a
DH
12359
12360 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
12361 like the SCM_NEWCELL macro counterparts.
12362
12363 (scm_init_storage, scm_init_gc): Moved initialization of
12364 scm_tc16_allocated from scm_init_gc to scm_init_storage.
12365
12366 (scm_init_storage): Moved initialization of scm_undefineds and
12367 scm_listofnull to eval.c, initializion of scm_nullstr to
12368 strings.c, initializion of scm_nullvect to vectors.c.
12369
12370 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
12371 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
12372
12373 * init.c (scm_init_guile_1): Reordered some initializations and
12374 added dependcy information comments.
12375
12376 * load.c (scm_init_load): Use scm_nullstr.
12377
12378 * strings.c (scm_init_strings): Initialize scm_nullstr.
12379
12380 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
12381
11bbab47
MV
123822001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
12383
12384 * values.c (print_values): Print as a unreadable object, not as
9a5fa6e9 12385 multiple lines. Thanks to Matthias Köppe!
11bbab47 12386
5cd06d5e
DH
123872001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
12388
12389 * deprecation.c: Fixed copyright date.
12390
12391 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
12392 DEPRECATION_H to SCM_DEPRECATION_H.
12393
32bac999
TTN
123942001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
12395
12396 * guile-doc-snarf.in: Update copyright.
12397 Fix relative path bug. Thanks to Sergey Poznyakoff.
12398
c9dcc5ae
MV
123992001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12400
12401 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
12402 accept open ports. Thanks to Quetzalcoatl Bradley!
12403
7c582ec9
MG
124042001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12405
12406 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
12407 has 779 primitives on startup.
12408
284ab601
MV
124092001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
12410
12411 * eval.c (scm_i_eval): Copy expression before passing it to
12412 SCM_XEVAL. The copy operation was removed unintendedly during my
12413 change on 2001-03-25.
12414
910d1e40
ML
124152001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12416
9a5fa6e9 12417 from Matthias Köppe (thanks!):
910d1e40
ML
12418
12419 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12420 portable.
12421
12422 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12423 docstring.
12424
56e55ac7
DH
124252001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12426
12427 * gc.c (scm_init_gc): Added FIXME comment.
12428
12429 * hooks.c: Since hooks don't have a name any more, it is not
12430 necessary to include objprop.h.
12431
12432 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12433
12434 (symbol_name, scm_make_hook_with_name): Removed.
12435
12436 (scm_create_hook): Don't set the hook's name property.
12437
12438 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12439
12440 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12441
12442 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12443
12444 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12445 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12446 FLOBUFLEN and define it unconditionally.
12447
d204b24c
MV
124482001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12449
438201b4
MV
12450 * gh_data.c (gh_lookup): Call gh_module_lookup with
12451 `scm_current_module ()', not `#f'.
12452 (gh_module_lookup): Expect a module instead of an obarray as first
12453 argument and do lookup in that module.
56e55ac7 12454
d204b24c
MV
12455 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12456 arrays. The length of array is already determined differently and
12457 scm_uniform_vector_length does not work on arrays.
12458
26c1d549
MV
124592001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12460
fe7c2f88
MV
12461 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12462 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12463
26c1d549
MV
12464 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12465 they are not used. Changed `wrong type' error into `wrong num
12466 args' error. Changed all callers.
56e55ac7 12467
26c1d549
MV
12468 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12469 arguments are supplied.
12470
1c938eb8
TTN
124712001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12472
12473 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12474 describe `regexp/notbol' and `regexp/noteol' execution flags.
12475
3a6379f7
TTN
12476 * strop.c (scm_substring_move_x): Doc fix; nfc.
12477
c10ecc4c
MV
124782001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12479
12480 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12481 (scm_set_object_procedure_x): Use it to check argument. Fix
12482 docstring.
12483
12484 * evalext.c (scm_definedp): Fix docstring.
12485
a57a0b1e
GH
124862001-05-05 Gary Houston <ghouston@arglist.com>
12487
12488 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12489 support.
12490
7a095584
NJ
124912001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12492
12493 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12494 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12495 Change R4RS references to R5RS.
12496
12497 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12498 docstring source are correctly reproduced in the output (ii)
12499 we don't anymore get occasional trailing quotes. Also reorganized
12500 and commented the code a little.
12501
12502 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12503 fixes.
12504
dd2a6f3a
MG
125052001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12506
12507 * strop.c (scm_string_split): New procedure.
12508
12509 * strop.h (scm_string_split): Added prototype.
12510
00120130
GH
125112001-05-04 Gary Houston <ghouston@arglist.com>
12512
12513 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12514 Dale P. Smith.
12515
b65e6bfe
MV
125162001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12517
12518 * rw.c: Include "modules.h" and "strports.h".
12519
12520 * net_db.h (scm_gethost): Added prototype.
12521
12522 * deprecation.h, deprecation.c: New.
12523 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12524 (DOT_X_FILES): Added "deprecation.x".
12525 (modinclude_HEADERS): Added "deprecation.h".
12526
12527 * init.c: Include "deprecation.h".
12528 (scm_init_guile_1): Call scm_init_deprecation.
1c938eb8 12529
b65e6bfe
MV
125302001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12531
12532 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12533 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12534 New.
12535
b0e5fd8c
GH
125362001-04-29 Gary Houston <ghouston@arglist.com>
12537
12538 * rw.c: new file, implementing C part of module (ice-9 rw).
12539 (scm_read_string_x_partial): moved from ioext.c
12540 (scm_init_rw): new proc.
12541 * rw.h: new file.
12542 init.c: include rw.h and call scm_init_rw.
12543 Makefile.am: include rw.c and rw.h.
12544
0b2da99c
RB
125452001-04-28 Rob Browning <rlb@cs.utexas.edu>
12546
12547 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12548 know what's supposed to happen to it.
12549
12550 * list.h (scm_list_star): deprecation expired - removed.
12551
12552 * numbers.h (scm_dblproc): deprecation expired - removed.
12553 (SCM_UNEGFIXABLE): deprecation expired - removed.
12554 (SCM_FLOBUFLEN): deprecation expired - removed.
12555 (SCM_INEXP): deprecation expired - removed.
12556 (SCM_CPLXP): deprecation expired - removed.
12557 (SCM_REAL): deprecation expired - removed.
12558 (SCM_IMAG): deprecation expired - removed.
12559 (SCM_REALPART): deprecation expired - removed.
12560 (scm_makdbl): deprecation expired - removed.
12561 (SCM_SINGP): deprecation expired - removed.
12562 (SCM_NUM2DBL): deprecation expired - removed.
12563 (SCM_NO_BIGDIG): deprecation expired - removed.
12564
12565 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12566 (scm_tc_dblr): deprecation expired - removed.
12567 (scm_tc_dblc): deprecation expired - removed.
12568 (scm_tc16_flo): deprecation expired - removed.
12569 (scm_tc_flo): deprecation expired - removed.
12570
12571 * tag.h (scm_tag): deprecation expired - removed.
12572
12573 * tag.c: (scm_tag): deprecation expired - removed.
12574
12575 * ioext.c: (scm_fseek): deprecation expired - removed.
12576
12577 * ioext.h (scm_fseek): deprecation expired - removed.
12578
12579 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12580
12581 * gh.h (gh_int2scmb): deprecation expired - removed.
12582
e3334972
NJ
125832001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12584
12585 * stacks.c (scm_make_stack): Fix typo in docstring.
12586
a0f979ac
RB
125872001-04-27 Rob Browning <rlb@cs.utexas.edu>
12588
12589 * error.c (scm_sysmissing): deprecation expired - removed.
12590
12591 * error.h (scm_sysmissing): deprecation expired - removed.
12592
12593 * gc.c
12594 (scm_init_gc): gc-thunk deprecation expired - removed.
12595 (scm_gc_vcell): deprecation expired - removed.
12596 (gc_async_thunk): scm_gc_vcell related code removed.
12597
12598 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12599
12600 * strings.h
12601 (SCM_NSTRINGP): deprecation expired - removed.
12602 (SCM_NRWSTRINGP): deprecation expired - removed.
12603
12604 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12605
12606 * chars.h
12607 (SCM_ICHRP): deprecation expired - removed.
12608 (SCM_ICHR): deprecation expired - removed.
12609 (SCM_MAKICHR): deprecation expired - removed.
12610
12611 * ports.h
12612 (SCM_INPORTP): deprecation expired - removed.
12613 (SCM_OUTPORTP): deprecation expired - removed.
12614
253081cf
MV
126152001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12616
12617 * modules.c (scm_module_type): New.
12618 (scm_post_boot_init_modules): Initialize from Scheme value.
12619 (the_module, scm_current_module, scm_init_modules): the_module is
12620 now a C only fluid.
12621 (scm_current_module): Export to Scheme.
12622 (scm_set_current_module): Do not call out to Scheme, do all the
12623 work in C. Export procedure to Scheme. Only accept modules, `#f'
12624 is no longer valid as the current module. Only set
12625 scm_top_level_lookup_closure_var and scm_system_transformer when
12626 they are not deprecated.
12627 (scm_module_transformer, scm_current_module_transformer): New.
12628
12629 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12630 scm_current_module_transformer, scm_module_transformer): New.
1c938eb8 12631
253081cf
MV
12632 * gh_data.c: Removed FIXME comment about gh_lookup returning
12633 SCM_UNDEFINED. That's the right thing to do.
12634
12635 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12636 into the conditionally compiled sections.
12637 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12638 scm_current_module_transformer instead of scm_system_transformer.
12639 * init.c (start_stack): Move initialization of
12640 scm_system_transformer to the deprecated section.
1c938eb8 12641
1f7f9ed4
NJ
126422001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12643
12644 * throw.c (scm_throw): Correct docstring.
12645
66c73b76
GH
126462001-04-22 Gary Houston <ghouston@arglist.com>
12647
eefae538
GH
12648 * socket.c: attempted to improve the docstrings slightly.
12649
66c73b76
GH
12650 * net_db.c: remove bogus "close" declaration.
12651 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12652 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12653 moved to socket.c.
12654 * net_db.h: declarations moved too.
12655
12656 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12657 long.
12658 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12659 (VALIDATE_INET6): new macro.
12660 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12661 inet-pton and inet-ntop.
12662 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12663 (scm_addr_vector): use ipv6_net_to_num.
1c938eb8 12664
7a7f7c53
DH
126652001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12666
12667 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12668 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12669
12670 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12671 when compiled in debug mode.
12672
12673 (scm_gc_sweep): Only call smob's free function if it is defined.
12674
12675 * print.c (scm_iprin1): No need to check for validity of smob
12676 type or existence of print function.
12677
12678 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12679 Resizing will not work well with preemptive threading.
12680
12681 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12682
12683 (scm_make_smob_type): Extracted initialization of smob
12684 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12685 of the critical section.
12686
12687 (scm_smob_prehistory): Initialize all smob descriptors. By
12688 default, don't assign a smob free function: Most smob types don't
12689 need one.
12690
12691 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12692
e1368a8d
GH
126932001-04-21 Gary Houston <ghouston@arglist.com>
12694
12695 * socket.c (FLIP_NET_HOST_128): new macro.
12696 (scm_fill_sockaddr): use new macro.
12697 (scm_addr_vector): completed IPv6 address support. added const
12698 to the address parameter.
12699
5a525b84
GH
127002001-04-20 Gary Houston <ghouston@arglist.com>
12701
12702 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12703 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12704 is defined.
12705 (scm_addr_vector): use a switch instead of multiple if statements.
12706 Add support for IPv6 (incomplete) .
e1368a8d 12707 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5a525b84 12708
1a551638
DH
127092001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12710
12711 * struct.c (scm_free_structs): Only pairs may be accessed with
12712 SCM_C[AD]R.
12713
c07b3fef
MD
127142001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12715
a9d861e3
MD
12716 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12717
c07b3fef
MD
12718 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12719 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12720 parentheses in order to get the correct associativity.
12721
af7546eb
DH
127222001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12723
12724 * unif.c (scm_array_to_list): Added missing handling of arrays of
12725 bytes. Thanks to Masao Uebayashi for the bug report.
12726
4daecfee
DH
127272001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12728
12729 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12730 consistently.
12731
726d810a
DH
127322001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12733
12734 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12735
12736 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12737 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
1c938eb8 12738 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
726d810a
DH
12739 SCM_CLOSURE_FORMALS.
12740
12741 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12742 (scm_i_procedure_arity): Prefer stronger predicates like
12743 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12744
12745 * macros.c (macro_print): Extracted macro printing code from
12746 print.c and simplified it.
12747
12748 (scm_macro_type): Use SCM_MACRO_TYPE;
12749
12750 (scm_init_macros): Use macro_print for printing macros.
12751
12752 * print.c (scm_print_opts): Improved option documentation.
12753
12754 (scm_iprin1): Extracted printing of macros to macros.c.
12755 Simplified printing of ordinary closures.
12756
12757 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12758 Martin Grabmueller for the bug report.
12759
e038c042
DH
127602001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12761
12762 This patch eliminates some further applications of SCM_C[AD]R to
12763 non pair cells.
12764
12765 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12766 never been applied to real pairs.
12767
12768 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12769
12770 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
12771
12772 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
12773 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
12774 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
12775
12776 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
12777 Added.
12778
12779 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
12780 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
12781
12782 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
12783 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
12784 SCM_SET{AND,OR}_CAR.
12785
3453619b
GH
127862001-04-17 Gary Houston <ghouston@arglist.com>
12787
12788 * some initial support for IPv6:
1c938eb8 12789
3453619b
GH
12790 * socket.c (scm_fill_sockaddr): improve the argument validation.
12791 don't allocate memory until all args are checked. instead of
12792 unconditional memset of soka, try setting sin_len to 0 if
12793 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
12794 (scm_socket, scm_connect): extend docstrings for IPv6.
12795 (scm_init_socket): intern AF_INET6 and PF_INET6.
12796
216eedfc
DH
127972001-04-17 Niibe Yutaka <gniibe@m17n.org>
12798
12799 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
12800 matches SCM_DEFER_INTS at the beginning of the function.
12801
12802 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
12803
12804 * gc.c (scm_igc): Unconditionally call
12805 SCM_CRITICAL_SECTION_START/END.
12806
12807 * fluids.c (next_fluid_num): Unconditionally call
12808 SCM_CRITICAL_SECTION_START/END.
12809 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
12810
12811 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
12812 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
12813 Removed.
12814
12815 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
12816 Defined as nothing for the case of !defined(USE_THREADS).
12817 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
12818 Removed.
12819 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
12820 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
12821 LINE.
12822 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
12823 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
12824 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
12825 SCM_CRITICAL_SECTION_START/END.
12826 (SCM_REALLOW_INTS: Bug fix. Don't call
12827 SCM_THREAD_SWITCHING_CODE.
12828 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
12829 SCM_THREAD_SWITCHING_CODE directly.
12830 (SCM_ENTER_A_SECTION): Unconditionally use
12831 SCM_CRITICAL_SECTION_START/END. (was:
12832 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
12833
128342001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12835
12836 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
12837 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
12838 allowed to explicitly set this macro via the CFLAGS variable
12839 during make.
12840
12841 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
12842 (SCM_THREAD_CRITICAL_SECTION_START,
12843 SCM_THREAD_CRITICAL_SECTION_END): Renamed
12844 SCM_THREAD_CRITICAL_SECTION_START/END to
12845 SCM_CRITICAL_SECTION_START/END.
12846
f22ed5a0
KN
128472001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
12848
12849 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
12850 instead of bzero.
1c938eb8 12851
f22ed5a0 12852 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
1c938eb8 12853 (MISSING_BZERO_DECL): Remove the declaration.
f22ed5a0
KN
12854
12855 Thanks to NIIBE Yutaka.
12856
508ded1c
MD
128572001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12858
a087ba81
MD
12859 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
12860 goops module should be registered in order to work for an
12861 application which uses libguile statically linked.)
508ded1c 12862
e4b265d8
DH
128632001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
12864
12865 * numbers.[ch] (scm_num2long, scm_num2long_long,
12866 scm_num2ulong_long, scm_num2ulong): Argument position is an
12867 unsigned integer.
12868
12869 * environments.c (eval_environment_folder,
12870 import_environment_folder), gh_data.c (gh_scm2longs,
12871 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
12872 for integers and pointers, respectively.
12873
12874 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
12875 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
12876 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
12877 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
12878
12879 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
12880 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
12881 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
12882 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
12883 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
12884 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
12885
89d04205
NJ
128862001-04-09 Neil Jerram <neil@ossau.uklinux.net>
12887
12888 * strings.c (scm_read_only_string_p): Update docstring to reflect
12889 current (non-)usage of "read only" strings.
40f83c3e
NJ
12890 (scm_make_shared_substring): Clarify docstring by changing
12891 "semantics" to "arguments".
89d04205 12892
4d66be54
MG
128932001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12894
12895 * hooks.c (scm_make_hook, scm_make_hook_with_name),
12896 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
12897 improvements.
12898
1e6808ea
MG
128992001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12900
12901 The following changes make the documentation more consistent.
1c938eb8 12902
1e6808ea
MG
12903 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
12904 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
12905 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
12906 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
12907 ... @end lisp.
12908
12909 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
12910 (scm_array_dimensions, scm_make_shared_array),
12911 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
12912 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
12913 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
12914 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
12915 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
12916 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
12917 macros.c (scm_makmmacro), list.c (scm_append), environments.c
12918 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
12919 @example ... @end example to @lisp ... @end lisp.
12920
12921 * weaks.c (scm_weak_vector): Corrected docstring.
12922
12923 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
12924 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
12925 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
12926 (scm_hashx_set_x, scm_hashx_get_handle),
12927 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
12928 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
12929 vectors.c (scm_vector_fill_x), strings.c
12930 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
12931 objprop.c (scm_set_object_properties_x):
12932 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
12933 strports.c (scm_call_with_input_string), ports.c
12934 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
12935 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
12936 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
12937 (scm_make_weak_vector,scm_weak_vector_p),
12938 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
12939 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
12940 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12941 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
12942 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
12943 Made parameter names match documentation by renaming parameters
12944 and/or fixing docstrings.
1c938eb8 12945
1e6808ea
MG
12946 * numbers.c (scm_ash): Corrected Texinfo markup.
12947
12948 * strop.c (scm_string_index, scm_string_rindex),
12949 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
12950
12951 * vports.c (scm_make_soft_port), unif.c
12952 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
12953 (scm_dimensions_to_uniform_array, scm_transpose_array),
12954 (scm_array_in_bounds_p, scm_uniform_vector_ref),
12955 (scm_bit_count, scm_bit_position, scm_bit_count_star),
12956 (scm_array_to_list, scm_list_to_uniform_array),
12957 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
12958 (scm_open_input_string, scm_open_output_string),
12959 (scm_get_output_string), strop.c (scm_string_copy),
12960 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
12961 (scm_get_internal_real_time, scm_times),
12962 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
12963 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
12964 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
12965 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
12966 simpos.c (scm_system), random.c (scm_random_uniform),
12967 (scm_random_normal, scm_random_exp), ramap.c
12968 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
12969 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
12970 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
12971 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
12972 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
12973 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
12974 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
12975 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
12976 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
12977 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
12978 (scm_logand, scm_logior, scm_logxor, scm_lognot),
12979 (scm_integer_expt, scm_bit_extract, scm_logcount),
12980 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
12981 net_db.c (scm_inet_netof, scm_lnaof), modules.c
12982 (scm_interaction_environment), macros.c (scm_makacro),
12983 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
12984 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
12985 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
12986 (scm_fluid_ref), filesys.c (scm_open_fdes),
12987 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
12988 Docstring correction: `Returns' -> `Return'
12989
1c938eb8
TTN
12990 * gc.c (scm_set_debug_cell_accesses_x):
12991 (s_scm_gc_set_debug_check_freelist_x):
1e6808ea
MG
12992 * fluids.c (scm_fluid_p): Added texinfo markup.
12993
12994 * error.c (scm_strerror): Made docstring more precise.
12995
12996 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
12997 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
12998 (scm_symbol_p, scm_symbol_to_string), strorder.c
12999 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
13000 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
13001 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
13002 (scm_string_ci_geq_p), strop.c (scm_string_copy),
13003 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
13004
9a6976cd
DH
130052001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
13006
13007 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
13008 mode, as suggested by Michael Livshin.
13009
463b2219
ML
130102001-03-31 Michael Livshin <mlivshin@bigfoot.com>
13011
13012 * backtrace.c (display_backtrace_body): since the `print_state'
13013 variable is not used (instead its data field is used directly as
13014 `pstate'), protect it from the hungry compiler optimizations.
13015 thanks to Bill Schottstaedt for the report.
13016
61045190
DH
130172001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13018
13019 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
13020 It is only defined and used if guile is compiled with
13021 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
13022 let cells with a free_cell type tag be visible outside of the
13023 garbage collector when in debug mode.
13024
13025 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
13026
13027 (scm_assert_cell_valid): Use a local static variable to avoid
13028 recursion.
13029
13030 (MARK): Only check for rogue cell pointers in debug mode. Use
13031 scm_cellp for this purpose and place all checks for rogue pointers
13032 into that function. Further, since due to conservative scanning
13033 we may encounter free cells during marking, don't use the standard
13034 cell type accessor macro to determine the cell type.
13035
13036 (scm_cellp): Check if the cell pointer actually points into a
13037 card header.
13038
13039 (scm_init_gc): Initalize scm_tc16_allocated.
13040
13041 * gc.h (GCH): Renamed to SCM_GC_H.
13042
13043 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
13044 might be unnecessary, but I feel better this way :-)
13045
13046 (SCM_GC_CELL_TYPE): New macro.
13047
13048 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
13049 in guile, and it is unlikely that they will be applied to real
13050 pairs anyway.
13051
13052 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
13053
13054 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
13055 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
13056
13057 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
13058 make sure that in debug mode no free cell will ever be visible
13059 outside of the garbage collector.
13060
85d6df6a
DH
130612001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13062
13063 * async.c (scm_asyncs_pending): Don't use != to compare SCM
13064 values.
13065
13066 * async.c (scm_system_async), variable.c (scm_make_variable,
13067 scm_make_undefined_variable): Use scm_cons to create a pair.
13068
13069 * debug.c (scm_reverse_lookup): Perform proper type checking.
13070 Remove suspicious use of SCM_SLOPPY_CONSP.
13071
13072 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
13073 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
13074 the corresponding optimization.
13075
13076 * eval.c (iqq): Use proper type check.
13077
13078 (scm_m_expand_body): Remove redundant type checks.
13079
13080 (promise_print): Don't access promise cells as pairs.
13081
13082 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
13083 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
13084 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
13085 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
13086 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
13087
13088 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
13089 (scm_iprin1): Use new macro predicate and accessors.
13090
13091 * eval.h (scm_tc16_macro): Removed declaration. It is declared
13092 in macros.h.
13093
13094 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
13095 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
13096 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
13097 SCM_VARIABLE_H. Even the macros that are used to inhibit
13098 including a header file twice should be in the SCM_ namespace.
13099
13100 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
13101 properties.c (scm_primitive_property_ref,
13102 scm_primitive_property_del_x): Prefer stronger predicates like
13103 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13104
13105 * gc.c (MARK): Use proper macros to access procedure-with-setter
13106 cell elements and closure cell elements.
13107
13108 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
13109 access free cells as pairs.
13110
13111 (scm_unprotect_object): scm_hashq_get_handle returns #f if
13112 no hashtab entry is found.
13113
13114 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
13115 SCM_CLR_PORT_OPEN_FLAG.
13116
13117 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
13118 use SCM_SET_C[AD]R for uninitialized cells.
13119
13120 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
13121 If the hashtable has no slots, return #f instead of '(). This
13122 unifies the return value with most assoc-functions.
13123
13124 (scm_hash_fn_ref): Use proper type check.
13125
13126 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
13127 Removed references to non-existing functions from documentation.
13128
13129 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
13130 access keyword cell elements.
13131
13132 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
13133 macros.
13134
13135 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
13136
13137 * print.c (scm_iprlist): Added comment. Improved loop
13138 conditions.
13139
13140 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
13141 pairs.
13142
13143 * smob.c (scm_markcdr): Don't access smob cells as pairs.
13144
13145 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
13146
13147 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
13148 cells as pairs.
13149
13150 * variable.c (variable_print, variable_equalp, scm_variable_ref,
13151 scm_variable_set_x): Use proper macros to access variable cell
13152 elements.
13153
13154 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
13155
13156 * variable.h (SCM_VARVCELL): Don't access variable cells as
13157 pairs.
13158
13159 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
13160 added FIXME comment, removed register specifier.
13161
1b27e91a
KN
131622001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
13163
13164 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
13165 * init.c (scm_init_guile_1): Don't init goopscore module.
13166
16c634ec
MV
131672001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13168
13169 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
13170
91344ceb
MG
131712001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13172
13173 * strop.c (scm_string_to_list): Fixed docstring markup.
13174 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
13175 (scm_string_downcase, scm_string_capitalize_x),
13176 (scm_string_capitalize): Rewrote and corrected docstrings.
13177 (scm_string_ci_to_symbol): Made docstring more explicit.
13178
07576812
MV
131792001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13180
13181 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
13182 eval.c can use it.
13183 (scm_call_with_values): Removed.
13184 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
13185 so that it can be exported.
13186 (scm_call_with_values): Removed.
1c938eb8 13187
07576812
MV
13188 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
13189 * eval.c: Include "libguile/values.h"
13190 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
13191 New.
13192 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
13193 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
13194 New delcarations to support above change.
13195
13196 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
13197 errors with last change.
1c938eb8 13198
07576812
MV
131992001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
13200
13201 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
13202 scm_i_eval): Moved the application of the system transformer from
13203 scm_i_eval to scm_primitive_eval.
13204
a17bb5fd
NJ
132052001-03-23 Neil Jerram <neil@ossau.uklinux.net>
13206
a6be01a4
NJ
13207 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
13208
a17bb5fd
NJ
13209 * strop.c (scm_string_index): Fix docstring line break
13210 regression.
13211
13212 * list.c (scm_cons_star): Fix docstring typo.
13213
be54b15d
DH
132142001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13215
13216 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
13217 (big2str), ports.c (scm_drain_input), read.c (scm_read,
13218 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
13219 scm_make_string, scm_string_append), strports.c (st_resize_port,
13220 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
13221 scm_makstr with calls to scm_allocate_string.
13222
13223 * strings.[ch] (scm_allocate_string): New function.
13224
13225 * strings.[ch] (scm_makstr): Deprecated.
13226
789ecc05
GH
132272001-03-18 Gary Houston <ghouston@arglist.com>
13228
6d163216
GH
13229 * posix.c (scm_tmpnam): check that return value from tmpnam is not
13230 NULL. rewrote the docstring.
13231 (scm_mkstemp): new procedure implementing "mkstemp!".
13232 * posix.h: declare scm_mkstemp.
13233
789ecc05
GH
13234 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
13235 normally it would be found in netdb.h.
13236
c6c79933
GH
132372001-03-17 Gary Houston <ghouston@arglist.com>
13238
e9e225e5
GH
13239 * sort.c (scm_sort): move sortvec variable to avoid a compiler
13240 warning when HAVE_ARRAYS is not defined. move len too.
13241
13242 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
13243 (EXTRA_DOT_X_FILES): let configure set the value.
13244 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
13245
c6c79933
GH
13246 * gc.c (scm_must_malloc): changed the comment explaining when
13247 scm_must variants of malloc/free etc., should be used, based on
13248 explanation from Dirk Herrmann.
13249 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
13250 string with procedure name. use scm_must_malloc instead of malloc.
13251 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
13252 of malloc/free.
13253 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
13254 scm_ungetc): use scm_must variants of malloc/realloc/free.
13255 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
13256
b3fcac34
DH
132572001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13258
13259 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13260 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
13261 scm_wrong_type_arg instead.
13262
13263 (SCM_WNA): Deprecated.
13264
13265 * error.[ch] (scm_wta): Deprecated.
13266
13267 * numbers.c (s_i_log): Minor comment fix.
13268
13269 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
13270 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
13271 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
13272 wrong-num-args or misc errors.
13273
13274 * unif.c (scm_make_shared_array, scm_transpose_array,
13275 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
13276 Validate the rest argument (note: this is only done when guile is
13277 built with SCM_DEBUG_REST_ARGUMENT=1)
13278
13279 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
13280 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
13281
13282 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
13283 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
13284
68baa7e7
DH
132852001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13286
13287 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
13288 instead of scm_wrong_num_args.
13289
13290 * coop-threads.c: Don't include libguile/strings.h. (Was only
13291 needed for former implementation of SCM_WRONG_NUM_ARGS.)
13292
13293 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
13294 wrong-num-args errors.
13295
9f40cd87
DH
132962001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13297
13298 * error.[ch] (scm_error_num_args_subr): New function.
13299
5352393c
MG
133002001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13301
13302 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
13303 (scm_length, scm_append, scm_reverse, scm_list_ref),
13304 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
13305 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
13306 (scm_delete1_x), gc.c (scm_map_free_list),
13307 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
13308 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
13309 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
13310 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
13311 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
13312 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
13313 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
13314
13315 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
13316 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13317 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
13318 symbols.c (scm_symbol_interned_p), numbers.c
13319 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
13320 markup.
13321
a9205f07
KN
133222001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
13323
13324 * snarf.h (SCM_CONST_LONG): Deprecated.
13325 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
13326
6d583887
MV
133272001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13328
13329 * numbers.c (scm_num2ulong): Check that a bignum is positive
13330 before looking at the magnitude. Correctly check for overflow
13331 during conversion.
13332 (scm_num2long_long): Likewise.
13333 (scm_num2ulong_long): New.
13334 (ULONG_LONG_MAX): Define if not already defined.
13335 * numbers.h: (scm_num2ulong_long): New prototype.
1c938eb8 13336
e87a03fc
MG
133372001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13338
13339 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
13340
13341 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
13342 (SCM_OPOUTSTRPORTP): New predicate macros.
13343 (scm_open_input_string, scm_open_output_string),
13344 (scm_get_output_string): New prototypes.
1c938eb8 13345
e87a03fc
MG
13346 * strports.c (scm_open_input_string, scm_open_output_string),
13347 (scm_get_output_string): New procedures (SRFI-6 compliant).
13348 Made scm_tc16_strport non-static.
13349
160bb34a
DH
133502001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13351
13352 * macros.h (SCM_ASSYNT): Removed unused object argument from
13353 signature.
13354
13355 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
13356 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
13357 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
13358 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
13359 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
13360 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
13361 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
13362 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13363 scm_m_atdispatch): Removed unused object argument from call to
13364 SCM_ASSYNT.
13365
80dee77b
DH
133662001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13367
13368 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
13369 const int* to reflect that the input array of integers remains
13370 unchanged. Thanks to Brett Viren for the hint.
13371
d3dd80ab
MG
133722001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13373
13374 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
13375 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
13376 in various places.
13377 (gh_scm2newstr, gh_symbol2newstr): Change call to
13378 scm_must_malloc() to malloc(), because user-free()able memory is
13379 allocated.
13380
13381 * gc.c: Added declaration of `scm_debug_check_freelist'.
13382
26a3038d
MG
133832001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13384
13385 * ports.c (scm_port_mode): Changed `mode' array size to 4.
13386
1f3908c4
KN
133872001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
13388
13389 * strports.c (scm_object_to_string): New procedure.
13390 (scm_strprint_obj): Deprecated.
13391 * strports.h: Reflect the changes.
13392
e11208ca
DH
133932001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
13394
13395 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
13396
13397 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13398 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
13399 SCM_ASSYNT to check for correct argument types. Either use some
13400 SCM_VALIDATE_* macro or an explicit test.
13401
13402 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
13403 misc-errors.
13404
13405 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
13406 instead of calling scm_wta.
13407
67e8151b
MG
134082001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13409
13410 * load.c (scm_primitive_load, scm_primitive_load_path),
13411 (scm_sys_search_load_path): Corrected docstrings (file ->
13412 filename).
13413
13414 * eval.c (scm_force): Added texinfo markup to docstring.
13415 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13416
13417 * debug-malloc.c: Reinserted #include <stdio.h>.
13418
e0c08f17
KN
134192001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13420
e39c3de4
KN
13421 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13422
e0c08f17
KN
13423 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13424 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13425 Use SCM_LISTn instead of scm_listify.
13426
e6e2e95a
MD
134272001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13428
13429 * _scm.h: Removed #include <errno.h>.
13430
13431 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13432 errno variable (can be a macro on some systems, for example when
13433 using linux libc with threads).
13434
13435 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13436 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13437 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13438 #include <errno.h> in these 20 out of 100 files.
1c938eb8 13439
97d0e20b
GH
134402001-03-10 Gary Houston <ghouston@arglist.com>
13441
13442 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13443 not already defined.
13444
e75341b3
MD
134452001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13446
13447 * coop.c: Inserted #include <stdio.h>.
13448
13449 * iselect.c: Reinserted #include <stdio.h>.
13450
74355186
MV
134512001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13452
13453 * posix.c: Replaced `#define' of __USE_XOPEN right before
13454 including unistd.h with a define of _GNU_SOURCE at the very top of
13455 the file.
13456
783e7774
KN
134572001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13458
13459 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13460 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13461 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13462 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13463 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13464 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13465 print.c, procprop.c, procs.c, properties.c, ramap.c,
13466 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13467 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13468 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
1c938eb8 13469 Remove #include <stdio.h>
783e7774
KN
13470 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13471
13472 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13473
9a677c37
MG
134742001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13475
13476 * posix.c (scm_gethostname): Set initial name length to 256 for
13477 Solaris.
13478
94e6d793
MG
134792001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13480
13481 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13482 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13483 (scm_sethostname, scm_gethostname): New prototypes.
13484
13485 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13486 <sys/file.h>, if present.
13487 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13488 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13489 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13490 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13491 (scm_sethostname, scm_gethostname): New procedures.
13492
650a1cf9
NJ
134932001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13494
13495 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13496 not optional (ii) "recommend" spelling correction.
13497
9636b49c
MD
134982001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13499
5e4a4d09
MD
13500 * ramap.c (racp): Removed optimization which caused array copying
13501 to fail if the two arrays shared storage. Re-inserted the IVDEP
13502 macros removed in the change of 2000-03-09. (Don't really have a
13503 complete grasp of what they are for, but they seem to be necessary
13504 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13505
9636b49c
MD
13506 * hash.c (scm_string_hash): Don't downcase characters.
13507
04a4d666
MD
135082001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13509
9636b49c 13510 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
04a4d666
MD
13511 size from 277 --> 1009.
13512
13513 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13514 function.
13515
13516 * coop-threads.c: Fixed change of 2001-03-06.
1c938eb8 13517
04a4d666
MD
13518 * validate.h: Code formatting.
13519
66418d34
KN
135202001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13521
13522 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13523 (*.doc): Add dependency on guile-snarf.awk.in.
13524
13525 * guile-snarf.awk.in: Neglect spaces at the end of
13526 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13527 middle of docstrings. (To avoid the problem with gcc-2.96.)
13528
2ade72d7
DH
135292001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13530
13531 * coop-threads.c (scm_call_with_new_thread), load.c
13532 (scm_primitive_load, scm_sys_search_load_path), random.c
13533 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13534 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13535 (potentially) issue a scm-misc-error or wrong-num-args error
13536 message.
13537
13538 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13539 about the expected type with the wrong-type-arg error message.
13540
13541 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13542 a C level bug that can't be fixed from scheme anyway.
13543
586d7da2
MD
135442001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13545
13546 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13547 Duplicate bindings are OK in a let* since a let* is semantically
13548 equivalent to a nested set of let:s.
13549
1dd05fd8
MG
135502001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13551
13552 * print.c (scm_print_options): Fixed texinfo in docstring.
13553
13554 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13555 the underlying functions getservent, getprotoent or getnetent
13556 return NULL instead of signalling an error.
13557
439006bf
GH
135582001-03-04 Gary Houston <ghouston@arglist.com>
13559
13560 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13561 taking an unexpectedly large filename for an AF_UNIX socket from
13562 bind/connect/sendto (thanks to Martin Grabmueller).
1c938eb8 13563
439006bf
GH
13564 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13565 former and adjusted the latter.
13566 (scm_socket, scm_socketpair): cosmetic changes.
13567 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13568 size_t as socklen_t substitute. don't restrict args/return values
13569 to INUM: allow full range of int or size_t.
13570 (scm_fill_sockaddr): check arguments before allocating memory, to
13571 avoid leakage. use malloc, not scm_must_malloc.
13572 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13573 substitute. free the sockaddr structure before throwing an error.
13574 (scm_init_add_buffer): procedure removed, together with its static
13575 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13576 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13577 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13578 scm_sendto): use a local buffer instead of scm_addr_buffer.
13579 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13580 not size_t.
13581 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13582 call to detect whether recvfrom could be bothered to set the address.
13583 (scm_init_socket): don't call scm_init_addr_buffer.
13584
276dd677
DH
135852001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13586
13587 * debug.c (scm_procedure_source, scm_procedure_environment),
13588 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13589 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13590 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13591 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13592 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13593 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13594 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13595 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13596 scm_array_to_list, scm_array_prototype), validate.h
13597 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13598 scm_misc_error or scm_wrong_type_arg instead.
13599
13600 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13601
5e03762c
MD
136022001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13603
13604 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13605 (scm_sys_tag_body): Added.
13606
db4b4ca6
DH
136072001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13608
13609 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13610 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13611 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13612 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13613 options.c (scm_options), ports.c (scm_remove_from_port_table),
13614 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13615 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13616 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13617 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13618 instead.
13619
87e7741d
MD
136202001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13621
13622 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13623
d19b0aac
MV
136242001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13625
13626 * eval.c (scm_s_duplicate_bindings): New error message.
13627 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13628
2fd945df
MV
136292001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13630
13631 * eval.h (SCM_EVALIM2): New macro. Use it when a
13632 immediate, literal constant should be evaluated.
13633 * eval.c (scm_s_duplicate_formals): New error message string.
13634 (scm_c_improper_memq): New function.
13635 (scm_m_lambda): Check for duplicate arguments.
13636 (scm_ceval, scm_deval): When executing a body: only cons a new
13637 toplevel environment frame when it is different from the
13638 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13639 check for empty combinations; use SCM_EVALIM2 for the same reason
13640 in the non-toplevel loop.
13641 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13642 New labels with the meaning of their non-"nontoplevel" partners,
13643 but they are used when it is known that the body is not evaluated at
13644 top-level.
13645 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13646 reporting for empty combinations.
13647
9e6fc585
KN
136482001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13649
13650 * Remove dump facilities.
13651 * dump.c, dump.h: Removed.
13652 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13653 * init.c: Remove #include "libguile/dump.h".
13654 (scm_init_guile_1): Remove scm_init_dump.
13655 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13656 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13657 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13658 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13659
13660 * keywords.c: Remove #include "libguile/dump.h".
13661 (keyword_dump, keyword_undump): Removed.
13662 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13663
eae54bf0
MG
136642001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13665
13666 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13667 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13668 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13669 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13670 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13671 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13672 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13673 to @code{} as the texinfo manual recommends, converted the
13674 examples to use a @lisp{}-environment.
13675
13676 * strports.c (scm_eval_string): Cleaned up the docstring.
13677
13678 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13679 markup.
13680
13681 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13682 (scm_number_to_string, scm_string_to_number, scm_number_p)
13683 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13684 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13685 (scm_ash): Added texinfo markup and removed obsolete @refill.
13686 (scm_gr_p): Corrected comment.
13687 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13688 docstring) comments.
13689 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13690 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13691 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13692 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13693 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13694 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13695 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13696 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13697
23deee81
DH
136982001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13699
13700 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13701 (Obviously nobody compiles with SCM_RECKLESS defined...)
13702
13703 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13704
6fe692e9
MD
137052001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13706
13707 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13708
13709 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13710
27c37006
NJ
137112001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13712
13713 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13714 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13715 since use of `z' suggests that the arguments may be complex.
13716
13717 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13718 typos.
13719
2069af38
NJ
137202001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13721
13722 * dump.c (scm_binary_write, scm_binary_read), eval.c
13723 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13724 scm_guardian_greedy_p, scm_make_guardian), fports.c
13725 (scm_file_port_p): Minor docstring fixes.
13726
b42ff180
MV
137272001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13728
2069af38 13729 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
97ea55f8
MV
13730
13731 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13732 scm_i_eval.
13733 (make_class_from_template): Do not bother to set the current
13734 module around the call to DEFVAR, scm_eval takes care of that.
13735 (scm_init_goops): Make scm_module_goops and
13736 scm_goops_lookup_closure permanent objects.
1c938eb8 13737
97ea55f8
MV
13738 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13739 top level, create a fresh top-level environment for each
13740 expression instead of mutating the exisint frame. This is
13741 important when that frame is closed over.
13742
b42ff180
MV
13743 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13744 SCM_DIGSPERLONG instead of DIGSPERLONG.
13745
09f2ab1e
MV
137462001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13747
13748 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13749 before applying arrow procedure in `cond' and before applying
13750 receiver procedure in call-with-current-continuation.
13751 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13752 macro. The argument is expanded more than one time.
13753
13754 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13755 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13756
137572001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13758
13759 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13760 notice and license.
13761
7090240c
MG
137622001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13763
13764 * variable.c (scm_make_variable, scm_make_undefined_variable)
13765 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13766 (scm_variable_bound_p), values.c (scm_values)
13767 (scm_call_with_values), unif.c (scm_bit_count)
13768 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13769 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13770 (scm_read_only_string_p, scm_string_length, scm_string_ref)
13771 (scm_string_set_x, scm_substring, scm_string_append), stime.c
13772 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
13773 (scm_copy_random_state, scm_random), print.c (scm_newline)
13774 (scm_write_char, scm_simple_format), debug-malloc.c
13775 (scm_malloc_stats), environments.c (scm_environment_p)
13776 (scm_environment_bound_p, scm_environment_ref)
13777 (scm_environment_fold, scm_environment_define)
13778 (scm_environment_undefine, scm_environment_set_x)
13779 (scm_environment_cell, scm_environment_observe)
13780 (scm_environment_observe_weak, scm_environment_unobserve)
13781 (scm_make_eval_environment, scm_eval_environment_p)
13782 (scm_eval_environment_set_local_x, scm_eval_environment_local)
13783 (scm_eval_environment_imported)
13784 (scm_eval_environment_set_imported_x, scm_make_import_environment)
13785 (scm_import_environment_p, scm_import_environment_imports)
13786 (scm_import_environment_set_imports_x, scm_make_export_environment)
13787 (scm_export_environment_p, scm_export_environment_private)
13788 (scm_export_environment_set_private_x)
13789 (scm_export_environment_signature)
13790 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
13791 Added texinfo markup.
13792
13793 * ports.c (scm_drain_input): Lowercased argument to @var.
13794 (scm_current_input_port, scm_current_output_port): Filled in
13795 missing explanation.
13796 (scm_current_load_port, scm_set_current_output_port)
13797 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
13798 Added texinfo markup.
13799
13800 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
13801 (scm_release_arbiter): Added texinfo markup to docstrings.
13802 Changed `Returns' to `Return'.
13803 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
13804
25703850
NJ
138052001-02-16 Neil Jerram <neil@ossau.uklinux.net>
13806
13807 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
13808 by doubling them to `@@'.
13809
73c0fdce
MG
138102001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13811
13812 * numbers.c (scm_lognot), random.c (scm_random,
13813 scm_random_normal, scm_random_solid_sphere_x,
13814 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
13815 scm_random_exp), dynwind.c
13816 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
1c938eb8 13817
73c0fdce
MG
13818 * goops.c (scm_sys_initialize_object, scm_instance_p,
13819 scm_class_name, scm_class_precedence_list, scm_class_slots,
13820 scm_class_environment, scm_generic_function_name,
13821 scm_generic_function_methods, scm_method_generic_function,
13822 scm_method_specializers, scm_method_procedure, scm_make_unbound,
13823 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
13824 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
13825 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
13826 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
13827 scm_class_direct_supers, scm_class_direct_slots,
13828 scm_class_direct_subclasses, scm_class_direct_methods,
13829 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
13830 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
13831 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
13832 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
13833 scm_memoized_environment, scm_procedure_name,
13834 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
13835 objects.c
13836 (scm_class_of, scm_entity_p, scm_operator_p,
13837 scm_set_object_procedure_x, scm_object_procedure,
13838 scm_make_class_object), hooks.c (scm_make_hook_with_name,
13839 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
13840 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
13841 scm_hook_to_list), lang.c
13842 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
13843 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
13844 (scm_print_options, scm_port_with_print_state,
13845 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
13846 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
13847 scm_make_procedure_with_setter, scm_procedure), throw.c
13848 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
13849 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
13850 scm_stack_ref, scm_stack_length, scm_frame_p,
13851 scm_last_stack_frame, scm_frame_number, scm_frame_source,
13852 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
13853 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
13854 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
13855 (scm_dirname, scm_basename), dynwind.c
13856 (scm_wind_chain), read.c (scm_read_options, scm_read,
13857 scm_read_hash_extend), gc.c
13858 (scm_unhash_name), eval.c (scm_eval_options_interface,
13859 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
13860 (scm_display_error, scm_set_print_params_x,
13861 scm_display_application, scm_display_backtrace, scm_backtrace),
13862 async.c (scm_async, scm_system_async, scm_async_mark,
13863 scm_system_async_mark, scm_run_asyncs, scm_noop,
13864 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
13865 scm_mask_signals): Added docstrings.
13866
e228a203
KN
138672001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
13868
13869 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
13870 address of car/cdr. (Thanks to Dirk Herrmann)
13871 Use scm_sizet to obtain the length of strings.
13872 (Thanks to Matthias Koeppe)
13873
1552a59d
MV
138742001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
13875
13876 * symbols.c (scm_mem2symbol): Put a empty statement after the
13877 next_symbol label. This is mandated by ANSI, appearantly.
13878
3178f751
MV
138792001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13880
13881 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
13882 sense to compile for a specific kernel version. Do not include
13883 <asm/signal.h> while defining __KERNEL__. This hack should no
13884 longer be needed and caused problems.
13885
7af4defe
MV
138862001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
13887
13888 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
13889 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
13890 can not deal with immediates.
13891
5d6bb349
KN
138922001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
13893
13894 * list.c (scm_list_copy): Validate the first argument.
13895
ec9709f0
MV
138962001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
13897
13898 Fix evaluator so that top-level expressions are correctly
13899 evaluated with respect to the module system.
1c938eb8 13900
ec9709f0
MV
13901 * modules.h. modules.c (scm_current_module_lookup_closure): New
13902 function.
13903
13904 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
13905 prototypes.
13906 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
13907 names to better reflect their meaning.
13908
13909 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
13910 evaluated at top-level and synronize lookup closure before
13911 executing every subform.
13912 (scm_primitve_eval_x, scm_primitive_eval): New functions.
13913 (scm_eval_x, scm_eval): Reimplement in terms of
13914 scm_primitive_eval_x and scm_primitive_eval, respectively.
1c938eb8 13915
ec9709f0
MV
139162001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
13917
13918 * macros.c (scm_macro_name, scm_macro_transformer): Use
13919 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
13920 Thanks!
13921
42417394
KN
139222001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
13923
13924 * dump.c (scm_store_bytes): Store data size before data.
13925 (scm_restore_bytes): Restore data size. Takes a pointer to size.
13926 * dump.h (scm_restore_bytes): Updated.
13927
bf942687
KN
139282001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
13929
13930 * dump.c: Use double cells for update schedule.
13931
1be4270a
KN
139322001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
13933
13934 * ports.c (scm_unread_char): Take an optional argument.
13935
548728ea
MV
139362001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13937
13938 * modules.h (scm_selected_module, scm_current_module): Renamed
13939 scm_selected_module to scm_current_module to synchronize Scheme
13940 and C names.
13941 (scm_select_module, scm_set_current_module): Likewise. Changed
13942 all uses.
1c938eb8 13943
548728ea
MV
13944 * ports.c (scm_port_for_each): Make a snapshot of the port table
13945 before iterating over it. The table might change while the user
13946 code is running. With the snapshot, the user can depend on the
c5408bc3 13947 fact that each port that existed at the start of the iteration is
548728ea
MV
13948 encountered exactly once. (ice-9 popen) depends on this.
13949
cb0d8be2
DH
139502001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13951
13952 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
13953
13954 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
13955 range checking for the size parameter. Thanks to Martin
13956 Grabmueller for the hint.
13957
13958 (scm_makstr): Reordered string initialization to make interrupt
13959 deferring unnecessary.
13960
13961 * vectors.c (scm_make_vector): Fixed range checking.
13962
e382fdbe
DH
139632001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13964
13965 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
13966
13967 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
13968 checking of the size parameter for type correctness and valid
13969 range. Thanks to Rob Browning for reporting the problem. Instead
13970 of deferring interrupts, scm_remember_upto_here_1 is used.
13971
bf8f0922
KN
139722001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13973
13974 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
13975 (scm_dump_cell_update): Removed.
13976 (scm_dump_update): Renamed from scm_dump_object_update.
13977 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
13978 a pointer instead of returning a value.
13979 * keywords.c (keyword_undump): Updated.
13980
914cceec
KN
139812001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13982
13983 * dump.c, dump.h: Modified a lot.
5f17c66f 13984 (SCM_DUMP_COOKIE): Version 0.1
914cceec
KN
13985 (scm_dump_mark): Removed.
13986 (scm_restore_cell_object, scm_store_cell_object): New functions.
13987
13988 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
13989 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
13990 New slots: dump, undump.
13991 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
13992 Updated.
13993
13994 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
13995 (keyword_undump): Renamed from keyword_alloc.
13996 (scm_init_keywords): Set keyword_dump and keyword_undump.
13997
ecf470a2
ML
139982001-02-03 Michael Livshin <mlivshin@bigfoot.com>
13999
14000 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
14001 the deprecated SCM_DOUBLE_CELLP.
14002
14003 * tags.h (SCM_DOUBLE_CELLP): deprecated.
14004
03416a99
KN
140052001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
14006
14007 * dump.c, dump.h: New files.
14008 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
14009 * init.c: #include "libguile/dump.h".
14010 (scm_init_guile_1): Call scm_init_dump.
14011 * smob.h (scm_smob_descriptor): New slots: dump_mark,
14012 dump_dealloc, dump_store, undump_alloc, undump_restore,
14013 undump_init.
14014 * smob.c (scm_make_smob_type): Init the new slots.
14015 (scm_set_smob_dump, scm_set_smob_undump): New functions.
14016 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
14017
14018 * keywords.c: #include "libguile/dump.h".
14019 (keyword_dealloc, keyword_alloc): New functions.
14020 (scm_init_keywords): Set smob_dump and smob_undump.
14021
00ffa0e7
KN
140222001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
14023
14024 * vectors.c (scm_c_make_vector): New function.
14025 * vectors.h (scm_c_make_vector): Declared.
14026 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
14027 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
14028 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
14029 (scm_make_method_cache, scm_i_vector2list,
14030 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
14031 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
14032 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
14033 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
14034 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
14035 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
14036 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
14037 (scm_vector, scm_make_vector): Use scm_c_make_vector.
14038
14039 * hashtab.c (scm_c_make_hash_table): New function.
14040 * hashtab.h (scm_c_make_hash_table): Declared.
14041 * environments.c (scm_make_leaf_environment,
14042 scm_make_eval_environment), gc.c (scm_init_storage),
14043 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
14044 Use scm_c_make_hash_table.
14045
b8446ce8
MD
140462001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14047
14048 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
14049
e3239868
DH
140502001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14051
14052 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
14053 end of docstring.
14054
14055 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
14056 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
14057 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
14058 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
14059 srcprop.c (scm_source_properties, scm_set_source_properties_x,
14060 scm_source_property, scm_set_source_property_x), sort.c
14061 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
14062 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
14063 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
14064 docstrings.
14065
41ee56dd
MD
140662001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14067
14068 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
14069 really get that arg.
14070
b6311c08
KN
140712001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
14072
14073 * goops.c (s_scm_get_keyword): Bug fix.
14074
a49af0c0
DH
140752001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14076
14077 The following patch was sent by Martin Grabmueller. It makes sure
14078 that in case of parameter errors the correct function name is
14079 shown, and that parameter types are only checked once.
14080
14081 * strop.c (string_copy, string_upcase_x, string_downcase_x,
14082 string_capitalize_x): New functions. Each one performs the core
14083 functionality of the corresponding scm_* function.
14084
14085 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
14086 scm_string_downcase_x, scm_string_downcase,
14087 scm_string_capitalize_x, scm_string_capitalize): Reduced to
14088 parameter checking wrappers of the above functions.
14089
13070bd3
DH
140902001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14091
14092 * continuations.c, dynl.c, keywords.c, load.c: Include
14093 strings.h. Thanks to Bill Schottstaedt for the bug report.
14094
2f2b390c
DH
140952001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14096
14097 * backtrace.c (display_header): Make sure that line and column
14098 information is shown independent of whether the port the code was
14099 read from had an associated filename. Thanks to Martin
14100 Grabmueller for providing this patch.
14101
efa40607
DH
141022001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14103
14104 * fports.[ch] (scm_file_port_p): New primitive.
14105
a98bddfd
DH
141062001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14107
14108 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
14109 These are now defined in fports.c, strports.c and vports.c.
14110
14111 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
14112 vports.c (scm_tc16_sfport): Made variables (were macros defined in
14113 tags.h).
14114
14115 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
14116 (scm_make_sfptob): Made static. These return a type code now.
14117
14118 fports.c (scm_init_fports), strports.c (scm_init_strports),
14119 vports.c (scm_init_vports): Create the corresponding port types.
14120
14121 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
14122 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
14123
14124 * init.c (scm_init_guile_1): Make sure strports are initialized
14125 before gdbint.
14126
14127 * ports.[ch] (scm_make_port_type): Changed the return type to
14128 scm_bits_t.
14129
14130 * ports.c (scm_ports_prehistory): Don't create any port types
14131 here.
14132
14133 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
14134 against scm_tc16_fport directly.
14135
0419a528
DH
141362001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14137
14138 * srcprop.c (scm_set_source_property_x): Fix to handle
14139 (set-source-property! <obj> 'copy <datum>) correctly.
14140
6d36532c
GH
141412001-01-24 Gary Houston <ghouston@arglist.com>
14142
14143 * filesys.c (scm_link): docstring fix.
14144 * fports.h (scm_setfileno): obsolete declaration removed.
14145 * posix.c: bogus popen declaration removed.
14146
14147 * rdelim.c: new file, split from ioext.c.
14148 * rdelim.h: new file, split from ioext.h
14149 * Makefile.am: add rdelim.c and related files.
14150 * init.c: call scm_init_rdelim. include rdelim.h.
14151
3ba5a6c2
DH
141522001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14153
14154 This patch was sent by Martin Grabmueller and makes sure that
14155 parameter errors are reported correctly by the lexicographic
14156 ordering predicates.
14157
14158 * strorder.c (string_less_p, string_ci_less_p): New functions.
14159
14160 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
14161 functionality into string_less_p, string_ci_less_p respectively.
14162 The remaining code is just a wrapper to do the parameter
14163 checking.
14164
14165 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
14166 parameters and call string_less_p instead of scm_string_less_p.
14167
14168 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
14169 Check the parameters and call string_less_ci_p instead of
14170 scm_string_ci_less_p.
14171
e40a4095
DH
141722001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14173
ed6a2db9
DH
14174 This patch modifies scm_display_error to perform parameter
14175 checking. Thanks to Neil Jerram for the bug report.
14176
e40a4095
DH
14177 * backtrace.[ch] (scm_i_display_error): New function.
14178
14179 * backtrace.c (scm_display_error): Added parameter check and
14180 extracted the core functionality into function
14181 scm_i_display_error.
14182
14183 * throw.c (handler_message): Call scm_i_display_error to display
14184 the error message.
14185
f1e06a96
MD
141862001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14187
14188 * eval.c (SCM_APPLY): Added # args check for application of
14189 procedures with arity 3. (Thanks to Anders Holst.)
14190
30ea841d
DH
141912001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14192
14193 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
14194
14195 (SCM_OPDIRP): Deprecated.
14196
14197 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
14198 SCM_OPN.
14199
14200 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
14201 Instead, give an explicit error message in case the directory is
14202 closed.
14203
14204 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
14205 instead of SCM_OPENP and SCM_CLOSEDP.
14206
14207 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
14208
312ae976
DH
142092001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
14210
14211 * eval.c (inner_eval, scm_eval): Move all real functionality into
14212 inner_eval. Avoid to copy the expression twice by inlining some
14213 code from scm_i_eval.
14214
4567ed78
DH
142152001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
14216
14217 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
14218 now has to be the last clause, as required by R5RS. Thanks to
14219 Martin Grabmueller for the patch.
14220
10288a09
GH
142212001-01-18 Gary Houston <ghouston@arglist.com>
14222
14223 * ioext.c: further simplify scm_read_string_x_partial by defining
14224 a macro SCM_EBLOCK.
14225
8f379a8f
DH
142262001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14227
14228 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
14229
5c75b29f
DH
142302001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14231
14232 * __scm.h: Added comment about architecture and compiler
14233 properties that are required by guile.
14234
14235 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14236 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
14237
14238 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
14239
14240 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
14241
14242 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14243 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
14244
ac0c002c
DH
142452001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
14246
14247 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
14248 to the names in limits.h.
14249
14250 * numbers.c (abs_most_negative_fixnum): Added.
14251
14252 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
14253 fixnum-min) special case.
14254
14255 (scm_big_and): Fix for negative first parameter.
14256
14257 (scm_bit_extract): Fix for fixnum paramters.
14258 Thanks to Rob Browning for the bug report.
14259
14260 (scm_init_numbers): Initialize abs_most_negative_fixnum.
14261
debe0dc2
DH
142622001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
14263
14264 * symbols.c (scm_symbol_bound_p): Fixed comment.
14265 Thanks to Chris Cramer.
14266
8a39e3fc
DH
142672001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
14268
14269 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
14270 Thanks to Bill Schottstaedt.
14271
322ec19d
ML
142722001-01-11 Michael Livshin <mlivshin@bigfoot.com>
14273
9a5fa6e9 14274 from Matthias Köppe:
1c938eb8 14275
322ec19d
ML
14276 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
14277 casts its result, so doesn't yield an lvalue per ANSI C.
14278
14279 * goops.c (s_scm_sys_set_object_setter_x): use
14280 SCM_SET_ENTITY_SETTER.
14281 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
14282
14283 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
14284 its result, so doesn't yield an lvalue per ANSI C.
14285 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
14286 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
14287 SCM_GC_SET_CARD_FLAGS.
14288 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
14289
14290 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
14291
60d02d09
GH
142922001-01-08 Gary Houston <ghouston@arglist.com>
14293
14294 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
14295 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
14296 socket.c (scm_recvfrom): use the new macro, plus minor docstring
14297 changes.
14298 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
14299 for fdes. if current input port is used, check that it's a file
14300 port.
14301
c2da2648
GH
143022001-01-06 Gary Houston <ghouston@arglist.com>
14303
14304 * ioext.c (scm_read_string_x_partial): new procedure, implements
14305 read-string!/partial.
14306 * ports.c (scm_take_from_input_buffers): new procedure used by
14307 scm_read_string_x_partial.
14308 (scm_drain_input): use scm_take_from_input_buffers.
14309
4651d663
MV
143102001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
14311
14312 * validate.h (SCM_VALIDATE_NUMBER): New.
14313
c0a5d888
ML
143142001-01-03 Michael Livshin <mlivshin@bigfoot.com>
14315
14316 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
14317 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
14318 SET_DESTROYED): new defines/macros.
14319 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
14320 (add_to_live_list): takes a `guardian_t *' now, not SCM.
14321 (guardian_print): print more info.
14322 (guardian_apply): check if the guardian is destroyed, and throw an
14323 error if so. take one more optional argument `throw_p'.
14324 (scm_guard): depending on the value of `throw_p', return a boolean
14325 result.
14326 (scm_get_one_zombie): remove redundant property test.
14327 (guardian_t): represent the various (currently 3, I hope nothing
14328 more gets added) boolean fields as bit flags.
14329 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
14330 (scm_destroy_guardian_x): new procedure.
14331
14332 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
14333 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
14334
0c6d2191
GH
143352001-01-01 Gary Houston <ghouston@arglist.com>
14336
14337 * fports.c (fport_write): bugfix: handle short writes for
14338 unbuffered ports too. optimize the buffered case by minimizing
14339 the number of write/flush calls.
14340 (write_all): new helper procedure.
14341
a51fe247 14342The ChangeLog continues in the file: "ChangeLog-2000"
d9f71a07
LC
14343
14344;; Local Variables:
14345;; coding: utf-8
14346;; End: