Only define scm_from_complex_double if it will
[bpt/guile.git] / libguile / ChangeLog
1 2008-03-09 Neil Jerram <neil@ossau.uklinux.net>
2
3 * numbers.c: Only define scm_from_complex_double if it will
4 actually be used.
5
6 2008-03-08 Julian Graham <joolean@gmail.com>
7
8 * threads.c (scm_join_thread_timed, scm_thread_p,
9 scm_make_mutex_with_flags, scm_lock_mutex_timed,
10 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p): New
11 functions.
12 (thread_mark): Updated to mark new struct field `mutexes'.
13 (do_thread_exit): Notify threads waiting on mutexes locked by exiting
14 thread.
15 (scm_join_thread, scm_make_mutex, scm_make_recursive_mutex,
16 scm_mutex_lock): Reimplement in terms of their newer
17 counterparts.
18 (scm_abandoned_mutex_error_key): New symbol.
19 (fat_mutex)[unchecked_unlock, allow_external_unlock]: New fields.
20 (fat_mutex_lock): Reimplement to support timeouts and abandonment.
21 (fat_mutex_trylock, scm_try_mutex): Remove fat_mutex_trylock and
22 reimplement scm_try_mutex as a lock attempt with a timeout of zero.
23 (fat_mutex_unlock): Allow unlocking from other threads and unchecked
24 unlocking; implement in terms of condition variable wait.
25 (scm_timed_wait_condition_variable): Reimplement in terms of
26 fat_mutex_unlock.
27 * threads.h (scm_i_thread)[mutexes]: New field.
28 (scm_join_thread_timed, scm_thread_p, scm_lock_mutex_timed,
29 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p):
30 Prototypes for new functions.
31
32 2008-03-06 Ludovic Courtès <ludo@gnu.org>
33
34 * eval.c (scm_eval): If MODULE_OR_STATE is not a dynamic state,
35 make sure it's a module. Reported by David I. Lehn.
36
37 2008-03-02 Ludovic Courtès <ludo@gnu.org>
38
39 * pairs.h (scm_is_pair): Moved declaration to `inline.h'.
40 * inline.h: Make sure `extern' declarations are not produced
41 when `inline' is supported but GCC is not used. This
42 fixes "mixed linkage" errors with compilers such as
43 DEC/Compaq/HP CC.
44
45 2008-02-27 Neil Jerram <neil@ossau.uklinux.net>
46
47 * _scm.h (errno): Remove declarations that have been there
48 forever, and are known to conflict on some platforms with that
49 provided by <errno.h>, which we include unconditionally. If
50 <errno.h> doesn't provide a errno declaration, what is the point
51 of it?
52
53 2008-02-23 Ludovic Courtès <ludo@gnu.org>
54
55 * numbers.c (scm_make_rectangular): Rename argument to
56 `real_part' and `imaginary_part' to work around Solaris 2.10
57 headers which define `imaginary' as a macro. Patch by Tim
58 Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
59
60 2008-02-22 Ludovic Courtès <ludo@gnu.org>
61
62 * read.c (strncasecmp): Add declaration when
63 `HAVE_DECL_STRNCASECMP' is undefined. Fixes compilation on
64 NetBSD 1.6.
65
66 * gc.c (scm_ia64_ar_bsp)[linux]: Don't discard `const' qualifier
67 of OPAQUE.
68
69 2008-02-21 Ludovic Courtès <ludo@gnu.org>
70
71 Fix bug #22369.
72
73 * goops.c (scm_add_slot): Add `SCM_UNDEFINED' as last argument
74 to `scm_list_n ()'. Thanks to René Köcher
75 <shirk87@googlemail.com>.
76
77 2008-02-17 Ludovic Courtès <ludo@gnu.org>
78
79 * script.c (scm_compile_shell_switches): Update copyright year.
80
81 2008-02-16 Ludovic Courtès <ludo@gnu.org>
82
83 * gc_os_dep.c: Add NetBSD/alpha support. Patch by Greg Troxel
84 <gdt@ir.bbn.com>.
85
86 2008-02-12 Ludovic Courtès <ludo@gnu.org>
87
88 * guile-snarf.in (tempdir): Honor `$TMPDIR'.
89
90 2008-02-11 Neil Jerram <neil@ossau.uklinux.net>
91
92 * numbers.c (SCM_COMPLEX_VALUE): Use GUILE_I instead of _Complex_I
93 directly, and only if GUILE_I was defined by the configure step.
94 (scm_log, scm_log10, scm_exp, scm_sqrt): Use SCM_COMPLEX_VALUE
95 code only if SCM_COMPLEX_VALUE is defined.
96
97 2008-02-07 Ludovic Courtès <ludo@gnu.org>
98
99 Fix bug #21378.
100 Thanks to David Diffenbaugh <davediff@nbcs.rutgers.edu>.
101
102 * read.c (scm_read_quote): Don't use `__FUNCTION__' since it is
103 not supported by Sun CC on Solaris 9.
104 (scm_read_keyword): Likewise.
105 * strings.c (scm_take_locale_stringn): Remove
106 `SCM_C_INLINE_KEYWORD' to allow compilation with Sun CC.
107
108 2008-02-07 Julian Graham <joolean@gmail.com>
109
110 * threads.c (do_thread_exit, scm_cancel_thread,
111 scm_set_thread_cleanup_x, scm_thread_cleanup): Lock on thread-specific
112 admin mutex instead of `thread_admin_mutex'.
113 * threads.h (scm_i_thread)[admin_mutex]: New field.
114 * throw.c (make_jmpbuf): Don't enter critical section during thread
115 spawn -- there is a possibility of deadlock if other threads are
116 exiting.
117
118 2008-02-06 Neil Jerram <neil@ossau.uklinux.net>
119
120 * gc-malloc.c (scm_gc_malloc): Return NULL if requested size is 0.
121 (scm_gc_free): Don't call `free' if mem is NULL.
122
123 2008-02-06 Ludovic Courtès <ludo@gnu.org>
124
125 * numbers.c (scm_i_mkbig, scm_i_long2big, scm_i_ulong2big,
126 scm_i_clonebig, scm_i_bigcmp, scm_i_dbl2big, scm_i_dbl2num,
127 scm_i_normbig): Remove `SCM_C_INLINE_KEYWORD' since these are
128 declared as `extern' in `numbers.h'. This precluded compilation
129 on Solaris 9 with Sun CC (reported by David Halik
130 <dhalik@nbcs.rutgers.edu>).
131
132 2008-02-05 Neil Jerram <neil@ossau.uklinux.net>
133
134 * fports.c (fport_seek): Make dependent on GUILE_USE_64_CALLS.
135
136 * _scm.h: Make definition of CHOOSE_LARGEFILE depend on
137 GUILE_USE_64_CALLS.
138
139 2008-02-01 Neil Jerram <neil@ossau.uklinux.net>
140
141 * modules.c (the_root_module): Moved before scm_current_module.
142 (scm_current_module): Return the root module if `the-module' fluid
143 gives #f.
144
145 2008-01-22 Neil Jerram <neil@ossau.uklinux.net>
146
147 * COPYING: Removed.
148
149 * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL.
150
151 2008-01-18 Neil Jerram <neil@ossau.uklinux.net>
152
153 * hashtab.c (scm_hash_fn_create_handle_x): If supplied assoc_fn
154 returns neither a pair nor #f, signal a wrong-type-arg error.
155 (Thanks to Gregory Marton for reporting this.)
156
157 2007-12-29 Neil Jerram <neil@ossau.uklinux.net>
158
159 * gc.c (mark_gc_async): Change "func_data" to "fn_data", to avoid
160 clash with AIX header file.
161 * hooks.c (scm_c_hook_add, scm_c_hook_remove): Same again.
162 * hooks.h (scm_t_c_hook_function, scm_c_hook_add,
163 scm_c_hook_remove): Same again.
164
165 2007-12-08 Ludovic Courtès <ludo@gnu.org>
166
167 * __scm.h (SCM_EXPECT, SCM_LIKELY, SCM_UNLIKELY): New macros.
168 (SCM_ASSERT, SCM_ASSERT_TYPE, SCM_ASRTGO, SCM_GASSERT0,
169 SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Use them.
170 * eval.c (ASSERT_SYNTAX, ASSERT_SYNTAX_2): Likewise.
171 * eval.i.c (CEVAL): Use branch prediction hints for syntax
172 errors, wrong number of arguments and similar.
173 * numbers.c (scm_sum): Use `SCM_LIKELY' for the sum of two
174 immediate numbers.
175 (scm_difference, scm_product, scm_i_divide): Likewise.
176 * validate.h (SCM_ASSERT_RANGE): Use `SCM_UNLIKELY'.
177
178 2007-12-04 Ludovic Courtès <ludo@gnu.org>
179
180 * ports.c (scm_c_read): Validate PORT as an open input port.
181 (scm_c_write): Validate PORT as an open output port.
182
183 * socket.c (scm_accept): Leave guile mode using
184 `scm_std_select ()' before calling `accept(2)'. Reported by
185 dskr <dskr@mac.com>.
186
187 2007-10-27 Ludovic Courtès <ludo@gnu.org>
188
189 * fports.c (scm_i_evict_port): Expect a port, rather than a pair
190 containing the port. Fixes a bug in the new port table (2007-08-26).
191 (scm_evict_ports): Use `scm_c_port_for_each ()'.
192
193 2007-10-21 Neil Jerram <neil@ossau.uklinux.net>
194
195 * eval.c (unmemoize_delay): Extend the environment before
196 unmemoizing the promise thunk. This fixes a segmentation fault
197 reported by Frank Schwidom.
198
199 2007-10-20 Julian Graham <joolean@gmail.com>
200
201 Add support for thread cancellation and user-defined thread
202 cleanup handlers. Small rework by Ludovic Courtès.
203
204 * null-threads.h (scm_i_pthread_cancel,
205 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
206 * pthread-threads.h (scm_i_pthread_cancel,
207 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
208 * scmsigs.c (scm_i_signal_delivery_thread,
209 signal_delivery_thread_mutex): New.
210 (signal_delivery_thread): Leave when `read_without_guile ()'
211 returns zero.
212 (start_signal_delivery_thread): Acquire SIGNAL_DELIVERY_THREAD
213 before spawning the thread. Initialize
214 SCM_I_SIGNAL_DELIVERY_THREAD.
215 (ensure_signal_delivery_thread): Renamed to...
216 (scm_i_ensure_signal_delivery_thread): this.
217 (scm_i_close_signal_pipe): New.
218 * scmsigs.h: Updated.
219 * threads.c (thread_mark): Mark `t->cleanup_handler'.
220 (guilify_self_1): Initialize `t->cleanup_handler' and
221 `t->canceled'.
222 (do_thread_exit): Invoke `t->cleanup_handler'.
223 (on_thread_exit): Call `scm_i_ensure_signal_delivery_thread ()'.
224 Call `scm_i_close_signal_pipe ()' when the next-to-last thread
225 vanishes.
226 (scm_leave_guile_cleanup): New.
227 (scm_i_with_guile_and_parent): Use `scm_i_pthread_cleanup_push ()'
228 and `scm_leave_guile_cleanup ()' to leave guile mode, rather
229 than call `scm_leave_guile ()' after FUNC.
230 (scm_cancel_thread, scm_set_thread_cleanup_x,
231 scm_threads_cleanup): New.
232 (scm_all_threads): Remove SCM_I_SIGNAL_DELIVERY_THREAD from the
233 returned list.
234 * threads.h (scm_i_thread)[cleanup_handler, canceled]: New
235 fields.
236 Add declarations of new functions.
237
238 2007-10-17 Ludovic Courtès <ludo@gnu.org>
239
240 * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a
241 regression compared to 1.8.2. Reported by Puneet
242 <schemer@gmail.com>.
243
244 2007-10-10 Ludovic Courtès <ludo@gnu.org>
245
246 * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check
247 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
248 * gen-scmconfig.h.in
249 (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER): New.
250 * gen-scmconfig.c (main): Define
251 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
252
253 2007-10-04 Ludovic Courtès <ludo@gnu.org>
254
255 * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
256 `leave_locale_section ()' on failure of
257 `enter_locale_section ()' since the mutex is not held and locale
258 settings are unchanged.
259 (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
260 `restore_locale_settings ()' instead of `leave_locale_section ()'
261 since the mutex is not held.
262
263 2007-10-02 Ludovic Courtès <ludo@gnu.org>
264
265 * threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
266 since we're already in non-guile mode. Reported by Greg Toxel
267 for NetBSD.
268
269 2007-10-01 Ludovic Courtès <ludo@gnu.org>
270
271 * ports.c (flush_output_port): Expect directly a port instead of
272 a pair. Fixes a bug in the new port table (2007-08-26).
273
274 2007-09-11 Kevin Ryde <user42@zip.com.au>
275
276 * posix.c (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
277 putenv("NAME") as the fallback everywhere else. In particular this is
278 needed for solaris 9. Reported by Frank Storbeck.
279
280 2007-09-03 Ludovic Courtès <ludo@gnu.org>
281
282 * read.c (flush_ws): Handle SCSH block comments.
283
284 2007-09-03 Ludovic Courtès <ludo@gnu.org>
285
286 Fix alignment issues which showed up at least on SPARC.
287
288 * socket.c (scm_t_max_sockaddr, scm_t_getsockopt_result): New.
289 (scm_inet_pton): Change DST to `scm_t_uint32' for correct
290 alignment.
291 (scm_getsockopt): Change OPTVAL to `scm_t_getsockopt_result' for
292 correct alignment.
293 (_scm_from_sockaddr): Change ADDRESS to `scm_t_max_sockaddr *'.
294 (scm_from_sockaddr): Cast ADDRESS to `scm_t_max_sockaddr *'.
295 (MAX_SIZE_UN, MAX_SIZE_IN6): Removed.
296 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
297 Use `scm_t_max_sockaddr' instead of "char max_addr[MAX_ADDR_SIZE]".
298
299 2007-09-03 Kevin Ryde <user42@zip.com.au>
300
301 * numbers.c (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
302 before using clog(). It's possible for gcc to provide the "complex
303 double" type, but for the system not to have the complex funcs.
304 (scm_exp): Ditto HAVE_CEXP for cexp().
305 (clog, cexp, carg): Remove fallback definitions. These only
306 duplicated the code within scm_log and scm_exp, and the latter have to
307 exist for the case when there's no "complex double". So better just
308 fix up the conditionals selecting between the complex funcs and plain
309 doubles than worry about fallbacks.
310
311 2007-09-02 Ludovic Courtès <ludo@gnu.org>
312
313 * socket.c (scm_make_socket_address): Free C_ADDRESS after use.
314 This fixes a memory leak.
315
316 2007-08-26 Han-Wen Nienhuys <hanwen@lilypond.org>
317
318 * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
319 gc.c: replace port table with weak hash table. This simplifies
320 memory management, and fixes freed cells appearing in
321 port-for-each output.
322
323 * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
324 held.
325
326 2007-08-23 Ludovic Courtès <ludo@gnu.org>
327
328 * read.c (scm_read_quote): Record position and copy source
329 expression when asked to. Reported by Kevin.
330
331 * stime.c: Define `_REENTRANT' only if not already defined.
332
333 2007-08-21 Kevin Ryde <user42@zip.com.au>
334
335 * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
336 tc16 values so big, real, complex and fraction can be distinguished.
337
338 (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL. NULL
339 was making numbers come out as "type 23" in gc-live-object-stats.
340 Fix tests of the tc16 number types, they were checked under
341 scm_tc7_number, but the values went down the tag>=255 smob case.
342 Put smob case under scm_tc7_smob instead of using tag>=255, per
343 recommendation in comments with scm_tc7_smob to use symbolic values.
344 Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
345 code. Lose some unnecessary "break" statements.
346
347 (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
348 element returned, rather than two lookups scm_hashq_ref and
349 scm_hashq_set_x.
350
351 2007-08-17 Kevin Ryde <user42@zip.com.au>
352
353 * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
354 solaris 2.6. Reported by anirkko.
355
356 2007-07-29 Ludovic Courtès <ludo@gnu.org>
357
358 * Makefile.am (INCLUDES): Added Gnulib includes.
359 (gnulib_library): New.
360 (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
361 `$(gnulib_library)'.
362 (libguile_la_LIBADD): Likewise.
363
364 * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
365 to define it when available.
366 * srfi-14.c: Likewise.
367 * i18n.c: Likewise. Include Gnulib's <alloca.h>
368 * eval.c: Include Gnulib's <alloca.h>.
369 * filesys.c: Likewise.
370 * read.c: Don't include <strings.h> and don't provide an
371 `strncasecmp ()' replacement; use Gnulib's <string.h> and
372 `strncasecmp ()' instead.
373
374 2007-07-25 Ludovic Courtès <ludo@gnu.org>
375
376 * eval.c (macroexp): When `scm_ilength (res) <= 0', return
377 immediately. This used to produce a circular memoized
378 expression, e.g., for `(set (quote x) #t)'.
379
380 2007-07-22 Ludovic Courtès <ludo@gnu.org>
381
382 Overhauled the reader, making it faster.
383
384 * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
385 (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
386 of `scm_lreadr ()'.
387
388 * read.c: Overhauled. No longer use a token buffer. Use a
389 on-stack C buffer in the common case and use Scheme strings when
390 larger buffers are needed.
391 * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
392 scm_lreadr, scm_lreadrecparen): Removed.
393 (scm_i_input_error): Marked as `SCM_NORETURN'.
394
395 2007-07-15 Ludovic Courtès <ludo@gnu.org>
396
397 * script.c (scm_compile_shell_switches): Updated copyright year.
398
399 2007-07-11 Ludovic Courtès <ludo@gnu.org>
400
401 * goops.c (scm_sys_method_more_specific_p): Added docstring.
402 Make sure LEN is greater than or equal to the minimum length of
403 specializers of M1 and M2. This fixes a segfault later on in
404 `more_specificp ()' if TARGS is too small. Reported by Marco
405 Maggi <marco.maggi-ipsu@poste.it>.
406
407 2007-06-26 Ludovic Courtès <ludo@gnu.org>
408
409 * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
410 sure to free the previous array after the new one has been
411 installed. This leak is made visible by running
412 "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
413 from the REPL within Valgrind.
414
415 2007-06-12 Ludovic Courtès <ludo@chbouib.org>
416
417 * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
418 as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
419 bus error on SPARC (and possibly others) due to unaligned access.
420
421 2007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
422
423 * posix.c (scm_ttyname): Check whether RESULT is NULL before
424 making a string from it (reported by Dan McMahill). Don't call
425 `scm_from_locale_string ()' before the mutex is released.
426
427 2007-05-26 Ludovic Courtès <ludo@chbouib.org>
428
429 * eval.c (scm_m_define): Updated comment. Changed order for value
430 evaluation and `scm_sym2var ()' call, which is perfectly valid per
431 R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
432
433 2007-05-05 Ludovic Courtès <ludo@chbouib.org>
434
435 Implemented lazy duplicate binding handling.
436
437 * modules.c (scm_export): Renamed to...
438 (scm_module_export): This. Now public.
439 (module_variable): Removed.
440 (default_duplicate_binding_procedures_var): New variable.
441 (default_duplicate_binding_handlers, resolve_duplicate_binding,
442 module_imported_variable, scm_module_local_variable,
443 scm_module_variable): New functions.
444 (scm_module_import_interface): Rewritten.
445 (scm_module_reverse_lookup): Exported as a Scheme function.
446 * modules.h (scm_module_index_duplicate_handlers,
447 scm_module_index_import_obarray): New macros.
448 (scm_module_variable, scm_module_local_variable,
449 scm_module_export): New declarations.
450
451 2007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
452
453 * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
454 `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
455
456 2007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
457
458 * numbers.c (carg): provide carg, cexp, clog in case they are
459 missing.
460
461 2007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
462
463 * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
464 `FRAC_DIGITS', etc., which are GNU extensions. Reported by
465 Steven Wu.
466
467 2007-03-08 Kevin Ryde <user42@zip.com.au>
468
469 * struct.c, struct.h (scm_make_vtable): New function, providing
470 `make-vtable'.
471 * stacks.c (scm_init_stacks): Use it.
472
473 2007-03-06 Kevin Ryde <user42@zip.com.au>
474
475 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
476 allocating a tail array. If there's no such then those tail fields
477 are uninitialized and garbage SCMs there can cause a segv if printed
478 (after fetching with struct-ref).
479
480 2007-02-22 Kevin Ryde <user42@zip.com.au>
481
482 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
483 (scm_usleep): Update docstring per manual, cross reference sleep.
484
485 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
486 scm_struct_init is not within that section. scm_struct_init can
487 thrown an error, which within a critical section results in an
488 abort().
489
490 2007-02-19 Neil Jerram <neil@ossau.uklinux.net>
491
492 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
493 is included in the distribution.
494 (noinst_HEADERS): And the same for eval.i.c.
495
496 2007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
497
498 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
499 unconditionally. Include <langinfo.h> and <nl_types.h> when
500 available.
501 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
502 SCM_LIST_OR_INTEGER_P): New macros.
503 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
504 as powers of two instead of `(1 << LC_*)'.
505 (scm_i_locale_free): New function/macro.
506 (scm_global_locale): New global variable.
507 (smob_locale_free): Use `scm_i_locale_free ()'.
508 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
509 (get_current_locale_settings): Return `EINVAL' instead of `errno'
510 when `setlocale' fails.
511 (restore_locale_settings): Likewise.
512 (install_locale_categories): Likewise.
513 (install_locale): Likewise. Stop the locale stack traversal when
514 all categories have been handled.
515 (get_current_locale, category_to_category_mask,
516 category_list_to_category_mask): New function.
517 (scm_make_locale): Use them. Accept both lists of `LC_*' values
518 and single `LC_*' values as the first argument. Handle the case
519 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
520 duplicate C_BASE_LOCALE before using it.
521 (scm_nl_langinfo, define_langinfo_items): New functions.
522 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
523 `nl-langinfo' and invoke `define_langinfo_items ()'.
524 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
525 * posix.c: Include <xlocale.h> when available.
526 (scm_i_locale_mutex): Always define it. Statically initialized.
527 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
528 acquiring the locale mutex.
529 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
530
531 2007-01-27 Kevin Ryde <user42@zip.com.au>
532
533 * ports.c (scm_port_line, scm_set_port_line_x), read.c
534 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
535 port line number type, should be "long" not "int", as per line_number
536 field of scm_t_port. (Makes a difference only on 64-bit systems, and
537 only then for a linenum above 2Gig.)
538
539 2007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
540
541 * vector.c: remove comment as per kryde's request.
542
543 2007-01-25 Kevin Ryde <user42@zip.com.au>
544
545 * sort.c (scm_stable_sort): Return empty list for input empty list, as
546 done in guile 1.6 and as always done by plain `sort'. Was falling
547 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
548
549 2007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
550
551 * vectors.c (s_scm_vector_move_right_x): complain about naming.
552
553 * srcprop.c: regularize comments.
554
555 * eval.c: remove superfluous ifndef DEVAL.
556
557 * private-options.h: idem.
558
559 * eval.i.c: copyright nitpicking.
560
561 * eval.c: distangle. move duplicate code to eval.i.c and include
562 twice.
563
564 * eval.i.c: new file.
565
566 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
567 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
568 read.h, stacks.c, symbols.c, throw.c: use private-options.h
569
570 * private-options.h: new file: contain hardcoded option
571 definitions.
572
573 * private-gc.h: add FSF header.
574
575 2007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
576
577 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
578 memoize-symbol is set.
579
580 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
581
582 * eval.c (CEVAL): add memoize_symbol trap.
583
584 * options.c (scm_options_try): new function. This allows error
585 reporting before changing options in a critical section.
586
587 * srcprop.c: use double cell for storing source-properties. Put
588 filename in the plist, and share between srcprops if possible.
589 Remove specialized storage.
590
591 * srcprop.h: remove macros without SCM_ prefix from
592 interface. Remove specialized storage/type definitions.
593
594 * read.c: idem.
595
596 * print.c: idem.
597
598 * eval.c: terminate option lists with 0.
599
600 * options.c: remove n (for length) from scm_option_X
601 functions. Detect option list length by looking for NULL name.
602
603 2007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
604
605 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
606 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
607 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
608 added by `make-vtable-vtable'. Reported by Marco Maggi.
609
610 2007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
611
612 * throw.c (scm_ithrow): more refined error message: print symbols
613 too.
614
615 2007-01-16 Kevin Ryde <user42@zip.com.au>
616
617 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
618 implementing `set-program-arguments'.
619
620 * filesys.c (scm_init_filesys): Use scm_from_int rather than
621 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
622 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
623 O_LARGEFILE. These are all int not long, per arg to open().
624 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
625 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
626 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
627 an int arg to fcntl.
628
629 * posix.c (scm_putenv): Correction to "len" variable, was defined only
630 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
631 Move it to where it's used. Reported by Hugh Sasse.
632
633 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
634 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
635 meant #\nul in the input (detected by scm_to_locale_string) and a bad
636 flags arg (detected by scm_to_int) would throw from a critical
637 section, causing an abort().
638
639 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
640 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
641 REG_NOTEOL; they're all ints not longs (per args to regcomp and
642 regexec).
643
644 2007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
645
646 * throw.c (scm_ithrow): print out key symbol and string arguments
647 when error happens inside a critical section, and document why.
648
649 2007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
650
651 * read.c (s_scm_read_hash_extend): document #f argument to
652 read-hash-extend.
653
654 2007-01-04 Kevin Ryde <user42@zip.com.au>
655
656 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
657 scm_minor_version, scm_micro_version, scm_effective_version,
658 scm_version, scm_init_version): Use SCM_API instead of just extern,
659 for the benefit of mingw. Reported by Cesar Strauss.
660
661 2007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
662
663 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
664 too.
665 (gc_update_stats): update scm_gc_cells_allocated_acc too.
666
667 2006-12-27 Kevin Ryde <user42@zip.com.au>
668
669 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
670 the basic scm_get_stack_base. As advised by Nils Durner.
671
672 * threads.c (get_thread_stack_base): Add a version using
673 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
674 As advised by Heikki Lindholm.
675
676 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
677 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
678 Durner.
679
680 2006-12-24 Kevin Ryde <user42@zip.com.au>
681
682 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
683 error if pid is not our own process, instead of silently doing nothing.
684
685 * print.c (scm_write, scm_display, scm_write_char): Disable port close
686 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
687 check in configure.in unintentionally enabled it. Believe that
688 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
689 can leave errno in that state. popen.test "no duplicates" output test
690 provoked that.
691
692 2006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
693
694 * numbers.c (scm_i_fraction_reduce): move logic into
695 scm_i_make_ratio(), so fractions are only read.
696 scm_i_fraction_reduce() modifies a fraction when reading it. A
697 race condition might lead to fractions being corrupted by reading
698 them concurrently.
699
700 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
701 comparisons between reduced and unreduced fractions go wrong.
702
703 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
704 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
705 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
706 SCM_FRACTION_REDUCED.
707
708 2006-12-16 Kevin Ryde <user42@zip.com.au>
709
710 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
711 more direct for a procedure called raise.
712 (kill): Remove mingw fake fallback.
713
714 2006-12-15 Kevin Ryde <user42@zip.com.au>
715
716 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
717 _pipe on mingw.
718
719 2006-12-14 Kevin Ryde <user42@zip.com.au>
720
721 * threads.c (thread_print): Cope with the case where pthread_t is a
722 struct, as found on mingw. Can't just cast to size_t for printing.
723 Reported by Nils Durner.
724
725 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
726 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
727
728 2006-12-13 Kevin Ryde <user42@zip.com.au>
729
730 * eval.c (scm_m_define): Set 'name procedure property on any
731 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
732 procedures with setters as used in srfi-17.
733
734 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
735 linux man page says is a possibility.
736
737 2006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
738
739 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
740 instead of RES (reported by Szavai Gyula). This allows the use of
741 negative lower bounds.
742 (scm_i_read_array): Make sure LEN is non-negative (reported by
743 Szavai Gyula).
744
745 (scm_array_in_bounds_p): Iterate over S instead of always
746 comparing indices with the bounds of S[0]. This fixes
747 `array-in-bounds?' for arrays with a rank greater than one and
748 with different lower bounds for each dimension.
749
750 2006-12-05 Kevin Ryde <user42@zip.com.au>
751
752 * numbers.c (scm_product): For flonum*inum and complex*inum, return
753 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
754 and as per R5RS section "Exactness".
755
756 2006-12-03 Kevin Ryde <user42@zip.com.au>
757
758 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
759 allow $AWK from the environment to override. It had syntax gremlins,
760 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
761 Makefile stopped it having any effect. Use just $(AWK), which can be
762 overridden with "make AWK=xxx" in the usual way if desired.
763
764 2006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
765
766 * libguile/vectors.c (scm_vector_to_list): Fixed list
767 construction: elements were not copied when INC is zero (see
768 "shared array" example in `vectors.test'). Reported by
769 Szavai Gyula.
770
771 2006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
772
773 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
774 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
775 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
776 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
777 (DOT_X_FILES): Added `gettext.x'.
778 (DOT_DOC_FILES): Likewise.
779 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
780 (modinclude_HEADERS): Added `gettext.h'.
781 (EXTRA_DIST): Added `libgettext.h'.
782
783 * gettext.h: Renamed to...
784 * libgettext.h: New file.
785
786 * i18n.c: Renamed to...
787 * gettext.c: New file.
788
789 * i18n.h: Renamed to...
790 * gettext.h: New file.
791
792 * i18n.c, i18n.h, locale-categories.h: New files.
793
794 * init.c: Include "libguile/gettext.h" instead of
795 "libguile/i18n.h".
796 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
797 `scm_init_i18n ()'.
798
799 * posix.c: Include "libguile/gettext.h" instead of
800 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
801 (USE_GNU_LOCALE_API): New macro.
802 (scm_i_locale_mutex): New variable.
803 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
804
805 * posix.h: Include "libguile/threads.h".
806 (scm_i_locale_mutex): New declaration.
807
808 2006-11-17 Neil Jerram <neil@ossau.uklinux.net>
809
810 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
811
812 2006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
813
814 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
815 "sweep_stats" arguments; use them instead of accessing the global
816 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
817
818 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
819 before each iteration of the loop.
820 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
821 (scm_i_get_new_heap_segment): Take an additional argument
822 SWEEP_STATS. Compute MIN_CELLS as a function of it.
823
824 * libguile/gc.c (scm_gc_cells_collected,
825 scm_gc_cells_collected_1): Removed.
826 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
827 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
828 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
829 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
830 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
831 `scm_gc_cells_(collected|swept)'.
832 (gc_update_stats): New.
833 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
834 `scm_i_gc_sweep_stats_1' instead of the former globals.
835 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
836 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
837 would keep allocating new segments instead of re-using collected
838 cells (because `scm_gc_cells_collected' would remain zero).
839
840 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
841 scm_gc_cell_yield_percentage): Removed.
842
843 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
844 (scm_i_adjust_min_yield): Updated.
845 (scm_i_get_new_heap_segment): Updated.
846
847 2006-11-02 Neil Jerram <neil@ossau.uklinux.net>
848
849 * modules.c: Correct comment saying that low-level environments
850 will be used "in the next release".
851
852 * init.c: Comment out #include of environments.h.
853 (scm_i_init_guile): Comment out scm_environments_prehistory() and
854 scm_init_environments() calls.
855
856 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
857 (DOT_X_FILES): Remove environments.x.
858 (DOT_DOC_FILES): Remove environments.doc.
859 (modinclude_HEADERS): Remove environments.h.
860
861 2006-10-25 Neil Jerram <neil@ossau.uklinux.net>
862
863 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
864
865 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
866 scm_ia64_register_backing_store_base() instead of Linux-specific
867 implementations.
868
869 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
870 New declarations.
871
872 * gc.c (__libc_ia64_register_backing_store_base): Declaration
873 removed.
874 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
875 implementations for Linux and HP-UX.
876
877 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
878 and scm_ia64_register_backing_store_base() instead of
879 Linux-specific implementations.
880
881 * continuations.h (__libc_ia64_register_backing_store_base):
882 Declaration removed.
883 (scm_t_contregs): New "fresh" field.
884
885 * continuations.c (ia64_getcontext): Removed.
886 (scm_make_continuation): Use continuation fresh field instead of
887 interpreting getcontext return values (which isn't portable). Use
888 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
889 instead of Linux-specific implementations.
890 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
891 instead of Linux-specific implementation.
892
893 * _scm.h (__ia64__): Also detect __ia64.
894
895 2006-10-03 Kevin Ryde <user42@zip.com.au>
896
897 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
898 arguments or 3 or more arguments. Previously 0 called proc with
899 SCM_UNDEFINED, and 3 or more silently used just the first 2.
900
901 2006-09-28 Kevin Ryde <user42@zip.com.au>
902
903 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
904 for chsize fallback, instead of hard-coding mingw. Mingw in fact
905 supplies ftruncate itself these days.
906
907 * ports.c (fcntl.h): Can include this unconditionally, no need for
908 __MINGW32__.
909
910 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
911 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
912 "off_t" for parameters, per usual definition of this function, rather
913 than "char *" and "int". Use ftruncate instead of chsize. Check for
914 error on final close.
915
916 2006-09-27 Kevin Ryde <user42@zip.com.au>
917
918 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
919 in mingw.
920
921 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
922 const *" for mingw to suppress warnings from gcc (which are errors
923 under the configure default -Werror). Reported by Nils Durner.
924
925 2006-09-26 Kevin Ryde <user42@zip.com.au>
926
927 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
928 * fports.c (scm_open_file): Use open_or_open64.
929 (fport_seek_or_seek64): New function, adapting fport_seek.
930 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
931 functions.
932 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
933 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
934
935 * ports.c (scm_truncate_file): Update docstring per manual.
936
937 2006-09-23 Kevin Ryde <user42@zip.com.au>
938
939 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
940 functions.
941
942 2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
943
944 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
945 (make_predset, define_predset, make_strset, define_strset, false,
946 true): Removed.
947 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
948 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
949 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
950 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
951 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
952 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
953 (define_charset, scm_srfi_14_compute_char_sets): New functions.
954 (scm_init_srfi_14): Use `define_charset ()' instead of
955 `define_predset ()' and `define_strset ()'.
956
957 * srfi-14.h (scm_c_init_srfi_14): Removed.
958 (scm_srfi_14_compute_char_sets): New declaration.
959
960 * posix.h: Include "srfi-14.h".
961 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
962 successful `setlocale ()' call.
963
964 2006-09-08 Kevin Ryde <user42@zip.com.au>
965
966 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
967 (scm_recvfrom): Update docstring from manual.
968
969 2006-08-31 Rob Browning <rlb@defaultvalue.org>
970
971 * ports.c (scm_c_port_for_each): Add a
972 scm_remember_upto_here_1(ports) at the end of the function to fix
973 a GC bug.
974
975 2006-08-28 Neil Jerram <neil@ossau.uklinux.net>
976
977 * backtrace.c (scm_display_backtrace_with_highlights): Minor
978 improvements to docstring.
979 (scm_backtrace_with_highlights): Analogous improvements.
980
981 2006-08-12 Kevin Ryde <user42@zip.com.au>
982
983 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
984 New, set from configure.
985 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
986 to scmconfig.h.
987 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
988 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
989 Reported by Claes Wallin.
990
991 2006-08-11 Neil Jerram <neil@ossau.uklinux.net>
992
993 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
994 frame, not a stack).
995
996 2006-07-25 Kevin Ryde <user42@zip.com.au>
997
998 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
999 on pthreads version, since pthread_getattr_np not available on solaris
1000 and macos. Reported by Claes Wallin.
1001
1002 2006-07-24 Kevin Ryde <user42@zip.com.au>
1003
1004 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
1005 it's a macro on MacOS X. Reported by Claes Wallin.
1006
1007 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
1008 for the benefit of Solaris 10. Reported by Claes Wallin.
1009
1010 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
1011 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
1012
1013 2006-07-21 Kevin Ryde <user42@zip.com.au>
1014
1015 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
1016 autoconf recommendation. Should fix Solaris 10 reported by Claes
1017 Wallin.
1018
1019 * threads.c: Include <string.h>, needed for memset() which is used by
1020 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
1021
1022 2006-07-18 Rob Browning <rlb@defaultvalue.org>
1023
1024 * continuations.c: Add __attribute__ ((returns_twice)) to the
1025 ia64_getcontext prototype so that gcc will make the right
1026 arrangements and avoid an illegal instruction during
1027 call-with-current-continuation.
1028
1029 2006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
1030
1031 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
1032 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
1033
1034 2006-07-08 Kevin Ryde <user42@zip.com.au>
1035
1036 * environments.c (core_environments_unobserve): Use if/else rather
1037 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
1038 about them not being rvalues. Reported by Mike Gran.
1039
1040 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
1041 portable and in particular fails on OpenBSD and AIX (see autoconf
1042 manual too). Reported by Mike Gran.
1043
1044 2006-06-25 Kevin Ryde <user42@zip.com.au>
1045
1046 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
1047 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
1048 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
1049 HAVE_TM_ZONE.
1050 (scm_strptime): Use tm_gmtoff from the strptime result when that field
1051 exists, it's set by glibc strptime "%s".
1052
1053 2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
1054
1055 * eq.c: Include "struct.h", "goops.h" and "objects.h".
1056 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
1057 are not GOOPS instances.
1058 * struct.c: Include "eq.h".
1059 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
1060 hand-written code.
1061 (scm_i_struct_equalp): New.
1062 * struct.h (scm_i_struct_equalp): New declaration.
1063
1064 2006-06-06 Kevin Ryde <user42@zip.com.au>
1065
1066 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
1067 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
1068 reported by Mattias Holm.
1069
1070 2006-06-03 Kevin Ryde <user42@zip.com.au>
1071
1072 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
1073 unused variable warning when elisp disabled. Reported by Ryan
1074 VanderBijl.
1075
1076 * throw.c (scm_handle_by_message): Add dummy return value to avoid
1077 compiler warning on cygwin. Reported by Ryan VanderBijl.
1078
1079 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
1080 duplicate of EXTRA_DOT_DOC_FILES.
1081 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
1082 Add scmconfig.h to dependencies, since these all run cpp. Helps a
1083 parallel "make -j2". Reported by Mattias Holm.
1084
1085 2006-05-30 Kevin Ryde <user42@zip.com.au>
1086
1087 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
1088 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
1089 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
1090 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
1091 port type descriptor, same as scm_make_port_type return value.
1092
1093 2006-05-30 Marius Vollmer <mvo@zagadka.de>
1094
1095 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
1096 of the arguments is a array. This allows vectors to be equal to
1097 one-dimensional arrays.
1098
1099 2006-05-29 Marius Vollmer <mvo@zagadka.de>
1100
1101 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
1102 that we have a pair before accessing its cdr. Thanks to Bill
1103 Schottstaedt!
1104
1105 2006-05-28 Kevin Ryde <user42@zip.com.au>
1106
1107 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
1108 by "The Senator".
1109
1110 2006-05-27 Marius Vollmer <mvo@zagadka.de>
1111
1112 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
1113 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
1114
1115 2006-05-26 Kevin Ryde <user42@zip.com.au>
1116
1117 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
1118 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
1119 Reported by "The Senator".
1120 For select and ioctl, move fdes into those conditionals, to avoid
1121 unused variable warning when neither of those used.
1122
1123 2006-05-23 Kevin Ryde <user42@zip.com.au>
1124
1125 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
1126 It's unused and will be in stdio.h anyway (if it's anywhere).
1127
1128 2006-05-20 Kevin Ryde <user42@zip.com.au>
1129
1130 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
1131 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
1132
1133 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
1134 symlink). Probably can't create symlinks with mknod anyway though.
1135
1136 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
1137 generation.
1138
1139 2006-05-15 Kevin Ryde <user42@zip.com.au>
1140
1141 * simpos.c, simpos.h (scm_primitive__exit): New function.
1142 (scm_primitive_exit): Update docstring, no longer the best exit after
1143 a fork.
1144
1145 2006-05-09 Kevin Ryde <user42@zip.com.au>
1146
1147 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
1148 rather than converting to doubles, to avoid inf or nan when the inputs
1149 are too big for a double but the quotient does fit. This affects
1150 conversions exact->inexact of big fractions.
1151
1152 * filesys.c (scm_open_fdes): Use open64.
1153 (scm_init_filesys): Add O_LARGEFILE.
1154
1155 * ports.c (scm_seek): Use lseek64.
1156 (scm_truncate_file): Use ftruncate64.
1157
1158 2006-05-08 Marius Vollmer <mvo@zagadka.de>
1159
1160 * private-gc.h (CELL_P): Also check that the potential pointer is
1161 correctly aligned for a cell. Thanks to Miroslav Lichvar!
1162
1163 2006-04-18 Rob Browning <rlb@defaultvalue.org>
1164
1165 * _scm.h: Add back error if the size of off_t is unknown. The bug
1166 was actually in guile-readline's configuration.
1167
1168 2006-04-18 Kevin Ryde <user42@zip.com.au>
1169
1170 * posix.c (scm_mkstemp): Update docstring from the manual, in
1171 particular file mode 0600 is not guaranteed.
1172
1173 2006-04-17 Kevin Ryde <user42@zip.com.au>
1174
1175 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
1176 size, to help the guile-readline build where off_t is unused.
1177
1178 2006-04-16 Kevin Ryde <user42@zip.com.au>
1179
1180 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
1181 (scm_readdir): Use readdir64.
1182 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
1183 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
1184 and ftruncate take off_t not size_t.
1185 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
1186 available.
1187
1188 2006-04-06 Kevin Ryde <user42@zip.com.au>
1189
1190 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
1191 instead of toggling it. Reported by Ludovic Courtès.
1192
1193 2006-03-26 Marius Vollmer <mvo@zagadka.de>
1194
1195 * threads.c (get_thread_stack_base): Use scm_get_stack_base
1196 instead of accessing __libc_stack_end directly, and only do this
1197 when pthread_attr_getstack is known not to work for the main
1198 thread or when not using pthreads at all.
1199
1200 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
1201 unknown instead of returning NULL.
1202
1203 2006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
1204
1205 * numbers.c (scm_i_mem2number): Renamed to
1206 scm_c_locale_stringn_to_number.
1207 * numbers.c, print.c, read.c: Updated callers.
1208 * numbers.h: Update function declaration.
1209
1210 2006-03-11 Neil Jerram <neil@ossau.uklinux.net>
1211
1212 * unif.c (string_set): Don't return in a void function. (Reported
1213 by Mike Gran.)
1214
1215 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
1216 rather than void*, so we can do pointer arithmetic on it.
1217 (Reported by Mike Gran.)
1218 (s_scm_uniform_vector_write): Ditto.
1219
1220 2006-03-10 Neil Jerram <neil@ossau.uklinux.net>
1221
1222 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
1223 oldra is not an array. (Reported by Steve Juranich.)
1224
1225 * threads.c (do_unlock): Renamed from "unlock", which is defined
1226 in unistd.h on QNX. (Reported by Matt Kraai.)
1227
1228 2006-03-04 Kevin Ryde <user42@zip.com.au>
1229
1230 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
1231 not SCM_CRITICAL_SECTION_START.
1232
1233 * eval.c, posix.c: Change comments from C++ to C style. Reported by
1234 Mike Gran.
1235
1236 2006-02-28 Kevin Ryde <user42@zip.com.au>
1237
1238 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
1239
1240 2006-02-26 Kevin Ryde <user42@zip.com.au>
1241
1242 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
1243 NAME_MAX is not available, which is so on Solaris 10. Report and help
1244 by Bill Schottstaedt.
1245
1246 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
1247 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
1248 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
1249 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
1250 use "unsigned char", not signed char. This ensures comparisons are
1251 the same as `char<?' etc, and is also the same as guile 1.6 did.
1252 Reported by Sven Hartrumpf.
1253
1254 2006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
1255
1256 * random.c: Test for SCM_HAVE_T_UINT64 instead of
1257 SCM_HAVE_T_INT64.
1258 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
1259 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
1260 scm_t_int32.
1261
1262 2006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
1263
1264 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
1265 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
1266 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
1267 Take into account SEG->SPAN when computing CELLS_SWEPT.
1268 (scm_i_sweep_segment): Take one more argument, similarly.
1269 (scm_i_sweep_all_segments): Likewise.
1270 (scm_i_sweep_some_segments): Likewise.
1271 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
1272 refer to SCM_GC_CELLS_COLLECTED.
1273
1274 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
1275 argument, an `scm_i_sweep_statistics' object.
1276 Change the way DELTA is collected: don't take into account
1277 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
1278
1279 * gc-malloc.c (scm_realloc): Pass an extra argument
1280 to `scm_i_sweep_all_segments ()'.
1281
1282 * gc.c (gc_start_stats): Updated accordingly.
1283 (gc_end_stats): Take an additional SWEEP_STATS argument.
1284 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
1285 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
1286 Decrement SCM_CELLS_ALLOCATED.
1287 (scm_i_gc): Likewise.
1288
1289 * private-gc.h (scm_i_sweep_*): Updated function
1290 prototypes accordingly.
1291 (scm_t_sweep_statistics): New type.
1292 (scm_i_sweep_statistics_init): New macro.
1293 (scm_i_sweep_statistics_sum): New macro
1294
1295 2006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
1296
1297 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
1298 LEN. Without this, too much collectable memory gets unregistered,
1299 which results in an underflow of SCM_MALLOCATED in
1300 `decrease_mtrigger()'.
1301
1302 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
1303 equal to SCM_MALLOCATED.
1304
1305 2006-02-13 Marius Vollmer <mvo@zagadka.de>
1306
1307 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
1308 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
1309 configured --without-threads.
1310 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
1311
1312 2006-02-12 Marius Vollmer <mvo@zagadka.de>
1313
1314 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
1315 filling when the fill parameter is omitted, as documented, but
1316 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
1317 can not store characters.
1318
1319 2006-02-09 Neil Jerram <neil@ossau.uklinux.net>
1320
1321 * socket.c (scm_c_make_socket_address): Pass address_size pointer
1322 on to scm_fill_sockaddr call.
1323
1324 2006-02-04 Neil Jerram <neil@ossau.uklinux.net>
1325
1326 * throw.h (scm_c_catch, scm_c_with_throw_handler,
1327 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
1328
1329 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
1330 (struct pre_unwind_data): New, replaces struct lazy_catch.
1331 (scm_c_catch): New, replaces scm_internal_catch as the primary
1332 catch API for C code; adds pre-unwind handler support.
1333 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
1334 compatibility.
1335 (tc16_pre_unwind_data, pre_unwind_data_print,
1336 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
1337 "lazy_catch" equivalents.
1338 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
1339 as the primary C API for a "lazy" catch.
1340 (scm_internal_lazy_catch): Now just a wrapper for
1341 scm_c_with_throw_handler, for back compatibility.
1342 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
1343 pre-unwind handler support.
1344 (scm_catch): Now just a wrapper for
1345 scm_catch_with_pre_unwind_handler, for back compatibility.
1346 (scm_with_throw_handler): New.
1347 (scm_lazy_catch): Update comment to say that the handler can
1348 return, and what happens if it does.
1349 (toggle_pre_unwind_running): New.
1350 (scm_ithrow): When identifying the throw target, take running
1351 flags into account. In general, change naming of things from
1352 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
1353 don't unwind the dynamic context first. Add dynwind framing to
1354 manage the running flag of a throw handler. If a lazy catch or
1355 throw handler returns, rethrow the same exception again. Add
1356 pre-unwind support to the normal catch case (SCM_JMPBUFP).
1357
1358 * root.c (scm_internal_cwdr): Add NULL args to
1359 scm_i_with_continuation_barrier call.
1360
1361 * dynwind.c: Change comment mentioning lazy-catch to mention
1362 pre-unwind data and throw handler also.
1363
1364 * continuations.h (scm_i_with_continuation_barrier): Add
1365 pre-unwind handler args.
1366
1367 * continuations.c (scm_i_with_continuation_barrier): Add
1368 pre-unwind handler args, and pass on to scm_c_catch (changed from
1369 scm_internal_catch).
1370 (c_handler): Remove scm_handle_by_message_noexit call.
1371 (scm_c_with_continuation_barrier): Call
1372 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1373 as the pre-unwind handler.
1374 (scm_handler): Remove scm_handle_by_message_noexit call.
1375 (s_scm_with_continuation_barrier): Call
1376 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1377 as the pre-unwind handler.
1378
1379 2006-02-04 Kevin Ryde <user42@zip.com.au>
1380
1381 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
1382
1383 2006-02-03 Kevin Ryde <user42@zip.com.au>
1384
1385 * list.c, list.h (scm_list): Restore this function for use from C.
1386 It's a complete no-op but in theory might used by someone.
1387
1388 2006-01-30 Marius Vollmer <mvo@zagadka.de>
1389
1390 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
1391 so that it gets unlocked in all cases.
1392 (SCM_APPLY, CEVAL): Likewise.
1393
1394 2006-01-29 Marius Vollmer <mvo@zagadka.de>
1395
1396 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
1397 scm_is_typed_array instead.
1398
1399 Renamed the "frames" that are related to dynamic-wind to "dynamic
1400 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
1401 Updated documentation.
1402
1403 Disabled "futures":
1404
1405 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
1406 * eval.c, init.c: Comment out all 'future' related things.
1407
1408 2006-01-28 Marius Vollmer <mvo@zagadka.de>
1409
1410 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
1411 to inline.h to make it inline.
1412
1413 2005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
1414
1415 * strings.c (scm_i_take_stringbufn): New.
1416 (scm_i_c_take_symbol): New.
1417 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
1418
1419 * strings.h (scm_i_c_take_symbol): New.
1420 (scm_i_take_stringbufn): New.
1421
1422 * symbols.c (lookup_interned_symbol): New function.
1423 (scm_i_c_mem2symbol): New function.
1424 (scm_i_mem2symbol): Use `lookup_symbol ()'.
1425 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
1426 creating a new Scheme string.
1427 (scm_from_locale_symboln): Likewise.
1428 (scm_take_locale_symbol): New.
1429 (scm_take_locale_symboln): New.
1430
1431 * symbols.h (scm_take_locale_symbol): New.
1432 (scm_take_locale_symboln): New.
1433
1434 2006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1435
1436 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
1437 free_count.
1438
1439 2005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
1440
1441 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
1442 upon error
1443
1444 2005-12-29 Neil Jerram <neil@ossau.uklinux.net>
1445
1446 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
1447 the GC when allocated_fluids_len is zero.
1448
1449 2005-12-14 Neil Jerram <neil@ossau.uklinux.net>
1450
1451 * load.c (the_reader, the_reader_fluid_num): New.
1452 (scm_primitive_load): Support custom reader.
1453 (scm_init_load): Init the_reader and the_reader_fluid_num; export
1454 the_reader as `current-reader'.
1455
1456 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
1457 (rather than an uninitialized pointer on the stack).
1458
1459 2005-12-07 Marius Vollmer <mvo@zagadka.de>
1460
1461 Reported by Bruce Korb:
1462
1463 * init.c (invoke_main_func): Don't call exit here. Throws that
1464 are only caught by scm_with_guile will bypass us and would cause
1465 scm_boot_guile to return erroneously.
1466 (scm_boot_guile): Expect scm_with_guile to return and call exit
1467 here, passing it an appropriate exit code.
1468
1469 From Andy Wingo:
1470
1471 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1472 unsigned char cast to an int, or -1 for EOS.
1473
1474 2005-12-06 Marius Vollmer <mvo@zagadka.de>
1475
1476 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1477 non-const.
1478 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
1479
1480 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1481 scm_enter_guile): Removed from public API. See comment at
1482 scm_without_guile for the rationale.
1483
1484 * scmsigs.c (read_without_guile): New.
1485 (signal_delivery_thread): Use it instead of
1486 scm_leave_guile/read/scm_enter_guile.
1487
1488 From Stephen Compall:
1489
1490 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1491 (CEVAL): Evaluate SRFI 61 cond clauses.
1492
1493 2005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
1494
1495 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1496 This was typically hit when running `gc-live-object-stats' right
1497 after starting Guile.
1498
1499 2005-11-30 Kevin Ryde <user42@zip.com.au>
1500
1501 * srfi-13.c (scm_string_append_shared): No copying if just one
1502 non-empty string in args.
1503
1504 2005-11-26 Kevin Ryde <user42@zip.com.au>
1505
1506 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
1507 by Ludovic Courtès.
1508
1509 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1510 "register".
1511
1512 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1513 scm_malloc returning NULL, it never does that.
1514 * putenv.c (putenv): Likewise.
1515
1516 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1517 much too big to want to inline.
1518
1519 2005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
1520
1521 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1522 the value at its top. This fixes a reference leak.
1523 (PUSH_REF): Perform `pstate->top++' after calling
1524 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1525 effects.
1526
1527 2005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
1528
1529 * gc.c (scm_weak_vectors): Removed.
1530
1531 2005-11-12 Kevin Ryde <user42@zip.com.au>
1532
1533 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
1534 by Ludovic Courtès.
1535
1536 2005-11-07 Marius Vollmer <mvo@zagadka.de>
1537
1538 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1539 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1540 section might exit non-locally.
1541
1542 2005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1543
1544 * eval.c (sym_instead): New symbol.
1545 (ENTER_APPLY): Remove optional use of a continuation when making
1546 trap call.
1547 (scm_debug_opts): Change doc for 'cheap option to make clear that
1548 it is now obsolete.
1549 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1550 making trap calls, and implement substitution of eval expressions
1551 and return values using the values that the trap call handlers
1552 return.
1553
1554 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1555
1556 2005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
1557
1558 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1559 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1560 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1561 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1562 scm_c_make_socket_address): New functions.
1563 * socket.h: Add prototypes.
1564
1565 2005-10-24 Kevin Ryde <user42@zip.com.au>
1566
1567 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1568 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1569 POSIX spec examples, the latter are not available on for instance
1570 NetBSD.
1571
1572 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1573 posix.texi.
1574
1575 * stime.c (scm_strftime): Update docstring from posix.texi.
1576
1577 2005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1578
1579 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
1580
1581 * null-threads.h, pthread-threads.h
1582 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1583 (scm_i_pthread_mutexattr_recursive): New.
1584
1585 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1586 (scm_i_critical_section_mutex): Do not initialize statically.
1587 (scm_threads_prehistory): Initialize
1588 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1589 here.
1590
1591 * eval.c (source_mutex): Do not initialiaze statically.
1592 (scm_init_eval): Do it here, using
1593 scm_i_pthread_mutexattr_recursive.
1594
1595 2005-09-05 Marius Vollmer <mvo@zagadka.de>
1596
1597 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1598 New.
1599 (sym_reader): New.
1600 (scm_print_opts): Added "quote-keywordish-symbols" option.
1601 (quote_keywordish_symbol): New, for evaluating the option.
1602 (scm_print_symbol_name): Use it.
1603 (scm_init_print): Initialize new option to sym_reader.
1604
1605 2005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1606
1607 * eval.c (eval_letrec_inits): New.
1608 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1609
1610 2005-08-12 Marius Vollmer <mvo@zagadka.de>
1611
1612 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1613 Peter Gavin!
1614
1615 2005-08-12 Kevin Ryde <user42@zip.com.au>
1616
1617 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1618
1619 2005-08-06 Kevin Ryde <user42@zip.com.au>
1620
1621 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1622 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1623 scm_string_index, scm_string_index_right, scm_string_skip,
1624 scm_string_skip_right, scm_string_count, scm_string_map,
1625 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1626 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1627 procedures called in loops.
1628
1629 2005-08-02 Kevin Ryde <user42@zip.com.au>
1630
1631 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1632 avoid lots of copying where previoulsy growing by only 80 bytes at a
1633 time.
1634
1635 2005-08-01 Marius Vollmer <mvo@zagadka.de>
1636
1637 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1638 already have scm_lookup_closure_module, which does the same thing.
1639
1640 2005-08-01 Marius Vollmer <mvo@zagadka.de>
1641
1642 New marking algorithm for weak hashtables that fixes the problem
1643 that references from the non-weak value to the associated weak
1644 key (for example) would prevent the entry from ever being dropped.
1645
1646 Guardians have been changed back to their original semantics and
1647 are no longer greedy and no longer drop cycles.
1648
1649 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1650 hashtable and guardian machinery but call the relevant functions
1651 directly.
1652
1653 * guardians.h, guardians.c, deprecated.h,
1654 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1655 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1656 Deprecated and moved into deprecated.[ch].
1657
1658 * guardians.h, guardians.c: Mostly rewritten.
1659 (scm_i_init_guardians_for_gc,
1660 scm_i_identify_inaccessible_guardeds,
1661 scm_i_mark_inaccessible_guardeds): New.
1662 (scm_make_guardian): Removed greedy_p argument.
1663
1664 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1665 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1666 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1667 (scm_weaks_prehistory): Removed.
1668 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1669 scm_i_mark_weak_vectors_non_weaks,
1670 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1671 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1672 scm_scan_weak_vectors): Removed.
1673
1674 * hashtab.h (scm_i_scan_weak_hashtables): New.
1675 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1676 SCM_WVECTF_NOSCAN.
1677 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1678 t->n_items.
1679 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1680 to latter. Do not scan the alists themselves, this is done by the
1681 weak vector code now. Just update the element count.
1682
1683 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1684 to latter. The type is now only part of the cell word.
1685 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1686
1687 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1688
1689 2005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1690
1691 Some changes towards making it possible to run Guile on the EM64T
1692 platform.
1693
1694 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1695 mallocating for (unsigned long *bounds).
1696
1697 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1698 scm_t_bits before storing them in the type word.
1699
1700 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1701 scm_t_bits to int.
1702
1703 2005-07-12 Kevin Ryde <user42@zip.com.au>
1704
1705 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1706 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1707 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1708 than scm_makfrom0str.
1709 Reported by Ken Raeburn.
1710
1711 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1712 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1713 returning SCM_GC_CARD_BVEC.
1714
1715 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1716 rather than latin-1 acute accent, the latter may not print on all
1717 terminals.
1718
1719 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1720 trailing deletions, so as to return a substring if those are the only
1721 changes.
1722
1723 2005-07-10 Kevin Ryde <user42@zip.com.au>
1724
1725 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1726 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1727 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1728 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1729
1730 2005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1731
1732 * gc-card.c (scm_i_card_statistics): init tag.
1733
1734 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1735
1736 2005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1737
1738 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1739 string.
1740
1741 2005-06-25 Kevin Ryde <user42@zip.com.au>
1742
1743 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1744 last change, use plain copy-on-write substrings, the individual
1745 descriptions in the srfi don't mention shared storage (only the
1746 introduction does).
1747
1748 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1749 null-terminator, rather than mallocing a whole new block.
1750 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1751
1752 2005-06-12 Marius Vollmer <mvo@zagadka.de>
1753
1754 * ramap.c (scm_array_index_map_x): First test for real arrays,
1755 then check for generalized vectors. This ensures that the
1756 generalized vector case need only work with zero-origin ranges.
1757 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1758 to access the target array, making these functions work with all
1759 kinds of arrays, not just bit arrays.
1760
1761 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1762 gh_list.c, gh_predicates.c: Deprecated everything.
1763
1764 * environments.c (environment_default_folder,
1765 environment_default_observer): Do not use gh_call3, gh_call1.
1766
1767 2005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1768
1769 * modules.c (s_scm_eval_closure_module): new function. Return the
1770 module inside an eval-closure.
1771
1772 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1773 table. This means that procedure properties are GC'd if the
1774 procedure dies.
1775
1776 2005-06-11 Kevin Ryde <user42@zip.com.au>
1777
1778 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1779 charset cases, count chars kept and build a string in a second pass,
1780 rather than using a cons cell for every char kept. Use a shared
1781 substring when nothing removed (such sharing is allowed by the srfi).
1782
1783 2005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1784
1785 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
1786 string, so live object stats can be sorted with string<?.
1787
1788 2005-06-06 Marius Vollmer <mvo@zagadka.de>
1789
1790 * print.c (iprin1): When writing a string, collect all characters
1791 that can be printed directly into one call to scm_lfwrite.
1792 Previously, every character was output with its own call to
1793 write(2) on unbuffered ports.
1794
1795 * eval.c (scm_eval_options_interface): Use
1796 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1797 and SCM_CRITICAL_SECTION_END.
1798
1799 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1800 check for generalized vectors. This ensures that the generalized
1801 vector case need only work with zero-origin ranges.
1802
1803 2005-06-06 Kevin Ryde <user42@zip.com.au>
1804
1805 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1806 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1807 matched.
1808
1809 2005-06-05 Marius Vollmer <mvo@zagadka.de>
1810
1811 * eval.c: Added comment on how to make case 1.1 of
1812 r5rs_pitfall.test succeed.
1813
1814 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1815
1816 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
1817
1818 * socket.c: Remove obsolete comment about socklen_t.
1819 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
1820
1821 * numbers.h (isnan)[__MINGW32__]: Remove.
1822
1823 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
1824 DEFAULT_INCLUDES when cross compiling.
1825
1826 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
1827
1828 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
1829 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
1830 from Jan's patch.)
1831
1832 2005-05-22 Marius Vollmer <mvo@zagadka.de>
1833
1834 * unif.c (scm_make_shared_array): Add old base to new base since
1835 scm_array_handle_pos does not include the base.
1836 (scm_aind): Likewise.
1837
1838 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
1839 output port.
1840
1841 2005-05-12 Neil Jerram <neil@ossau.uklinux.net>
1842
1843 Mac OS X compile warning fixes, reported by Richard Todd.
1844
1845 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
1846 that it is signed.
1847
1848 * strports.c (st_resize_port): Add unsigned char cast.
1849 (scm_mkstrport): Make read/write_buf cast unsigned.
1850
1851 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
1852
1853 * rdelim.c (scm_read_line): Initialize slen.
1854
1855 * load.c (scm_search_path): Remove weird >=1, and add
1856 parentheses to clarify conditions.
1857
1858 * hash.c (scm_hasher): Add const unsigned char cast.
1859
1860 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
1861
1862 2005-05-11 Neil Jerram <neil@ossau.uklinux.net>
1863
1864 Fix C99isms reported by Ludovic Courtès:
1865
1866 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
1867 code.
1868
1869 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
1870 of code.
1871
1872 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
1873 of code.
1874 (scm_i_card_statistics): Add block for declarations of tag_as_scm
1875 and current.
1876
1877 2005-05-10 Neil Jerram <neil@ossau.uklinux.net>
1878
1879 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
1880 compile warning reported by Werner Scheinast.
1881
1882 2005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
1883
1884 * list.h: remove scm_list()
1885
1886 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
1887 SCM_DEBUG_CELL_ACCESSES
1888 (FLUID_NEXT_LOC): idem.
1889
1890 2005-04-30 Kevin Ryde <user42@zip.com.au>
1891
1892 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
1893 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
1894 zero when re==0 and im<0. Reported by Jean Crepeau.
1895
1896 2005-04-25 Kevin Ryde <user42@zip.com.au>
1897
1898 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
1899 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
1900 few sensible uses (like filling with a random number generator say),
1901 but has been allowed in the past and so should be kept.
1902
1903 2005-04-23 Kevin Ryde <user42@zip.com.au>
1904
1905 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
1906 scm_hash_fn_remove_x.
1907
1908 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
1909 the caller when cons* is reached through apply.
1910
1911 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
1912 list is called using apply, under the debugging evaluator.
1913 (scm_list): Remove.
1914
1915 * list.c, list.h (scm_make_list): New code, moving make-list from
1916 boot-9.scm.
1917
1918 2005-04-14 Kevin Ryde <user42@zip.com.au>
1919
1920 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
1921 converted from scheme code in boot-9.scm.
1922
1923 2005-04-11 Kevin Ryde <user42@zip.com.au>
1924
1925 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
1926 Validate list argument, scm_string_append and scm_string_append_shared
1927 don't do that to their rest argument (in a normal build).
1928
1929 2005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1930
1931 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
1932 closure can not be stored since it is no longer valid at GC time.
1933 (make_hash_table): Initialize 'hash_fn' field.
1934 (scm_i_rehash): Only store hash_fn in hash table when closre is
1935 NULL.
1936 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
1937 non-NULL. Always use a NULL closure.
1938 (scm_hash_fn_create_handle_x): Also rehash when table contains too
1939 few entries.
1940
1941 2005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1942
1943 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
1944 argument; always use scm_delq_x. The delete_fn function works on
1945 the handle, not the key, and it therefore makes no sense to make
1946 it configurable. Changed all callers.
1947 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
1948 (scm_hash_clear): Accept plain vectors as hashtables.
1949 (scm_delx_x): Removed.
1950
1951 2005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
1952
1953 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
1954 compatibility with gcc -std=c99.
1955
1956 2005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1957
1958 * async.h (scm_mask_ints): Removed left over reference to
1959 scm_root.
1960
1961 * threads.c: Removed fprintf debug statements.
1962
1963 2005-03-24 Neil Jerram <neil@ossau.uklinux.net>
1964
1965 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
1966
1967 2005-03-23 Neil Jerram <neil@ossau.uklinux.net>
1968
1969 * debug.c (scm_make_memoized): Remove unnecessary critical
1970 section, and simplify by using SCM_RETURN_NEWSMOB.
1971
1972 2005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1973
1974 * strings.h (SCM_STRING_UCHARS): Added missing argument.
1975
1976 2005-03-18 Kevin Ryde <user42@zip.com.au>
1977
1978 * arbiters.c (FETCH_STORE) [generic C]: Should be
1979 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
1980
1981 2005-03-13 Kevin Ryde <user42@zip.com.au>
1982
1983 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
1984 srfi-60.
1985
1986 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
1987 because OR-ing bits into a negative can reduce the value to an inum.
1988
1989 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
1990 casting inum to double since that can lose precision.
1991
1992 2005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1993
1994 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
1995 (guilify_self_1): Initialize it.
1996
1997 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
1998 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
1999 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
2000 field.
2001 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
2002 recursively.
2003 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
2004 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
2005 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
2006 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
2007 scm_after_gc_c_hook here.
2008 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
2009 scm_after_gc_c_hook when a full GC has in fact been performed.
2010 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
2011
2012 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
2013 scm_gc_heap_lock.
2014
2015 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
2016 scm_gc_running_p while the scm_i_sweep_mutex is locked.
2017
2018 * inline.h (scm_cell, scm_double_cell): Do not check
2019 scm_gc_running_p, allocation during sweeping is OK.
2020
2021 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
2022 not set scm_block_gc.
2023
2024 * init.c (scm_i_init_guile): Do not set scm_block_gc.
2025
2026 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
2027 instead of scm_malloc. The latter can not be used during GC.
2028
2029 2005-03-09 Marius Vollmer <mvo@zagadka.de>
2030
2031 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
2032 years.
2033
2034 2005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2035
2036 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
2037 scm_gc_running_p. Sweeping can happen in parallel with
2038 allocation.
2039
2040 * inline.h: Updated comments for current threading implementation.
2041
2042 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
2043 (scm_i_thread): Removed unused signal_asyncs field.
2044 (threads_mark): Do not mark it.
2045 (guilify_self_1): Do not initialize it. Do initialize
2046 continuation_root field.
2047 (do_thread_exit): Do not remove thread from all_threads list.
2048 (on_thread_exit): Do it here, after leaving guile mode.
2049 (sleep_level): Removed.
2050 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
2051 returning. Do not support recursive sleeps.
2052 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
2053 entry. Do not support recursive sleeps.
2054
2055 * fluids.c (ensure_state_size, ensure_all_state_sizes,
2056 resize_all_states): Collapsed ensure_state_size and
2057 ensure_all_state_sizes into one function named resize_all_states.
2058 Allocate new vectors outside of single threaded region. Do only
2059 simple things inside that region.
2060 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
2061 while adding to the global lists.
2062
2063
2064 2005-03-08 Marius Vollmer <mvo@zagadka.de>
2065
2066 libltdl is no longer distributed. We expect it to be installed
2067 already.
2068
2069 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
2070 (libguile_la_LIBADD): Removed @LIBLTDL@.
2071
2072 2005-03-07 Marius Vollmer <mvo@zagadka.de>
2073
2074 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
2075 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
2076 they also block/unblock execution of asyncs and call
2077 scm_async_click which is declared in async.h but threads.h can not
2078 include async.h since async.h already includes threads.h.
2079 (scm_i_critical_section_level): New, for checking mistakes in the
2080 use of the SCM_CRITICAL_SECTION_* macros.
2081 (scm_i_critical_section_mutex): Make it a recursive mutex so that
2082 critical sections can be nested.
2083
2084 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
2085 not zero.
2086
2087 * threads.h, threads.c (scm_frame_lock_mutex): New.
2088 (scm_frame_critical_section): Take mutex as argument.
2089 (framed_critical_section_mutex): New, used as default for above.
2090 (scm_init_threads): Initialize it.
2091 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
2092 scm_i_critical_section_mutex; both are initialized statically.
2093
2094 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
2095 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
2096 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
2097 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
2098
2099 * debug.c (scm_debug_options): Replace
2100 SCM_CRITICAL_SECTION_START/END with a frame and
2101 scm_frame_critical_section.
2102
2103 * continuations.c (scm_make_continuation): No longer a critical
2104 section.
2105 (scm_dynthrow): Abort when scm_i_critical_section_level is
2106 not zero.
2107
2108 2005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2109
2110 * threads.c (scm_try_mutex): Renamed argument for consistency.
2111
2112 * root.c (scm_call_with_dynamic_root): New docstring.
2113
2114 * eval.c: Define _GNU_SOURCE.
2115
2116 2005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2117
2118 Big merge from the mvo-thread-cleanup branch. The main changes
2119 are:
2120
2121 - The dynamic roots functionality has been split into dynamic
2122 states and continuations barriers. Fluids have been
2123 reimplemented and can now be garbage collected.
2124
2125 - Initialization of Guile now works in a multi-thread friendly
2126 manner. Threads can freely enter and leave guile mode.
2127
2128 - Blocking on mutexes or condition variables or while selecting
2129 can now be reliably interrupted via system asyncs.
2130
2131 - The low-level threading interface has been removed.
2132
2133 - Signals are delivered via a pipe to a dedicated 'signal delivery
2134 thread'.
2135
2136 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
2137
2138 * throw.c (scm_handle_by_message): Exit only the current thread,
2139 not the whole process.
2140 (scm_handle_by_message_noexit): Exit when catching 'quit.
2141
2142 * scmsigs.c (take_signal, signal_delivery_thread,
2143 start_signal_delivery_thread, ensure_signal_delivery_thread,
2144 install_handler): Reimplemented signal delivery as explained in
2145 the comments.
2146
2147 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
2148 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
2149 scm_i_sched_yield, scm_i_pthread_sigmask,
2150 SCM_I_PTHREAD_MUTEX_INITIALIZER,
2151 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
2152 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
2153 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
2154 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
2155 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
2156 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
2157 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
2158 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
2159 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
2160 scm_i_pthread_key_create, scm_i_pthread_setspecific,
2161 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
2162 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
2163 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
2164 when using pthreads.
2165 * null-threads.c, null-threads.h: Provide dummy definitions for
2166 the above symbols when not using pthreads.
2167
2168 * modules.h, modules.c (scm_frame_current_module): New.
2169
2170 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
2171 instead of scm_internal_dynamic_wind.
2172
2173 * init.h, init.c (restart_stack, start_stack): Removed.
2174 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
2175 (scm_boot_guile_1): Removed.
2176 (scm_i_init_mutex): New.
2177 (really_cleanup_for_exit, cleanup_for_exit): New.
2178 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
2179 Moved around some init funcs. Call
2180 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
2181 with atexit.
2182
2183 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
2184 Use "!scm_is_eq" instead of "!=".
2185
2186 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
2187 SCM_USE_COOP_THREADS): Removed.
2188
2189 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
2190 maintained. Unlock scm_i_sweep_mutex before running
2191 scm_after_gc_c_hook.
2192 (scm_permanent_object): Allocate outside of critical section.
2193 (cleanup): Removed.
2194
2195 * fluids.h, fluids.c: Reimplemented completely.
2196 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
2197 SCM_FAST_FLUID_SET): Reimplemented as functions.
2198 (scm_is_fluid): New.
2199 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
2200 (scm_make_dynamic_state, scm_dynamic_state_p,
2201 scm_is_dynamic_state, scm_current_dynamic_state,
2202 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
2203 scm_c_with_dynamic_state, scm_with_dynamic_state,
2204 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
2205
2206 * feature.c (progargs_fluid): New.
2207 (scm_program_arguments, scm_set_program_arguments): Use it instead
2208 of scm_progargs.
2209 (scm_init_feature): Allocate it. Also, only add "threads" feature
2210 when SCM_USE_PTHREAD_THREADS is true.
2211
2212 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
2213 scm_make_rec_mutex, with all the consequences.
2214 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
2215 scm_internal_dynamic_wind. Handle dynamic states as second
2216 argument.
2217
2218 * threads.h, threads.c (scm_internal_select): Renamed to
2219 scm_std_select and discouraged old name.
2220 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
2221 and scm_std_usleep.
2222 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
2223 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
2224 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
2225 SCM_THREAD_DATA): Removed.
2226 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
2227 (scm_i_thread): New.
2228 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2229 Use scm_assert_smob_type.
2230 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
2231 scm_thread_self, scm_thread_yield, scm_mutex_init,
2232 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
2233 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
2234 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
2235 scm_cond_init, scm_cond_destroy, scm_cond_wait,
2236 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
2237 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
2238 scm_thread_select): Removed. Replaced with scm_i_pthread
2239 functions as appropriate.
2240 (scm_in_guile, scm_outside_guile): Removed.
2241 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
2242 take a ticket.
2243 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
2244 New.
2245 (scm_i_frame_single_threaded): New.
2246 (scm_init_threads_default_dynamic_state): New.
2247 (scm_i_create_thread): Removed.
2248 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
2249 (scm_make_recursive_mutex): New.
2250 (scm_frame_critical_section): New.
2251 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
2252 latter, changed all uses.
2253 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
2254 scm_i_set_last_debug_frame): New, use them instead of scm_root
2255 stuff.
2256 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
2257 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
2258 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
2259 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
2260 (remqueue): Allow the removal of already removed cells. Indicate
2261 whether a real removal has happened.
2262 (scm_thread): Removed, replaced with scm_i_thread.
2263 (make_thread, init_thread_creatant): Removed.
2264 (cur_thread): Removed.
2265 (block_self, unblock_from_queue): New.
2266 (block, timed_block, unblock): Removed.
2267 (guilify_self_1, guilify_self_2, do_thread_exit,
2268 init_thread_key_once, init_thread_key,
2269 scm_i_init_thread_for_guile, get_thread_stack_base,
2270 scm_init_guile): New initialisation method.
2271 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
2272 thread creation.
2273 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
2274 "fair" to fat and implemented new semantics, including reliable
2275 interruption.
2276 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
2277 (scm_threads_mark_stacks): Explicitly mark handle.
2278 (scm_std_select): Allow interruption by also selecting on the
2279 sleep_pipe.
2280 (scm_i_thread_put_to_sleep): Handle recursive requests for
2281 single-threadedness.
2282 (scm_threads_prehistory, scm_init_threads): Put current thread
2283 into guile mode via guileify_self_1 and guileify_self_2,
2284 respectively.
2285
2286 * fluid.h (SCM_FLUIDP): Deprecated.
2287
2288 * coop-threads.c: Removed.
2289
2290 * continuations.h, continuations.c (scm_with_continuation_barrier,
2291 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
2292 New.
2293
2294 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
2295 (async_mutex): New.
2296 (scm_async_click): Protected with async_mutex. Do not deal with
2297 signal_asyncs, which are gone. Set cdr of handled async cell to
2298 #f.
2299 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
2300 current sleep.
2301 (scm_system_async_mark_for_thread): Do not use scm_current_thread
2302 since that might not work during early initialization.
2303
2304 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
2305 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
2306 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
2307 and SCM_CRITICAL_SECTION_END.
2308 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
2309 SCM_CRITICAL_SECTION_START/END.
2310
2311 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
2312 (libguile_la_SOURCES): Added null-threads.c
2313 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
2314 threads-plugin.c.
2315 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
2316
2317 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
2318 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
2319 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
2320 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
2321 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
2322 scm_make_root): Removed or deprecated. Replaced with references
2323 to the current thread, dynamic state, continuation barrier, or
2324 some fluid, as appropriate.
2325 (root_mark, root_print): Removed.
2326 (scm_internal_cwdr): Reimplemented guts with
2327 scm_frame_current_dynamic_state and
2328 scm_i_with_continuation_barrier.
2329 (scm_dynamic_root): Return current continuation barrier.
2330
2331
2332 2005-02-28 Marius Vollmer <mvo@zagadka.de>
2333
2334 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
2335 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
2336 cleanliness.
2337 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
2338 IP_DROP_MEMBERSHIP.
2339 Thanks to Greg Troxel!
2340
2341 2005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2342
2343 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
2344 block.
2345
2346 2005-02-25 Marius Vollmer <mvo@zagadka.de>
2347
2348 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
2349 so that no two weak alist vectors share a spine.
2350 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
2351 during GC before inserting the new alist cell.
2352
2353 2005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2354
2355 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
2356 the hashtable.
2357 (scm_hash_fn_create_handle_x): Likewise.
2358 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
2359
2360 2005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2361
2362 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
2363 the prototypical examples mentioned in the old reference manual.
2364 Instead keep the old semantics of dispatching on type. (Yes, this
2365 is extremely ugly, but the whole point of keeping the deprecated
2366 interface is not to break old code.)
2367
2368 2005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2369
2370 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
2371 scm_i_array_dims.
2372
2373 2005-01-28 Kevin Ryde <user42@zip.com.au>
2374
2375 * numbers.c (scm_ash): Rewrite using shifts, much faster than
2376 integer-expt and multiply/divide. Inexacts and fractions no longer
2377 supported (they happened to work before for left shifts, but not
2378 right). Don't really need inexacts and fractions, since ash is
2379 documented as a "bitwise operation", and all the rest of those only
2380 take exact integers.
2381
2382 2005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
2383
2384 * gc-card.c (scm_i_card_statistics): map structs, closures and
2385 subrs to one tag.
2386
2387 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
2388 (tag_table_to_type_alist): ignore unknown types.
2389
2390 * gc-segment.c (scm_i_all_segments_statistics): new function.
2391 (scm_i_heap_segment_statistics): new function
2392
2393 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
2394 statistics on the number of live objects of each type.
2395
2396 * gc-card.c (scm_i_tag_name): new function.
2397 (scm_i_card_statistics): new function.
2398
2399 2005-01-24 Kevin Ryde <user42@zip.com.au>
2400
2401 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
2402 POSIX and C99 don't document errno being set. Reported by Bruno
2403 Haible.
2404 (scm_flock): Update docstring from manual.
2405
2406 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
2407 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
2408 a 64-bit system.
2409
2410 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
2411 sa_handler, needs to be a long on 64-bit systems where int is only 32
2412 bits.
2413
2414 2005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2415
2416 * environments.c (obarray_enter, obarray_replace): Call
2417 SCM_HASHTABLE_INCREMENT when adding a new entry.
2418
2419 * objects.c: Include goops.h for the scm_class_of prototype.
2420
2421 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
2422 sizes to be smaller than the maximum lengths of vectors.
2423
2424 2005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2425
2426 * ports.c, smob.c: Include "libguile/goops.h".
2427
2428 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
2429 scm_class_char, scm_class_pair, scm_class_procedure,
2430 scm_class_string, scm_class_symbol,
2431 scm_class_procedure_with_setter, scm_class_primitive_generic,
2432 scm_class_vector, scm_class_null, scm_class_real,
2433 scm_class_complex, scm_class_integer, scm_class_fraction,
2434 scm_class_unknown, scm_port_class, scm_smob_class,
2435 scm_no_applicable_method, scm_class_of): Moved from objects to
2436 goops since they are only useable once goops has been loaded.
2437 (scm_classes_initialized): Removed.
2438 (scm_class_of): Do not check it.
2439 (create_standard_classes): Do not set it.
2440
2441 2005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2442
2443 * objects.h, objects.c (scm_classes_initialized): New.
2444 (scm_class_of): Signal error when scm_classes_initialized is zero.
2445 * goops.c (create_standard_classes): Set scm_classes_initialized
2446 to one.
2447
2448 * random.c (scm_random_solid_sphere_x): Use
2449 scm_c_generalized_vector_length instead of
2450 scm_uniform_vector_length.
2451
2452 2005-01-16 Marius Vollmer <mvo@zagadka.de>
2453
2454 * script.c (scm_compile_shell_switches): Removed debugging output.
2455
2456 2005-01-15 Kevin Ryde <user42@zip.com.au>
2457
2458 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
2459 docstrings from manual.
2460 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
2461
2462 2005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2463
2464 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
2465 its value.
2466
2467 Implement u64 and s64 uniform numeric vectors with bignums when
2468 scm_t_uint64 and scm_t_int64 are not available.
2469
2470 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2471 scm_array_handle_u64_elements,
2472 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2473 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2474 is not available.
2475 (scm_take_s64vector, scm_array_handle_s64_elements,
2476 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2477 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2478 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2479 scm_t_int64/scm_t_uint64 are not available.
2480 (uvec_mark): New, to mark the bignums.
2481 (alloc_uvec): Initialize bignums.
2482 (uvec_fast_ref): Return bignums directly.
2483 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2484 assert_exact_integer): New.
2485 (uvec_fast_set): Use them to validate the bignums.
2486 (scm_init_srfi_4): Set mark function of smob when needed.
2487 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2488 scm_int64_max.
2489
2490 Recognize 1.4 -e syntax.
2491
2492 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2493 (scm_compile_shell_switches): Use them to recognize and convert
2494 1.4 "-e" syntax.
2495
2496 2005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2497
2498 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2499 deprecated features that once were macros but are now functions
2500 back into macros.
2501
2502 2005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2503
2504 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2505 * deprecation.c (scm_issue_deprecation_warning,
2506 scm_c_issue_deprecation_warning_fmt): Use it.
2507 (mode): Removed.
2508 (print_summary): New.
2509 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2510 mode.
2511
2512 Deprecated SCM_ARRAY* macros.
2513
2514 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2515 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2516 version. Changed all uses.
2517 (scm_tc16_array, scm_i_tc16_array,
2518 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2519 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2520 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2521 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2522 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2523 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2524 SCM_ARRAY_V, SCM_I_ARRAY_V,
2525 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2526 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2527 scm_t_array, scm_i_t_array): Likewise.
2528 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2529 Moved from unif.h to unif.c.
2530 (scm_c_array_rank): New.
2531 (scm_array_rank): Reimplement using it.
2532
2533 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2534 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2535 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
2536
2537 2005-01-11 Marius Vollmer <mvo@zagadka.de>
2538
2539 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2540 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2541 scm_c_generalized_vector_ref and scm_cvref, and
2542 scm_c_generalized_vector_set_x, respectively.
2543 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2544 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2545
2546 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2547 former to latter and made public. Changed all uses.
2548 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2549 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2550 (scm_i_shap2ra): New internal version of scm_shap2ra.
2551 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2552 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2553 (scm_ra_set_contp): Deprecated, changed all uses to
2554 scm_i_ra_set_contp.
2555 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
2556
2557 2005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2558
2559 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2560 Trotts!
2561
2562 * unif.c (scm_list_to_typed_array): Allow the specification of the
2563 upper bound as well. This is needed for empty arrays.
2564 (l2ra): Give needed number of elements in error message.
2565 (scm_i_print_array): Print length information for arrays that need
2566 it.
2567 (scm_i_read_array): Parse it.
2568
2569 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2570 scm_i_object_chars, scm_i_object_length): Brought back from the
2571 dead.
2572
2573 2005-01-10 Marius Vollmer <mvo@zagadka.de>
2574
2575 * ramap.c: Replaced single-index uses of scm_array_set_x with
2576 scm_c_generalized_vector_set_x.
2577
2578 * unif.c (scm_array_rank, scm_array_dimensions,
2579 scm_shared_array_offset, scm_shared_array_increments,
2580 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2581 to simplify code and make it more general.
2582 (scm_shared_array_root): Work with all kinds of arrays, including
2583 naked vectors.
2584 (indices_to_pos): New.
2585 (scm_make_shared_array): Use it instead of scm_aind; use handle
2586 for oldra.
2587
2588 2005-01-10 Kevin Ryde <user42@zip.com.au>
2589
2590 * posix.c (scm_mkstemp): Update docstring from manual.
2591
2592 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2593
2594 2005-01-09 Marius Vollmer <mvo@zagadka.de>
2595
2596 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2597 scm_i_uniform_vector_set_proc): New.
2598 (u8ref, u8set, s8ref, s8set, etc): New.
2599 (uvec_reffers, uvec_setters): New.
2600 (uvec_to_list): Use generic scm_array_handle_ref instead of
2601 uvec_fast_ref since scm_array_handle_ref should be faster now.
2602 (coerce_to_uvec, scm_c_uniform_vector_ref,
2603 scm_c_uniform_vector_set_x): Likewise.
2604
2605 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2606 New.
2607 (scm_t_array_handle): Added ref, set, elements and
2608 writable_elements for fast inline operation of
2609 scm_array_handle_ref and scm_array_handle_set.
2610 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2611 and replaced with inline code that simply calls the ref/set
2612 members of the handle.
2613 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2614 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2615 New.
2616 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2617 and memoize_set.
2618 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2619 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2620 scm_bit_invert_x): Correctly multiply index with increment in the
2621 general case.
2622
2623 * unif.c (scm_array_handle_set): Correctly execute only one
2624 alternative. D'Oh!
2625 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2626 the array; this covers all cases with much simpler code.
2627
2628 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2629 as well.
2630
2631 2005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2632
2633 * srfi-4.c (uvec_type): New.
2634 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2635 scm_c_uniform_vector_x): Use it to get concrete type.
2636
2637 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2638 fit the docs.
2639
2640 * unif.c (ra2l): Handle zero rank arrays.
2641 (scm_i_print_array): Print zero rank arrays specially.
2642 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2643 (scm_i_read_array): Allow zero rank arrays.
2644
2645 2005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2646
2647 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2648 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2649 and SCM_SET_HASHTAB_BUCKET.
2650
2651 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2652 Removed ref_stack field.
2653 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2654 of a print state. Use them everywhere instead of ref_stack.
2655
2656 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
2657
2658 * srfi-4.c: Include deprecation.h.
2659
2660 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2661 deprecated.c, eq.c
2662 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2663 (scm_vector_elements, scm_vector_writable_elements,
2664 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2665 unif.[hc].
2666 (SCM_SIMPLE_VECTOR_LOC): Removed.
2667 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2668 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2669 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2670 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2671 latter. Changed use in eq.c.
2672
2673 2005-01-07 Marius Vollmer <mvo@zagadka.de>
2674
2675 Make the uniform vector routines also deal with one dimensional
2676 arrays.
2677
2678 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2679 SCM_SMOB_PREDICATE in this file.
2680 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2681 of the right type.
2682 (scm_is_uniform_vector): Likewise.
2683 (uvec_fast_ref): Made BASE param const.
2684 (uvec_writable_elements, uvec_elements): New.
2685 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2686 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2687 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2688 arrays.
2689 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2690 argument convention.
2691 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2692 checking.
2693 (scm_uniform_vector_length): Use uvec_length.
2694
2695 2005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2696
2697 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2698 scm_c_uniform_vector_size): Removed.
2699 (scm_array_handle_uniform_element_size): New.
2700
2701
2702 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2703 type of POS parameter to be signed, positions can be negative.
2704 (scm_array_handle_release): New, changed all uses of
2705 scm_t_array_handle to properly call it.
2706 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2707 Renamed former to latter, changed all uses.
2708
2709 2005-01-05 Marius Vollmer <mvo@zagadka.de>
2710
2711 Updated bitvector routines to also use scm_t_array_handles.
2712
2713 * unif.h (scm_bitvector_elements,
2714 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2715 deliver offset, length and increment to caller. Changed all uses.
2716 (scm_bitvector_release_elements,
2717 scm_frame_bitvector_release_elements,
2718 scm_bitvector_release_writable_elements,
2719 scm_frame_bitvector_release_writable_elements): Removed.
2720 (scm_array_handle_bit_elements,
2721 scm_array_handle_bit_writable_elements,
2722 scm_array_handle_bit_elements_offset): New.
2723 (scm_make_typed_array): The special value for non-initialized
2724 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2725 was a valid value to fill bitvectors with, so it can't really be
2726 specialed out.
2727
2728 2005-01-04 Kevin Ryde <user42@zip.com.au>
2729
2730 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2731 Reported by Bill Schottstaedt.
2732
2733 2005-01-02 Marius Vollmer <mvo@zagadka.de>
2734
2735 * sort.c (quicksort): Added INC parameter for non-contigous
2736 vectors.
2737 (quicksort1): New, for contigous vectors. Both functions are
2738 generated from the same code by including "quicksort.i.c".
2739 (scm_restricted_vector_sort_x): Call one of quicksort and
2740 quicksort1, depending on increment of vector.
2741 (scm_sort): Simply call scm_sort_x on a copy of the list or
2742 vector.
2743 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2744 size_t, added inc parameter.
2745 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2746 so that it doesn't leak.
2747 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2748 list or vector.
2749
2750 * ramap.c (scm_array_map_x): Do not try to convert fill value
2751 before filling, any necessary conversion is done while storing.
2752
2753 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2754 doing it inline.
2755
2756 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2757 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2758 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2759
2760 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2761 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2762 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2763 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2764 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2765 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2766 vector elements API or simple vector API, as appropriate. Removed
2767 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2768 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2769
2770 * srfi-4.h, srfi-4.c,
2771 srfi-4.i.c (scm_array_handle_uniform_elements,
2772 scm_array_handle_uniform_writable_elements,
2773 scm_uniform_vector_elements,
2774 scm_uniform_vector_writable_elements):
2775 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2776 scm_t_array_handle, deliver length and increment.
2777 (scm_array_handle_<foo>_elements,
2778 scm_array_handle_<foo>_writable_elements): New.
2779
2780 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2781 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
2782
2783 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2784 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2785 scm_array_handle_set, scm_array_handle_elements
2786 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2787 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2788 scm_dimensions_to_uniform_array): Deprecated for real.
2789 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2790 snarfing wont allow a mismatch between C and Scheme arglists.
2791 (scm_make_shared_array, scm_enclose_array): Correctly use
2792 scm_c_generalized_vector_length instead of
2793 scm_uniform_vector_length.
2794
2795 * validate.h (SCM_VALIDATE_VECTOR,
2796 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2797 of SCM_VECTORP.
2798
2799 * weaks.h, weaks.c: Use new internal weak vector API from
2800 vectors.h.
2801
2802 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2803 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2804 'extra' to being regular sources.
2805 (noinst_HEADERS): Added quicksort.i.c.
2806 * quicksort.i.c: New file.
2807
2808 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2809 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2810 and reimplemented. Replaced all uses with scm_vector_elements,
2811 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2812 appropriate.
2813 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2814 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2815 SCM_SIMPLE_VECTOR_LOC): New.
2816 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2817 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2818 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2819 Removed.
2820 (scm_vector_copy): New.
2821 (scm_vector_elements, scm_vector_writable_elements): Use
2822 scm_t_array_handle, deliver length and increment. Moved to
2823 unif.h. Changed all uses.
2824 (scm_vector_release_elements,
2825 scm_vector_release_writable_elements,
2826 (scm_frame_vector_release_elements,
2827 scm_frame_vector_release_writable_elements): Removed.
2828 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
2829 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
2830 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
2831 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
2832 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
2833 weak vectors.
2834
2835 2004-12-29 Marius Vollmer <mvo@zagadka.de>
2836
2837 No longer use creators to specify the type of an array. Creators
2838 expose the fact that arrays are wrapped around vectors, but that
2839 might change.
2840
2841 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
2842 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
2843 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
2844 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
2845 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
2846 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
2847 uvec_proc_vars): Removed.
2848 (scm_i_generalized_vector_creator): Removed.
2849 (scm_i_generalized_vector_type): New.
2850
2851 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
2852 scm_make_typed_array, scm_array_type, scm_list_to_array,
2853 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
2854 (scm_array_creator): Removed.
2855 (scm_array_p): Deprecated second PROT argument.
2856 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
2857 Deprecated, reimplemented in terms of scm_make_typed_array and
2858 scm_list_to_typed_array.
2859 (scm_i_proc_make_vector, scm_i_proc_make_string,
2860 scm_i_proc_make_bitvector): Removed.
2861 (type_creator_table, init_type_creator_table, type_to_creator,
2862 make_typed_vector): New.
2863 (scm_i_convert_old_prototype): Removed.
2864 (prototype_to_type): New.
2865 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
2866 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
2867 minor added clarity.
2868 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
2869 instead of scm_make_uve.
2870 (tag_creator_table, scm_i_tag_to_creator): Removed.
2871 (tag_to_type): New.
2872 (scm_i_read_array): Use scm_list_to_typed_array instead of
2873 scm_list_to_uniform_array.
2874
2875 2004-12-27 Marius Vollmer <mvo@zagadka.de>
2876
2877 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
2878 (scm_bitvector_writable_elements): New.
2879 (scm_bitvector_release, scm_bitvector_release_elements):
2880 Renamed former to latter. Added explicit call to
2881 scm_remember_upto_here_1.
2882 (scm_frame_bitvector_release,
2883 scm_frame_bitvector_release_elements): Renamed former to latter.
2884 (scm_bitvector_release_writable_elements,
2885 scm_bitvector_release_writable_elements): New.
2886 Changed all uses as required by the changes above.
2887
2888 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
2889 scm_u8vector_elements, etc): Made return value "const".
2890 (scm_uniform_vector_writable_elements,
2891 scm_u8vector_writable_elements, etc): New.
2892 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
2893 Renamed former to latter. Added explicit call to
2894 scm_remember_upto_here_1.
2895 (scm_frame_uniform_vector_release,
2896 scm_frame_uniform_vector_release_elements): Renamed former to latter.
2897 (scm_uniform_vector_release_writable_elements,
2898 scm_frame_uniform_vector_release_writable_elements): New. Takes
2899 crown of longest identifier yet.
2900 Changed all uses as required by the changes above.
2901
2902 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
2903 void.
2904 (scm_is_vector, scm_vector_p, scm_vector_length,
2905 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
2906 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
2907 scm_vector_move_left_x, scm_vector_move_right_x,
2908 scm_vector_fill_x): handle one-dimensional arrays.
2909 (scm_vector_elements, scm_vector_release_elements,
2910 scm_vector_frame_release_elements, scm_vector_writable_elements,
2911 scm_vector_release_writable_elements,
2912 scm_vector_frame_release_writable_elements): New.
2913 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
2914 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
2915
2916 * ramap.c (scm_ramapc, scm_raeql): Use
2917 scm_c_generalized_vector_length instead of
2918 scm_uniform_vector_length.
2919 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
2920 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
2921
2922 2004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2923
2924 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
2925 member for relocating debug frames.
2926 (scm_make_continuation): Set it.
2927
2928 * stacks.c (read_frame, read_frames, scm_make_stack,
2929 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
2930 of continuations instead of calculating the offset ourselves.
2931 Relocate 'vect' member of scm_t_debug_frame.
2932
2933 2004-12-16 Kevin Ryde <user42@zip.com.au>
2934
2935 * ramap.c (scm_array_map_x): Check for at least one source argument.
2936
2937 2004-12-14 Kevin Ryde <user42@zip.com.au>
2938
2939 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
2940 the C code so for the final call to the predicate procedure is a tail
2941 call, per SRFI-13 spec.
2942
2943 2004-12-10 Kevin Ryde <user42@zip.com.au>
2944
2945 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
2946 recent revision to the reference manual.
2947
2948 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
2949 with "%", C99 says it's well-defined.
2950
2951 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
2952 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
2953 bother trying to fit scm_from_ulong, not really worth the trouble if
2954 addresses are more than 4 bytes usually.
2955
2956 2004-11-30 Kevin Ryde <user42@zip.com.au>
2957
2958 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
2959 arm32. Reported by Greg Troxel.
2960
2961 2004-11-14 mvo <mvo@zagadka.de>
2962
2963 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
2964
2965 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
2966
2967 2004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2968
2969 Enclosed arrays are now their own smob. This has been done to
2970 make the code more explicit about them and to prepare for the time
2971 when generalized vectors include arbitrary one-dimensional
2972 arrays. (Uptonow, enclosed arrays have been recognized by their
2973 use of an array as their storage 'vector'. When all generalized
2974 vectors are allowed as storage, including one-dimensional arrays,
2975 this will no longer work.)
2976
2977 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
2978 New.
2979 (exactly_one_third, singp): Removed.
2980 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
2981 scm_shared_array_offset, scm_shared_array_increments): Handle
2982 enclosed arrays explicitely.
2983 (scm_array_rank): Likewise. Also, do not return zero for
2984 non-arrays, signal an error instead since arrays with rank zero do
2985 exist.
2986 (scm_i_make_ra): New, for specifying the tag of the new array.
2987 (scm_make_enclosed_array): Use it.
2988 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
2989 (scm_make_shared_array): Use scm_c_generalized_vector_length
2990 instead of scm_uniform_vector_length.
2991 (scm_array_in_bounds_p): Rewritten to be much cleaner.
2992 (scm_i_cvref): New, doing the job of scm_cvref.
2993 (scm_cvref): Use scm_i_cvref.
2994 (scm_array_ref): Do not accept non-arrays when no indices are
2995 given. Use scm_i_cvref to do the actual access.
2996 ("uniform-array-set1"): Do not register.
2997 (scm_array_set_x, scm_uniform_array_read_x,
2998 scm_uniform_array_write): Handle enclosed arrays explicitly.
2999 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
3000 handle enclosed arrays.
3001 (scm_array_to_list): Handle enclosed arrays explicitly.
3002 (rapr1): Removed.
3003 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
3004 enclosed arrays.
3005 (scm_i_print_enclosed_array): New.
3006 (tag_proto_table, tag_creator_table): Renamed former to latter.
3007 Added "a" and "b" for strings and bitvectors, resp.
3008 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
3009 latter. Tag "a" is in the table now, no need to handle it as a
3010 legacy tag.
3011 (scm_raprin1): Just call scm_iprin1.
3012 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
3013 explicitly.
3014 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
3015 Use scm_i_print_array as printer for scm_tc16_array.
3016
3017 2004-11-10 Marius Vollmer <mvo@zagadka.de>
3018
3019 * ramap.c (cind): Changed second arg to be pointer to long instead
3020 of uniform vector.
3021 (scm_ramapc): Allocate index vector with scm_malloc and not as
3022 uniform vector. Wrap it in a frame so that it gets properly freed.
3023 (scm_array_index_map_x): Likewise.
3024
3025 * unif.c: Changed all uses of scm_array_prototype to
3026 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
3027 prototype is known.
3028 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
3029 in terms of scm_uniform_vector_read_x and
3030 scm_uniform_vector_write, respectively. Strings and
3031 bitvector support has been dropped.
3032
3033 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
3034 needed files directly. Include config.h, <unistd.h> and <io.h>
3035 when available.
3036 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
3037
3038 2004-11-09 Marius Vollmer <mvo@zagadka.de>
3039
3040 * gh_data.c (gh_uniform_vector_length): Properly use
3041 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
3042
3043 2004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3044
3045 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
3046 New.
3047 (scm_i_uniform_vector_creator): Removed.
3048 (scm_i_generalized_vector_creator): New.
3049 (scm_uniform_vector_length, scm_uniform_element_size): Do not
3050 handle generalized vectors, only uniform numeric vectors.
3051 (alloc_uvec): Do length check here...
3052 (make_uvec): ...but not here.
3053 (coerce_to_uvec): Use new generalized vector functions to handle
3054 all kinds of vectors in one go.
3055
3056 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
3057 remaining scm_tc7_unused tags to get a neatly ordered list.
3058
3059 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
3060 longer handle scm_tc7_bvect bitvectors.
3061
3062 * ramap.c: Use the new generalized vector functions to handle all
3063 vector like things.
3064
3065 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
3066 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
3067 scm_generalized_vector_length, scm_generalized_vector_ref,
3068 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
3069 scm_is_generalized_vector, scm_c_generalized_vector_length,
3070 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
3071 New.
3072
3073 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
3074 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
3075 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
3076 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
3077 scm_c_bitvector_length, scm_c_bitvector_ref,
3078 scm_c_bitvector_set_x, scm_bitvector_elements,
3079 scm_bitvector_release, scm_frame_bitvector_release,
3080 scm_tc16_bitvector, bitvector_free, bitvector_print,
3081 bitvector_equalp, count_ones, find_first_one): New.
3082 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
3083 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
3084 using the new C API for bitvectors and maybe count_ones or
3085 find_first_one, as appropriate.
3086 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
3087 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
3088 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
3089 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
3090 new functions from above.
3091 (scm_i_proc_make_vector, scm_i_proc_make_string,
3092 scm_i_proc_make_bitvector): Made non-static for use in
3093 scm_i_generalized_vector_creator.
3094 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
3095 (scm_make_uve): Validate that the created object is a generalized
3096 vector.
3097 (scm_i_legacy_tag): Removed.
3098 (scm_i_print_array): Do it here.
3099 (scm_raprin1): Only print enclosed arrays.
3100
3101 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
3102
3103 2004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3104
3105 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
3106 added portability.
3107
3108 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
3109 for "space". Thanks to Bruce Korb!
3110
3111 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
3112 only after dest has been set. Thanks to Hyper Division!
3113
3114 * gh_data.c (gh_uniform_vector_length): Use
3115 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
3116
3117 2004-11-03 Marius Vollmer <mvo@zagadka.de>
3118
3119 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
3120 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
3121 SCM_SET_UVECTOR_LENGTH): Removed.
3122
3123 2004-11-02 Marius Vollmer <mvo@zagadka.de>
3124
3125 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
3126 Thanks!
3127
3128 * backtrace.c (scm_display_backtrace_with_highlights): Join the
3129 first and the second line of the SCM_DEFINE macro call, since old
3130 preprocessors cannot handle definitions that are split into two
3131 lines.
3132
3133 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
3134 declarations.
3135
3136 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
3137 scm_t_uint32 to fix the mismatch between the function declaration
3138 and definition.
3139
3140 * sort.c (quicksort): Don't use C99 variable declarations.
3141
3142 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
3143 SCM_BOOL_F if no type matches.
3144
3145 * threads.c (thread_print): Cast a pointer to size_t when printing
3146 with scm_uintprint.
3147
3148 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
3149 defined.
3150 (scm_array_prototype): Deprecated.
3151
3152 2004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3153
3154 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
3155 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
3156 more efficient access to the u32vector.
3157
3158 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
3159 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
3160 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
3161
3162 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
3163 instead of the old-style dvectors.
3164
3165 * gh_data.c: Use new-style uniform arrays in place of old-style
3166 ones.
3167
3168 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
3169 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
3170
3171 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
3172 instead of old-sytle uvectors.
3173
3174 * convert.c, convert.i.c: Rewritten completely, using
3175 scm_any_to_u8vector, etc and other new-style uniform vector
3176 functions.
3177
3178 * random.c (scm_random_solid_sphere_x,
3179 scm_random_hollow_sphere_x): Do not validate vector argument, this
3180 is already done elsewhere.
3181
3182 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
3183 scm_any_to_u8vector, etc): New.
3184 (scm_uniform_element_size, scm_uniform_vector_length): Do no
3185 longer handle old-style uniform vectors.
3186
3187 * read.c (scm_lreadr): Bugfix: include the last bit in the
3188 bit vector.
3189
3190 2004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3191
3192 * unif.h, unif.c (scm_array_creator): New.
3193 (scm_i_get_old_prototype): New.
3194 (scm_array_prototype): use it to return old-style prototype, never
3195 return creators.
3196 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
3197 arg of SCM_UNDEFINED. The latter is wrong.
3198
3199 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
3200 (make_uve): Removed.
3201 (scm_i_proc_make_vector, scm_i_proc_make_string,
3202 scm_i_proc_make_u1vector): New.
3203 (scm_init_unif): Initialize them.
3204 (scm_i_convert_old_prototype): New.
3205 (scm_make_uve): Use it to get the creator procedure. Removed all
3206 old code that created old-style uniform vectors.
3207 (scm_array_p): Handle generic vectors.
3208 (scm_dimensions_to_uniform_array): Do not fill new array with
3209 prototype when that is a procedure.
3210 (scm_list_to_uniform_array): Also accept a list of lower bounds as
3211 the NDIM argument.
3212 (scm_i_print_array): Print rank for shared or non-zero-origin
3213 vectors.
3214 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
3215 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
3216 which I do not understand yet.
3217 (scm_array_prototype): Explicitely handle generic vectors.
3218
3219 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
3220 (iflo2str): Use icmplx2str for complex numbers.
3221
3222 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
3223 scm_i_uniform_vector_prototype): Removed.
3224 (scm_i_uniform_vector_creator): New.
3225 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
3226 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
3227 Updated all tables and generic functions to support them.
3228 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
3229 (scm_init_srfi_4): Initialize them.
3230
3231 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
3232 sizeof(CTYPE) as explained in the comment.
3233
3234 * read.c (scm_lreadr): Call scm_i_read_array for all characters
3235 following '#' that can start an array. Explicitely disambiguate
3236 'i' and 'e' between introducing numbers and uniform vectors. Do
3237 not call scm_i_read_homogenous_vector, since that is also handled
3238 by scm_i_read_array now.
3239
3240 2004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3241
3242 First cut at integrating uniform vectors from srfi-4 with the rest
3243 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
3244 vector. The plan is to gradually replace one type after the other
3245 until none is left and then to consider general cleanups and
3246 optimizations.
3247
3248 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
3249
3250 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
3251 scm_uniform_vector_ref, scm_uniform_vector_set_x,
3252 scm_uniform_vector_to_list, scm_is_uniform_vector,
3253 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
3254 scm_uniform_vector_elements, scm_uniform_vector_element_size,
3255 scm_uniform_vector_release): New.
3256 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
3257 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
3258 from unif.h, unif.c and extended to handle both the old and new
3259 uniform vectors.
3260
3261 * tags.h (scm_tc7_byvect): Commented out.
3262
3263 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
3264 the former to the latter.
3265 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
3266 srfi-4.h, srfi-4.c.
3267 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
3268 (scm_array_p, scm_array_rank, scm_array_dimensions,
3269 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
3270 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
3271 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
3272 vectors. Removed code for scm_tc7_byvect.
3273 (scm_dimensions_to_uniform_array): Fill array with 0 when
3274 prototype is #\nul.
3275 (scm_i_print_array_dimension, scm_i_legacy_tag,
3276 scm_i_print_array): New.
3277 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
3278 for scm_tc7_byvect.
3279
3280 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
3281 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
3282 uniform vectors. Removed code for scm_tc7_byvect
3283
3284 * print.c (iprin1): Removed code for scm_tc7_byvect.
3285 * objects.c (scm_class_of): Likewise.
3286 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
3287 * gc-card.c (scm_i_sweep_card): Likewise.
3288 * evalext.c (scm_self_evaluating_p): Likewise.
3289 * eq.c (scm_equal_p): Likewise.
3290
3291 * gh_data.c (gh_chars2byvect): Reimplemented with
3292 scm_make_s8vector.
3293 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
3294
3295 * srfi-4.c (take_uvec): New.
3296 (alloc_uvec): Use it.
3297 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
3298
3299 * random.c (vector_scale, vector_scale_x): Renamed former to the
3300 latter, since it modifies its argument.
3301 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
3302 Do not use scm_universal_vector_length for non-uniform vectors.
3303 Use scm_f64vector_elements to access innards of uniform vectors.
3304
3305 * convert.i.c: Convert srfi-4 style uniform vectors when
3306 requested.
3307 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
3308 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
3309
3310 2004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3311
3312 * numbers.h, numbers.c (scm_i_print_double): New.
3313
3314 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
3315 ../srfi/ but heavily modified.
3316 * Makefile.am: Add them in all the right places.
3317 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
3318 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
3319 '#u', and '#s'.
3320
3321 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
3322 and made non-static. Changed all uses.
3323
3324 2004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3325
3326 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
3327 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
3328 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
3329 scm_uintprint to print unsigned integers, raw heap words, and
3330 adresses, using a cast to scm_t_bits to turn pointers into
3331 integers.
3332
3333 * unif.c: Include "libguile/print.h".
3334
3335 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
3336 scm_t_intmax values.
3337 (scm_uint2str): New, for scm_t_uintmax.
3338 (scm_iint2str): Argument type changed to scm_t_intmax,
3339 reimplemented in terms of scm_uint2str.
3340
3341 * print.c, print.h (scm_uintprint): New, for printing
3342 scm_t_uintmax values.
3343 (scm_intprint): Argument type changed to scm_t_intmax.
3344
3345 * sort.c (quicksort, scm_merge, scm_merge_list_x,
3346 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
3347 strategic places so that the loops can be interrupted.
3348
3349 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
3350 "-I$(top_srcdir)/libguile-ltdl".
3351 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
3352 "../libguile-ltdl/libguile-ltdl.a".
3353
3354 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
3355 all references to scm_lt_* with just lt_*. Include <ltdl.h>
3356 instead of <libguile-ltdl.h>.
3357
3358 2004-10-20 Marius Vollmer <mvo@zagadka.de>
3359
3360 * sort.c (quicksort): Copy pivot out of the array while
3361 constructing the partitions; it could get overwritten otherwise.
3362 Because of the ultimate insertion sort, this bug did not cause
3363 quicksort to fail, it just put all the burdon on the insertion
3364 sort and was thus very slow. Thanks to Rolan Orre for reporting
3365 the slowness!
3366
3367 2004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3368
3369 * numbers.c (scm_i_range_error): New.
3370 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
3371 scm_out_of_range.
3372
3373 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
3374 endpos. State inclusiveness/exclusiveness of bounds in docstring.
3375
3376 * unif.c (scm_array_p): When no prototype is given, explicitely
3377 test for allowable types, do not simply return true. Thanks to
3378 Roland Orre for reporting this!
3379
3380 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
3381
3382 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
3383 segment to scm_max_segment_size.
3384
3385 2004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
3386
3387 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
3388
3389 * inline.h (scm_double_cell): abort if GC running.
3390 (scm_cell): idem.
3391
3392 2004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3393
3394 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
3395 pos == 0.
3396
3397 Keywords no longer store a 'dash symbol'. Instead, they store a
3398 symbol with their real name.
3399
3400 * keywords.h, keywords.c, deprecated.h, deprecated.c
3401 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
3402 terms of scm_is_keyword and scm_keyword_dash_symbol.
3403
3404 * keywords.h, keywords.c, discouraged.h, discouraged.c
3405 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
3406 scm_c_make_keyword): Discouraged.
3407
3408 * keywords.h, keywords.c (scm_symbol_to_keyword,
3409 scm_keyword_to_symbol): Implemented in C.
3410 (scm_is_keyword, scm_from_locale_keyword,
3411 scm_from_locale_keywordn): New.
3412
3413 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
3414
3415 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
3416 scm_from_locale_keyword instead of scm_c_make_keyword.
3417
3418 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
3419 better error message.
3420
3421 * deprecated.c: Include discouraged.h and keywords.h.
3422
3423 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
3424 reading '#:' or ':'. See NEWS for consequences.
3425
3426 2004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3427
3428 * read.c (scm_lreadr): Revert change from 2004-09-22: string
3429 literals are now read-write again (until SCM_STRING_CHARS is
3430 removed).
3431
3432 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
3433 strings with an error message that blames SCM_STRING_CHARS.
3434
3435 * options.c (change_option_setting): Use scm_car instead of
3436 explicit type check plus SCM_CAR.
3437
3438 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
3439 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
3440 (scm_iprin1): Use them instead of the previoulsy hardcoded
3441 strings.
3442 (scm_init_print): Initialize them.
3443
3444 * backtrace.c (display_frame_expr): Do not remove control
3445 characters from the final string. Print it directly using
3446 scm_display.
3447
3448 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
3449 Thanks to Roland Orre!
3450
3451 2004-09-29 Kevin Ryde <user42@zip.com.au>
3452
3453 * regex-posix.c (scm_regexp_exec): Correction to last change, should
3454 be whole original string in match struct, not offsetted substring.
3455
3456 2004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
3457
3458 * gc.c (scm_gc_unprotect_object): abort if called during GC.
3459
3460 2004-09-24 Marius Vollmer <mvo@zagadka.de>
3461
3462 * Makefile.am (EXTRA_DIST): Added gettext.h.
3463
3464 * smob.c, smob.h (scm_assert_smob_type): New.
3465
3466 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
3467 Include GUILE_CFLAGS.
3468 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3469 now.
3470 (libpath.h): Put GUILE_CFLAGS in the build-info.
3471
3472 2004-09-23 Marius Vollmer <mvo@zagadka.de>
3473
3474 * print.h (scm_print_state): Added highlight_objects.
3475 * print.c (make_print_state, scm_free_print_state): Initialize it
3476 to SCM_EOL.
3477 (scm_iprin1): Wrap output in '{...}' when object is contained in
3478 highlight_objects.
3479
3480 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3481 scm_backtrace_with_highlights): New. Set highlight_objects of
3482 printstate.
3483
3484 * error.c (scm_error_scm): Document new meaning of data/rest
3485 argument for out-of-range and wrong-type-arg errors.
3486 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3487 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3488 exception so that it gets highlighted in the backtrace.
3489 Don't talk about "argument" when not giving a position.
3490
3491 * throw.c (handler_message): The rest argument is the fourth
3492 argument, not everything after the third. Call
3493 scm_display_backtrace_with_highlights, passing the rest argument
3494 when appropriate.
3495
3496 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3497
3498 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3499 <bruno@clisp.org>:
3500
3501 * i18n.c: Handle --disable-nls (thanks Bruno).
3502
3503 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3504 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3505
3506 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3507 LC categories.
3508 * posix.c (scm_setlocale): Use it.
3509
3510 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3511 scm_bind_textdomain_codeset): Make wrappers similar to C function
3512 they wrap.
3513
3514 * i18n.h: New file.
3515 * i18n.c: New file.
3516 * gettext.h: New file, taken from GNU gettext.
3517 * init.c: Include libguile/i18n.h.
3518 (scm_init_guile_1): Add call to scm_init_i18n().
3519 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3520 (DOT_X_FILES): Add i18n.x.
3521 (DOT_DOC_FILES): Add i18n.doc.
3522 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3523 (modinclude_HEADERS): Add i18n.h.
3524
3525 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3526
3527 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3528
3529 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3530 discouraged.h. Replaced all uses with scm_is_pair.
3531 (SCM_I_CONSP): New name for SCM_CONSP.
3532
3533 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3534 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3535 scm_cadr, etc): New.
3536 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3537 uses with scm_is_null.
3538
3539 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3540 instead of explicit code.
3541
3542 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3543
3544 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3545 Reworded logic a bit so that #f is returned immediately when s1 is
3546 too short to contain s2.
3547
3548 * regex-posix.c (scm_regexp_exec): Convert string to
3549 zero-terminated locale string before matching against it.
3550
3551 * strings.h, strings.c (scm_substring_read_only,
3552 scm_c_substring_read_only, scm_i_substring_read_only): New.
3553 (RO_STRING_TAG, IS_RO_STRING): New.
3554 (scm_i_string_writable_chars): Bail on read-only strings.
3555
3556 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3557 literals, thus making them read-only as specified by R5RS.
3558
3559 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3560
3561 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3562 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3563
3564 2004-09-21 Marius Vollmer <mvo@zagadka.de>
3565
3566 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3567 numbers.c.
3568 (scm_to_mpz, scm_from_mpz): New.
3569 Thanks to Andreas Vögele!
3570
3571 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3572 just on a line of its own.
3573
3574 * srfi-13.c (scm_string_any, scm_string_every,
3575 scm_string_tabulate, string_upcase_x, string_down_case_x,
3576 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3577 size_t instead of int for indices into strings. Make sure that no
3578 over- or underflow occurs. Thanks to Andreas Vögele!
3579 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3580 indices, which can also be negative.
3581
3582 2004-09-20 Marius Vollmer <mvo@zagadka.de>
3583
3584 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3585
3586 * threads.c (scm_threads_mark_stacks): Call
3587 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3588 only used once.
3589
3590 2004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3591
3592 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3593 Bugfix: when subtracting unsigned values, make sure that result
3594 does not wrap.
3595
3596 2004-09-09 Kevin Ryde <user42@zip.com.au>
3597
3598 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3599 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
3600 by Andreas Vögele.
3601
3602 2004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3603
3604 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3605
3606 * eq.c (real_eqv): Pretend that all NaNs are equal.
3607
3608 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3609
3610 2004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3611
3612 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3613 use size_t for some locals instead of int.
3614
3615 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3616 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3617 (skip_scsh_block_comment): Use scm_input_error instead of
3618 scm_misc_error in case of EOF.
3619
3620 2004-09-07 Kevin Ryde <user42@zip.com.au>
3621
3622 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
3623 Bug report by Bill Schottstaedt.
3624
3625 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3626 column.
3627 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3628
3629 * posix.c (scm_access): Update docstring per manual.
3630
3631 * posix.c (scm_nice): Correction to error detection. Reported by
3632 Matthias Koeppe.
3633
3634 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3635 throw error before unlocking mutex with SCM_ALLOW_INTS.
3636
3637 2004-09-06 Kevin Ryde <user42@zip.com.au>
3638
3639 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3640 available. This also gets around CLK_TCK being absent when
3641 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3642
3643 2004-09-03 Stefan Jahn <stefan@lkcc.org>
3644
3645 * threads.c (scm_threads_mark_stacks): Fixed local variable
3646 definitions.
3647
3648 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
3649 local variable definitions.
3650
3651 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3652 MinGW32 because it conflicts with its pthread headers.
3653 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3654 (scm_strftime): Using scm_from_locale_string() instead of
3655 scm_makfrom0str().
3656
3657 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
3658 part.
3659
3660 * numbers.c (scm_init_numbers): Removed check_sanity() call
3661 inside GUILE_DEBUG. The function has been removed somewhen...
3662
3663 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3664 MinGW32 because it conflicts with its pthread headers.
3665
3666 2004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3667
3668 * strings.c (SCM_STRINGP): Accept all strings.
3669 (SCM_STRING_CHARS): Reject shared substrings here.
3670
3671 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3672 the Copyright years.
3673
3674 2004-08-27 Kevin Ryde <user42@zip.com.au>
3675
3676 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3677 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3678 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3679
3680 2004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3681
3682 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3683 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3684 scm_i_symbol_is_interned, scm_i_mem2symbol,
3685 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3686
3687 2004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3688
3689 * srfi-13.c: First cut at thread-safeness and proper use of
3690 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3691 been inserted. Made sure that no internal string pointer is used
3692 across a SCM_TICK or a possible GC.
3693
3694 * script.c (scm_compile_shell_switches): Use
3695 scm_from_locale_string instead of scm_makfrom0str.
3696
3697 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3698 always been.
3699
3700 2004-08-25 Marius Vollmer <mvo@zagadka.de>
3701
3702 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3703 strop.c.
3704
3705 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3706 * strop.h, strop.c: Removed, they are now empty.
3707 * Makefile.am: Updated for new and removed files.
3708
3709 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3710 to scm_string_to_symbol.
3711
3712 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3713 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3714 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3715 charset instead of libc functions.
3716
3717 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3718 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3719 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3720 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3721 instead of explicit code.
3722
3723 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3724 "srfi-13.h" instead of "strop.h".
3725
3726 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3727 scm_init_srfi_14. Do not call scm_init_strop.
3728
3729 2004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3730
3731 * numbers.c (scm_inf_p): Synced docstring back from manual.
3732
3733 2004-08-22 Marius Vollmer <mvo@zagadka.de>
3734
3735 * strings.c (get_str_buf_start): New helper function.
3736 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3737 scm_i_string_char, scm_i_string_writable_chars): Use it.
3738 (scm_i_substring_copy): Make START argument optional for C
3739 callers, for upcoming SRFI-13 integration.
3740
3741 2004-08-21 Marius Vollmer <mvo@zagadka.de>
3742
3743 From Richard Todd, Thanks!
3744
3745 * script.c (scm_compile_shell_switches): added '-L' switch to add
3746 to the %load-path.
3747
3748 2004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3749
3750 * eval.c (unmemoize_exprs): When dropping internal body markers
3751 from the output during unmemoization, also drop those that are not
3752 immediately at the beginning of a body.
3753
3754 2004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3755
3756 * eval.c (scm_lookupcar1): Report "Variable used before given a
3757 value" insetad of an "Unbound" one for variables that are found
3758 but still contain SCM_UNDEFINED.
3759
3760 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3761 expects a null-terminated string in the locale encoding, but
3762 scm_i_string_writable_chars doesn't give that. Fixed by letting
3763 mkstemp modify a locale version of the tmpl argument and copying
3764 the result back into tmpl.
3765
3766 * strop.c (scm_substring_move_x): Store into str2, not str1.
3767
3768 2004-08-20 Kevin Ryde <user42@zip.com.au>
3769
3770 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3771 to modify the input string.
3772
3773 2004-08-19 Marius Vollmer <mvo@zagadka.de>
3774
3775 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3776 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3777 scm_c_symbol_length.
3778
3779 2004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3780
3781 New string implementation, with copy-on-write strings and
3782 mutation-sharing substrings, and a new internal string API.
3783 Symbols can now share memory with strings.
3784
3785 * tags.h (scm_tc7_stringbuf): New tag.
3786
3787 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3788 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3789 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3790 uses.
3791 (scm_i_make_string, scm_c_make_string): New, to replace
3792 scm_allocate_string. Updated all uses.
3793 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3794 SCM_STRING_LENGTH): Deprecated.
3795 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3796 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3797 Discouraged. Replaced all uses with scm_from_locale_string or
3798 similar, as appropriate.
3799 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3800 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3801 scm_substring_shared, scm_substring_copy): New.
3802
3803 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3804 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3805 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3806 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3807 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3808 Deprecated.
3809 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3810 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3811 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3812 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3813 Updated all uses.
3814 (scm_gensym): Generate only the number suffix in the buffer, just
3815 string-append the prefix.
3816
3817 * error.c (scm_memory_error): Do not try to throw, just abort.
3818 Throwing will not work anyway.
3819
3820 * gh.h, gh-data.c (gh_set_substr): Made src const.
3821
3822 * ports.c (scm_i_mode_bits_n): New, for counted strings.
3823 (scm_mode_bits): Use it.
3824 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
3825 a vector normally and fill that instead of consing a list with a
3826 blocked GC.
3827
3828 * read.c (scm_i_casei_streq): New, for counted strings.
3829
3830 * threads.c (gc_section_count): Removed, thread-sleeping can not
3831 be nested.
3832 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
3833 admin mutex so that we can be put to sleep by other threads while
3834 blocking on that mutex. Lock all the heap mutex of all threads,
3835 including ourselves.
3836 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
3837 call scm_i_enter_guile.
3838 (scm_thread_mark_stacks): Expect all threads to be suspended.
3839
3840 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
3841 scm_gc_mallocated, for now.
3842 (scm_init_storage): Initialize it.
3843 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
3844
3845 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
3846 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
3847 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
3848 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
3849
3850 * strop.c (scm_string_copy): Use scm_c_substring to get a
3851 copy-on-write string.
3852
3853 2004-08-18 Kevin Ryde <user42@zip.com.au>
3854
3855 * arbiters.c (FETCH_STORE): New macro.
3856 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
3857 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
3858 scm_try_arbiter and scm_release_arbiter.
3859 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
3860 for speed on i386, otherwise using mutex.
3861
3862 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
3863 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
3864 exact and inexact is #f.)
3865
3866 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
3867 to get thread safety of scm_ttyname.
3868
3869 * ports.c (ttyname): Remove prototype, unused.
3870
3871 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
3872 Reported by Michael Tuexen.
3873
3874 2004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3875
3876 * load.c (scm_init_load_path): Do not pass NULL to
3877 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
3878 not set. Thanks to Bill Schottstaedt.
3879
3880 2004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3881
3882 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
3883 locale strings instead of accessing their internals.
3884 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
3885 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
3886 SCM_STRING_CHARS and SCM_STRING_LENGTH.
3887
3888 * simpos.c (scm_system): Convert SCM strings to locale strings
3889 instead of accessing their internals.
3890
3891 * script.c (scm_compile_shell_switches): Convert version to locale
3892 string before printing it.
3893
3894 * rdelim.c (scm_read_delimited_x): Avoid
3895 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
3896 of scm_from_long for the returned number of read characters.
3897
3898 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
3899 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3900
3901 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
3902 Use them instead of SCM_SYSCALL when one or two strings need to be
3903 converted into locale strings.
3904 (my_rename): New, gathers platform dependent code for renaming.
3905 (scm_rename): Use it.
3906 (scm_readlink, scm_copy_file): Convert SCM strings to locale
3907 strings instead of accessing their internals.
3908 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
3909 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
3910 SCM_STRING_LENGTH.
3911
3912 * extensions.c (load_extension): Convert lib and init to locale
3913 strings instead of accessing the internals directly.
3914 (scm_c_load_extension): Use scm_from_locale_string instead of
3915 scm_makfrom0str.
3916
3917 * fports.h, fports.c (scm_i_fdes_to_port): New, like
3918 scm_fdes_to_port, but take mode bits directly instead of as a C
3919 string.
3920 (scm_i_fdes_to_port): Implement using above.
3921 (scm_open_file): Use scm_i_fdes_to_port together with
3922 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3923 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
3924 with scm_i_mode_bits to avoid accessing internals of SCM string
3925 from C.
3926
3927 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
3928 SCM string as argument.
3929
3930 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
3931 bits directly instead of C string.
3932 (scm_void_port): Implement using above.
3933 (scm_sys_make_void_port): Use scm_i_void_port together with
3934 scm_i_mode_bits to avoid accessing internals of SCM string.
3935
3936 * strings.h, strings.c (scm_i_get_substring_spec): New.
3937
3938 * socket.c, rw.c, deprecated.h, validate.h
3939 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
3940 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
3941 scm_to_locale_string, etc.
3942 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
3943 above, plus scm_i_get_substring_spec.
3944
3945 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
3946 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
3947 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
3948 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
3949 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
3950 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
3951 with more explicit scm_remember_upto_here_1, etc, or introduced
3952 them in the first place.
3953
3954 * posix.c (WITH_STRING): New helper macro. Use it where one
3955 locale string is needed for a short piece of code.
3956 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
3957 when one locale string is needed.
3958 (scm_mkstemp): Convert tmpl to a locale string.
3959 (scm_putenv): Rewritten to use only C strings.
3960 (scm_setlocale, scm_crpt): Convert argument strings to locale
3961 strings.
3962
3963 2004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3964
3965 * load.c (scm_primitive_load_path): Do not check for absolute
3966 filenames when scm_sys_search_load_path returns false, which will
3967 return absolute filenames unchanged.
3968
3969 2004-08-11 Marius Vollmer <mvo@zagadka.de>
3970
3971 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
3972 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
3973 of an alist. Thanks to Matthias Koeppe!
3974
3975 2004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3976
3977 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
3978 Moved from string.h to deprecated.h.
3979
3980 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
3981
3982 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
3983 SCM_I_MAKE_STRING_TAG, changed all uses.
3984 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
3985 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
3986 respectively. For a short time, the old names are still there as
3987 aliases. Not all uses have been changed yet, but the ones in
3988 strings.c have.
3989 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
3990 SCM_T_BITS_MAX.
3991 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
3992 scm_take_locale_string, scm_take_locale_stringn,
3993 scm_to_locale_string, scm_to_locale_stringn,
3994 scm_to_locale_stringbuf): New.
3995 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
3996 deprecated.[hc]. Implemented in terms of the new functions above.
3997 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
3998 scm_makfrom0str): Reimplemented in terms of the new functions from
3999 above. They will be discouraged shortly.
4000 (scm_substring): Do not use scm_mem2string.
4001 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
4002 to replace similar code from posix.c, simpos.c, and dynl.c.
4003 (scm_string_append): Use memcpy instead of explicit loop. Do not
4004 use register keyword. Use plain 'char' instead of 'unsigned
4005 char'.
4006
4007 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
4008 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
4009
4010 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
4011 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4012 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
4013 not as a pointer. Use scm_remember_upto_here_1 to protect it.
4014
4015 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
4016 string. This avoids a conversion round-trip.
4017
4018 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
4019 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4020 SCM_I_STRING_LENGTH, respectively.
4021 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
4022
4023 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
4024 of a string, call scm_display on the string itself.
4025
4026 * dynwind.c, dynwind.h (scm_frame_free): New.
4027
4028 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
4029 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
4030 Replaced uses of SCM_STRING_CHARS with proper uses of
4031 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
4032 Replaced scm_mem2string with scm_from_locale_string.
4033
4034 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
4035 Removed, replaced all uses with scm_i_allocate_string_pointers.
4036
4037 * load.h, load.c (scm_internal_parse_path): Removed.
4038 (scm_parse_path): Use scm_string_split to do the work.
4039 (scm_init_load_path): Use scm_parse_path instead of
4040 scm_internal_parse_path.
4041 (scm_search_path): Rewritten string handling part of the code in
4042 terms of scm_to_locale_stringbuf and so that it is thread safe.
4043
4044 * error.c (scm_error_scm): Throw directly instead of calling
4045 scm_error, this avoids the back and forth conversion of SUBR and
4046 MESSAGE and also plugs a memory leak.
4047 (scm_error): Call scm_error_scm.
4048
4049 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
4050 (display_header): Print FNAME when it is true, not
4051 merely when it is a string.
4052
4053 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
4054 unceremoniously. They were unused by Guile itself, and external
4055 use should stop immediately.
4056
4057
4058 2004-08-10 Marius Vollmer <mvo@zagadka.de>
4059
4060 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
4061 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
4062 deprecated versions installed in deprecated.h and deprecated.c.
4063 Changed all uses.
4064
4065 2004-08-06 Rob Browning <rlb@defaultvalue.org>
4066
4067 * net_db.c (scm_resolv_error): don't cause an exception while
4068 trying to throw an exception -- call scm_misc_error with correct
4069 arguments. The previous arguments needed a format escape that
4070 wasn't in any of the format strings.
4071
4072 2004-08-06 Kevin Ryde <user42@zip.com.au>
4073
4074 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
4075 so as not to depend on signedness of plain char. For byvect range
4076 check, throw out-of-range rather than wrong-type-arg.
4077
4078 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
4079 signed byte range checks by using scm_to_schar and scm_from_schar,
4080 don't want to depend on signedness of C char.
4081
4082 2004-08-05 Kevin Ryde <user42@zip.com.au>
4083
4084 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
4085 SCM_DEFER_INTS.
4086 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
4087 guaranteed if multiple threads compete to unlock.
4088 Update docstrings per doc/ref/api-scheduling.texi.
4089
4090 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
4091 stat on the filename, to be certain a file rename can't mean we get
4092 info on one filesystem object but open another. This fstat usage is
4093 similar to Emacs copy-file.
4094
4095 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
4096
4097 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
4098 SIGINT and SIGQUIT, since those values are ints.
4099
4100 2004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4101
4102 * num2integral.i.c, num2float.i.c: Removed.
4103 * Makefile.am (noinst_HEADERS): Updated.
4104
4105 * numbers.h. numbers.c (scm_make_ratio): Renamed to
4106 scm_i_make_ratio and made static, replaced uses with scm_divide.
4107 (scm_complex_p): New, export as "complex?" to Scheme.
4108 (scm_number_p): Export as "number?" to Scheme.
4109 (scm_is_complex, scm_is_number): New.
4110 (scm_c_make_rectangular, scm_c_make_polar): New.
4111 (scm_make_rectangular, scm_make_polar): Use above.
4112 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
4113 New.
4114 (scm_make_complex): Discouraged by moving to discouraged.h and
4115 discouraged.c. Replaced all uses with scm_c_make_rectangular.
4116
4117 * discouraged.h, discouraged.c, numbers.c, numbers.h
4118 (scm_is_rational): New.
4119 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
4120 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
4121 Removed prototypes.
4122 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
4123 Discouraged by moving to discouraged.h and discouraged.c.
4124 Replaced all uses with scm_from_double.
4125 (scm_num2float, scm_num2double): Discouraged by moving prototype
4126 to discouraged.h and rewriting in terms of scm_to_double.
4127 Replaced all uses with scm_to_double.
4128 (scm_to_double): Do not implement in terms of scm_num2dbl, use
4129 explicit code.
4130 (scm_from_double): Do not implement in terms of scm_make_real, use
4131 explicit code.
4132
4133 2004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4134
4135 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
4136
4137 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
4138 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
4139
4140 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
4141 Renamed to SCM_I_* in order to avoid collisions with the versions
4142 defined in deprecated.h.
4143
4144 * discouraged.h, discouraged.c: New files.
4145
4146 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
4147 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
4148 deprecated to being discouraged by moving to discouraged.h.
4149
4150 * numbers.h, numbers.c, discouraged.h, discouraged.c
4151 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
4152 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
4153 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
4154 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
4155 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
4156 scm_num2ulong_long): Discouraged by moving to discouraged.h and
4157 discouraged.c and reimplementing in terms of scm_from_* and
4158 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
4159 functions.
4160
4161 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
4162 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
4163 scm_i_size2big, scm_i_ptrdiff2big): Removed.
4164 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
4165 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
4166 explicit code.
4167
4168 2004-08-02 Kevin Ryde <user42@zip.com.au>
4169
4170 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
4171 and current usage and migration.
4172
4173 2004-07-31 Kevin Ryde <user42@zip.com.au>
4174
4175 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
4176 it's not thread safe.
4177 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
4178 advantage of this.
4179 * fports.c (scm_open_file): Use scm_strerror likewise.
4180 * filesys.c (scm_stat, scm_lstat): Ditto.
4181
4182 * filesys.c (scm_copy_file): Avoid fd leak when destination file
4183 cannot be opened.
4184
4185 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
4186 update, for thread safety.
4187 (gensym_counter): Move into scm_gensym which is its only user.
4188 (scm_init_symbols): No need to explicitly initialize gensym_counter.
4189
4190 2004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4191
4192 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
4193 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
4194 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
4195 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
4196 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
4197 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
4198 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
4199 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
4200 defined in terms of scm_to_signed_integer, etc, but in terms of
4201 scm_to_int8, etc.
4202
4203 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
4204
4205 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
4206 no longer used.
4207
4208 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
4209 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
4210
4211 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
4212 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
4213 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
4214 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
4215 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
4216 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
4217 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
4218
4219 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
4220 the functions below.
4221
4222 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
4223 conv-uinteger.i.c.
4224
4225 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
4226 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
4227 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
4228 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
4229 scm_from_uint64): Turned from macros into proper functions.
4230 (scm_to_signed_integer, scm_to_unsigned_integer,
4231 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
4232 conv-integer.i.c and conv-uinteger.i.c, as well.
4233
4234 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
4235 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
4236 the limits. Those are always defined.
4237
4238 2004-07-29 Kevin Ryde <user42@zip.com.au>
4239
4240 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
4241
4242 2004-07-28 Kevin Ryde <user42@zip.com.au>
4243
4244 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
4245 safety.
4246
4247 * unif.c (scm_array_set_x): For svect, use scm_num2short for
4248 consistency with other vector types and to get arg and func name into
4249 error message.
4250
4251 2004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4252
4253 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
4254 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
4255 scm_from_bool, respectively.
4256 (SCM_NINUMP): Added.
4257
4258 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
4259 deprecated.h. Replaced all uses with scm_is_eq.
4260
4261 2004-07-24 Kevin Ryde <user42@zip.com.au>
4262
4263 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
4264 * posix.c (scm_crypt): Use it to protect static data in crypt().
4265
4266 2004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4267
4268 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
4269 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
4270 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
4271 versions to deprecated.h and deprecated.c. Changed all uses to
4272 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
4273 scm_from_*, as appropriate.
4274
4275 * dynwind.c (scm_i_dowinds): Removed unused code that would call
4276 the unexisting scm_cross_dynwind_binding_scope for inums on the
4277 windlist.
4278
4279 2004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4280
4281 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
4282 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
4283 byte-wise address to a SCM integer. Changed all uses.
4284 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
4285 scm_to_ipv6 and added type and range checking, for converting from
4286 an IPv& byte-wise address to a SCM integer. Changed all uses.
4287 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
4288 is now done by scm_to_ipv6.
4289
4290 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
4291 not accept inexact integers.
4292
4293 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
4294 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
4295 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
4296 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
4297 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
4298 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
4299 fixnum/bignum distinction visible. Changed all uses to
4300 scm_to_size_t or similar.
4301
4302 2004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4303
4304 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
4305
4306 2004-07-10 Kevin Ryde <user42@zip.com.au>
4307
4308 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
4309 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
4310 such a size causes divide-by-zeros in scm_hasher.
4311
4312 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
4313 leak.
4314
4315 2004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4316
4317 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
4318 Rewritten using the same logic as scm_to_signed_integer and
4319 scm_to_unsigned_integer, respectively, which is better(tm). Also,
4320 use CHAR_BIT instead of hardcoding 8.
4321 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
4322 SCM_I_LLONG_MIN etc. instead.
4323
4324 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
4325 SCM_I_MAKINUM and changed all uses.
4326 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
4327
4328 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
4329 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
4330 them by assuming twos-complement.
4331
4332 2004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4333
4334 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
4335 configure now produces.
4336 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
4337 definitions, giving the limits of the integer types defined by
4338 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
4339 LLONG_MIN or LONG_LONG_MIN is hard to get at.
4340
4341 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
4342 SHORT_MIN.
4343 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
4344 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
4345 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
4346 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
4347 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
4348 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
4349 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
4350 scm_from_uintmax): New.
4351
4352 2004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4353
4354 * tags.h (scm_is_eq): New.
4355
4356 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
4357 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
4358 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
4359 scm_from_bool, and scm_is_bool, respectively.
4360
4361 * boolean.h (scm_is_bool): Fix bug in prototype.
4362 (scm_from_bool): The argument is "x" not "f", stupid.
4363
4364 * boolean.c (scm_is_bool): Fix typo.
4365
4366 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
4367 scm_is_unsigned_integer, scm_to_signed_integer,
4368 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
4369 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
4370 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
4371 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
4372 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
4373 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
4374 New.
4375
4376 2004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4377
4378 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
4379 scm_to_bool): New.
4380
4381 2004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4382
4383 * backtrace.c (display_expression, display_frame): Call
4384 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
4385 single memoized expression.
4386
4387 * debug.c (memoized_print): Don't try to unmemoize the memoized
4388 object, since we can't know whether it holds a single expression
4389 or a body.
4390
4391 (scm_mem_to_proc): Removed check for lambda expression, since it
4392 was moot anyway. Whoever uses these functions for debugging
4393 purposes should know what they do: Creating invalid memoized code
4394 will cause crashes, independent of whether this check is present
4395 or not.
4396
4397 (scm_proc_to_mem): Take the closure's code as it is and don't
4398 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
4399 memoized code should not be modified.
4400
4401 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
4402 scm_unmemoize from public use, but made scm_i_unmemoize_expr
4403 available as a guile internal function instead. However,
4404 scm_i_unmemoize_expr will only work on memoized objects that hold
4405 a single memoized expression. It won't work with bodies.
4406
4407 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
4408 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
4409 i. e. a list of expressions.
4410
4411 * eval.c (unmemoize_exprs): Drop internal body markers from the
4412 output during unmemoization.
4413
4414 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
4415 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
4416 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
4417 as guile internal functions instead. scm_i_unmemoize_expr will
4418 only work on a single memoized expression, while
4419 scm_i_unmemocopy_body will only work on bodies.
4420
4421 2004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4422
4423 * eval.c (unmemoize_exprs): Handle semi-memoized code.
4424
4425 (scm_cons_source, scm_primitive_eval): Prefer higher level
4426 predicate SCM_FALSEP over SCM_IMP.
4427
4428 2004-06-15 Rob Browning <rlb@defaultvalue.org>
4429
4430 * script.c (scm_shell_usage): minor phrasing change.
4431
4432 * gc_os_dep.c: update ifdefery for macosx.
4433 (scm_get_stack_base): separate result initialization from
4434 declaration to slience warnings with macosx and hp-ux using gcc
4435 3.3. Thanks to Andreas Vögele.
4436
4437 2004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
4438
4439 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
4440
4441 2004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4442
4443 * list.[ch] (scm_i_finite_list_copy): New internal function to
4444 copy lists that are known to be finite (though not necessarily
4445 proper).
4446
4447 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
4448 a closure's argument list like an expression of a body.
4449
4450 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
4451 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
4452 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
4453 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
4454 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
4455 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
4456 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
4457 unmemoize_builtin_macro): New static functions and symbols.
4458
4459 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
4460 now has a slightly different meaning: The memoized form that is
4461 receives as its argument is now interpreted as a sequence of
4462 expressions from a body.
4463
4464 (unmemocar, scm_unmemocar): Since the whole functionality of
4465 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4466 has its old content back and is deprecated, while unmemocar has
4467 been removed.
4468
4469 (SCM_BIT7): Removed.
4470
4471 (CEVAL): For unmemoizing a single expression, call
4472 unmemoize_expression instead of scm_unmemocopy, which now expects
4473 a sequence of body expressions. Eliminated unnecessary empty
4474 environment frame when executing let* forms. Eliminated
4475 unmemoization step from evaluator.
4476
4477 2004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4478
4479 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4480 macroexp and made static. Added new version of scm_macroexp that
4481 emits a deprecation warning and then calls macroexp.
4482 (scm_m_undefine): Issue deprecation warning.
4483
4484 2004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4485
4486 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4487 Modified to make set! work on symbols that represent syntactic
4488 keywords.
4489
4490 2004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4491
4492 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4493 compound expression as lvalue errors.
4494
4495 2004-05-24 Marius Vollmer <mvo@zagadka.de>
4496
4497 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4498 WINDER_DATA to a SCM.
4499
4500 2004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4501
4502 * goops.c (compute_getters_n_setters, create_standard_classes,
4503 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4504 lambda expression rather than creating them with scm_closure.
4505
4506 2004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4507
4508 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4509 misplaced syntactic keywords. This will not work unless guile's
4510 defmacro feature is deprecated.
4511
4512 (scm_m_case): Fixed a bug that caused the list of labels to grow
4513 with every case form.
4514
4515 2004-05-19 Kevin Ryde <user42@zip.com.au>
4516
4517 * numbers.c (scm_round_number): For inum and big, just return x. For
4518 real, use scm_round for 2^54-1 etc problems covered there.
4519
4520 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4521 doesn't provide trunc. This was for when `truncate' was done as a
4522 scm_tc7_dsubr, no longer required.
4523
4524 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4525 to stack marking call, two parameters and no cast on t->base.
4526
4527 2004-05-18 Marius Vollmer <mvo@zagadka.de>
4528
4529 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4530 processed hashtables back into the weak_hashtables list. Thanks
4531 to Bill Schottstaedt!
4532
4533 2004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4534
4535 * eval.c (unmemoize_quote): New static function.
4536
4537 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4538 representation of 'quote' and '@slot-ref' to an improper list.
4539 This reduces execution time, the number of cells used to hold the
4540 memoized code, and thus also reduces garbage collection time.
4541
4542 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4543
4544 (SCM_CEVAL): Changed macro handling to also work with macros that
4545 return improper lists. Added an assertion, that the code returned
4546 by a macro transformer will not lead to cycles in the memoized
4547 code.
4548
4549 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4550
4551 No functional change, just rearrangements of functions within the
4552 file.
4553
4554 * eval.c (scm_ilookup, scm_unbound_variable_key,
4555 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4556 the definitions used for execution, since that's where they will
4557 belong to later.
4558
4559 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4560
4561 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4562 throughout guile, has not been part of an official release yet,
4563 and the concept of sloppy predicates has never been a good idea.
4564
4565 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4566 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4567 Simplified.
4568
4569 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4570
4571 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4572 to make explicit what happens.
4573
4574 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4575
4576 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4577 explicit what happens.
4578
4579 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4580 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4581
4582 2004-05-11 Marius Vollmer <mvo@zagadka.de>
4583
4584 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4585 is indeed a procedure when it isn't a number.
4586
4587 2004-05-10 Marius Vollmer <mvo@zagadka.de>
4588
4589 Convert floating point numbers into strings with an arbitrary
4590 radix. Thanks to Richard Todd!
4591
4592 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4593 fit.
4594 (fx): Removed.
4595 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4596 number_chars): New, to support variable radices.
4597 (idbl2str): Use above instead of the old base-10 only tables.
4598 (iflo2str): Pass on new RADIX argument to idbl2str.
4599 (scm_number_to_string): Pass radix to iflo2str.
4600 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4601 iflo2str.
4602 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4603 possible radices.
4604
4605 2004-05-10 Kevin Ryde <user42@zip.com.au>
4606
4607 * numbers.c (scm_logbit_p): Correction to test above the end of an
4608 inum. Reported by Jan Konecny.
4609
4610 2004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4611
4612 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4613 scm_t_bits. Updated all users.
4614 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4615 duplicating the code.
4616 (SCM_CELL_OBJECT_LOC): New.
4617 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4618 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4619
4620 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4621 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4622 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4623 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4624 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4625 SCM_SMOB_OBJECT_3_LOC): New.
4626 * smob.c (scm_i_set_smob_flags): New function.
4627
4628 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4629 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4630 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4631 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4632 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4633 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4634
4635 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4636 taking the address of SCM_CELL_WORD_1, the latter being no longer
4637 an lvalue.
4638
4639 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4640 of casting SCM_CELL_WORD_LOC.
4641
4642 2004-05-02 Kevin Ryde <user42@zip.com.au>
4643
4644 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
4645 --disable-deprecated. Reported by Andreas Vögele.
4646
4647 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
4648 particular on HP-UX). Reported by Andreas Vögele.
4649
4650 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4651 code has support for. Fixes building with AIX cc, which is ansi but
4652 doesn't define __STDC__. Reported by Keith Crane.
4653 (var_start): Remove macro, this variation no longer required.
4654 (scm_list_n): Use va_start directly.
4655
4656 2004-05-01 Kevin Ryde <user42@zip.com.au>
4657
4658 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
4659 is now gone. Reported by Andreas Vögele.
4660
4661 2004-04-28 Kevin Ryde <user42@zip.com.au>
4662
4663 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4664 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4665 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
4666 subscript. Reported by Andreas Vögele.
4667 Also cast through unsigned char to avoid passing negatives to those
4668 macros if input contains 8-bit values.
4669
4670 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4671 corrections to range check for signed numbers. Remove
4672 scm_remember_upto_here_1(num) from these checks, since num is used
4673 subsequently anyway.
4674
4675 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4676 avoid warning from gcc 3.4. Reported by Hyperdivision.
4677
4678 * numbers.c (scm_bit_extract): Use min instead of MIN.
4679 (MIN): Remove, this conflicts with similar macro defined by limits.h
4680 on HP-UX. Reported by Andreas Vögele.
4681
4682 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
4683 particular on HP-UX). Reported by Andreas Vögele.
4684
4685 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
4686 Reported by Andreas Vögele.
4687
4688 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4689 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
4690 by Andreas Vögele.
4691
4692 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4693
4694 * eval.c (s_macro_keyword): New static identifier.
4695
4696 (scm_m_define): Change order to first create binding and
4697 evaluating the expression afterwards.
4698
4699 (scm_m_set_x): Memoize complete set! expression. Only leave
4700 symbols if no binding exists at memoization time. Throw error if
4701 assigning to a syntactic keyword.
4702
4703 (lazy_memoize_variable): New function.
4704
4705 (CEVAL): When execution set!, perform lazy memoization if
4706 unmemoized symbol is detected.
4707
4708 * modules.c (module_variable): Return variables with unbound
4709 value.
4710
4711 * tags.h: Fix comment.
4712
4713 2004-04-25 Kevin Ryde <user42@zip.com.au>
4714
4715 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4716 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4717 in 8-bit locales, and ensures consistency with char-upper-case? and
4718 char-lower-case? which already use ctype.h.
4719 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4720 Remove.
4721 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4722
4723 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4724 call. Reported by Hyperdivision.
4725
4726 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4727 Reported by Hyperdivision.
4728
4729 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4730 Hyperdivision.
4731
4732 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4733
4734 Hide the implementation of ilocs and isyms in eval.c.
4735
4736 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4737 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4738 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4739 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4740 eval.h to eval.c.
4741
4742 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4743 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4744 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4745 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4746 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4747 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4748 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4749 renamed to ISYMNUM.
4750
4751 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4752 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4753 Extracted printing of ilocs and isyms to guile internal functions
4754 scm_i_print_iloc, scm_i_print_isym of eval.c.
4755
4756 2004-04-22 Kevin Ryde <user42@zip.com.au>
4757
4758 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4759
4760 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4761 rounding in x+0.5 when x is a big value already an integer. In
4762 certain hardware rounding cases x+0.5 can give an adjacent integer,
4763 leading to that as the result, when we really just wanted x itself.
4764
4765 2004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4766
4767 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4768
4769 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4770 added const qualifiers, cast intentionally unused expressions to
4771 void for emphasis, improved comment.
4772
4773 2004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4774
4775 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4776 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4777 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4778 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4779 Defined the tc8-tag for flags to be 0x04, which will mean that
4780 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4781 to the reduced number of bits and the simpler bit pattern for
4782 SCM_BOOL_F, certain machines may be able to use more efficient
4783 processor instructions to deal with SCM_BOOL_F.
4784
4785 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4786 never been defined in a released version, thus no need to
4787 deprecate them.
4788
4789 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4790 instead of tc9 tags.
4791
4792 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4793 of tc9 tags.
4794
4795 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4796 could have used this definition.
4797
4798 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4799 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4800 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4801 as isyms, as special isyms don't exist any more.
4802
4803 2004-04-18 Kevin Ryde <user42@zip.com.au>
4804
4805 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4806 safety.
4807
4808 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4809 explicit swapping code.
4810
4811 2004-04-15 Kevin Ryde <user42@zip.com.au>
4812
4813 * cpp_sig_symbols.in: Add SIGSYS.
4814
4815 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4816 recursion.
4817
4818 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4819 frac/big and frac/frac, use scm_less_p for exact comparison.
4820
4821 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4822 with big/inum.
4823
4824 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
4825
4826 2004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
4827
4828 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
4829
4830 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
4831 scm_c_{up,down}case.
4832 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
4833 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
4834
4835 2004-04-06 Kevin Ryde <user42@zip.com.au>
4836
4837 * numbers.c (scm_ash): Remove stray "}" in docstring.
4838
4839 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
4840 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
4841 calling mpz_cmp_ui in most cases.
4842
4843 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
4844 for big == abs(most-negative-fixnum) special case.
4845 (abs_most_negative_fixnum): Remove, no longer used.
4846
4847 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
4848 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
4849 calling (sigaction NSIG).
4850
4851 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
4852 and fork error cases to do this.
4853
4854 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4855
4856 * eval.c (CEVAL): Don't distinguish between short and long
4857 instructions when dispatching - just always dispatch on the
4858 instruction code, which is common for short and long instructions.
4859 Further, removed unnecessary goto statements and added comment.
4860
4861 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4862
4863 * eval.c (scm_unmemocopy): Don't distinguish between short and
4864 long instructions when dispatching - just always dispatch on the
4865 instruction code, which is common for short and long instructions.
4866 Further, removed unnecessary goto statements, fixed indentation
4867 and replaced SCM_IMP predicates by SCM_NULLP.
4868
4869 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4870
4871 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
4872 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
4873 'checkmacro'.
4874
4875 2004-03-31 Kevin Ryde <user42@zip.com.au>
4876
4877 * simpos.c: Include <signal.h> for SIG_IGN and friends.
4878
4879 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4880
4881 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
4882 SCM_DEBUGGINGP:
4883
4884 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
4885 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
4886 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
4887 single interface that also matches the naming conventions.
4888 Probably scm_debug_mode_p should be part of the private interface
4889 anyway.
4890
4891 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
4892 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
4893 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
4894 to scm_debug_mode_p.
4895
4896
4897 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
4898
4899 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
4900 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
4901 from debug.h to eval.h.
4902
4903 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
4904 more, just leave it with setting scm_debug_mode_p, which is
4905 equivalent for practical purposes.
4906
4907 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
4908 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
4909
4910 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
4911
4912 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
4913 static and renamed it to ceval throughout. Provide a new exported
4914 but deprecated function scm_ceval as a wrapper for backwards
4915 compatibility. The same is done for the deval/scm_deval pair of
4916 functions.
4917
4918 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
4919 throughout. Defined CEVAL to ceval or deval, based on compilation
4920 phase.
4921
4922 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
4923 to ceval and deval instead of calling *scm_ceval_ptr.
4924
4925 * eval.c (dispatching_eval): New deprecated static function.
4926
4927 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
4928 to emulate its old behaviour as closely as possible.
4929
4930
4931 Change the evaluator such that only expressions for which pair? is
4932 true are passed to CEVAL, and such that all other expressions are
4933 evaluated outside of CEVAL:
4934
4935 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
4936 expression that is assumed to be memoized already. All but
4937 expressions of the form '(<form> <form> ...)' are evaluated inline
4938 without calling an evaluator.
4939
4940 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
4941 expressions of the form '(<form> <form> ...)' inline without
4942 calling an evaluator.
4943
4944 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
4945 the special case of unmemoized symbols passed on the top level.
4946
4947 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
4948 is known that the expression passed to CEVAL is of the form
4949 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
4950 now it is known that the input expression of CEVAL is a pair.
4951
4952 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4953
4954 * eval.c (is_self_quoting_p): New static function.
4955
4956 (scm_m_quote): Use is_self_quoting_p.
4957
4958 (copy_tree): Corrected typo in comment.
4959
4960 2004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
4961
4962 * eval.c (s_scm_copy_tree): idem.
4963
4964 * list.c (s_scm_filter): remove "pointer" from doc string.
4965
4966 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
4967
4968 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
4969
4970 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
4971 (display_frame): idem.
4972 (display_backtrace_file_and_line): idem.
4973
4974 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
4975 arguments.
4976
4977 2004-03-26 Kevin Ryde <user42@zip.com.au>
4978
4979 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
4980
4981 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
4982 big==0 since that never occurs.
4983
4984 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
4985 scm_modular_expt, matching scheme level name `modulo-expt'.
4986
4987 * numbers.c (scm_modular_expt): Return a negative remainder for a
4988 negative divisor, the same as `modulo' does.
4989
4990 2004-03-26 Eric Hanchrow <offby1@blarg.net>
4991
4992 * numbers.c, numbers.h (scm_modular_expt): New function.
4993
4994 2004-03-25 Kevin Ryde <user42@zip.com.au>
4995
4996 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
4997 return inexact as required by r5rs.
4998
4999 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5000
5001 * eval.c: Separated some definitions relevant for execution from
5002 the memoization part of the file.
5003
5004 (copy_tree): New static function
5005
5006 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
5007 structures are detected now and will lead to an exception instead
5008 of forcing guile to run in an endless loop, using up all the
5009 system's memory. Second, arrays in the cdr of an improper list
5010 are now copied. See the new test cases in eval.test.
5011
5012 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5013
5014 * posix.c (scm_gethostname): Make sure len is initialised before
5015 it is used. Restructured to (hopefully) represent possible
5016 configurations more clearly in the code. Added unwind handler.
5017
5018 2004-03-23 Kevin Ryde <user42@zip.com.au>
5019
5020 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
5021 MAXHOSTNAMELEN when available.
5022
5023 2004-03-21 Marius Vollmer <mvo@zagadka.de>
5024
5025 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
5026 terminator. Rewritten the logic as a state machine, I must have
5027 been doing too much VHDL lately...
5028
5029 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
5030 themselves. Thanks to Han-Wen Nienhuys!
5031
5032 * list.c: Changed docstrings so that they no longer talk about
5033 returning 'pointers' to something.
5034
5035 2004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5036
5037 * gc.c: remove set_debug_cell_accesses! when
5038 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
5039 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
5040 debugging conditionally.
5041
5042 2004-03-21 Kevin Ryde <user42@zip.com.au>
5043
5044 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
5045
5046 2004-03-20 Kevin Ryde <user42@zip.com.au>
5047
5048 * posix.c (scm_gethostname): Preserve errno across free() call.
5049
5050 2004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
5051
5052 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
5053 free cells.
5054
5055 2004-03-14 Kevin Ryde <user42@zip.com.au>
5056
5057 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
5058 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
5059
5060 2004-03-07 Kevin Ryde <user42@zip.com.au>
5061
5062 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
5063 than "GMT" always.
5064 (filltime): Make zname parameter "const".
5065
5066 2004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
5067
5068 * threads.c, threads.h (scm_c_scm2thread): New function.
5069
5070 2004-02-29 Kevin Ryde <user42@zip.com.au>
5071
5072 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
5073 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
5074 particular don't assume "defined (__alpha__) && ! defined (linux)"
5075 means OSF. Remove "SCO" code, which was not really SCO specific and
5076 which John W. Eaton advises should be long past being needed.
5077
5078 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
5079 error throw.
5080
5081 2004-02-24 Kevin Ryde <user42@zip.com.au>
5082
5083 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
5084
5085 2004-02-22 Kevin Ryde <user42@zip.com.au>
5086
5087 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
5088 complex, same as for two args. (Handle only inum, big, real, frac).
5089
5090 2004-02-21 Kevin Ryde <user42@zip.com.au>
5091
5092 * posix.c (scm_crypt): Use new HAVE_CRYPT.
5093 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
5094 Reported by Andreas Voegele.
5095
5096 2004-02-20 Neil Jerram <neil@ossau.uklinux.net>
5097
5098 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
5099 validation.
5100
5101 * read.c (scm_lreadparen): Removed.
5102 (scm_lreadparen1): Renamed scm_i_lreadparen.
5103
5104 2004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5105
5106 * list.c (scm_list_n): validate non-immediate arguments;
5107 this will catch forgotten a SCM_UNDEFINED.
5108
5109 2004-02-18 Marius Vollmer <mvo@zagadka.de>
5110
5111 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
5112 Thanks to Bill Schottstaedt!
5113
5114 * socket.h (scm_gethost): Removed prototype it is already in
5115 "net_db.h". Thanks to Bill Schottstaedt!
5116
5117 2004-02-18 Kevin Ryde <user42@zip.com.au>
5118
5119 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
5120 order parameter to mpz_import, in fact with just one word there's no
5121 order to worry about at all.
5122
5123 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
5124 and frac==complex, make an exact comparison rather than converting
5125 with fraction2double.
5126
5127 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
5128 shared library, since environ is not directly available there.
5129
5130 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
5131 standard.
5132
5133 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
5134 errno EINVAL in case localtime and gmtime don't set it.
5135 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
5136 SCM_SYSERROR, since mktime and strptime generally don't set errno.
5137
5138 2004-02-16 Kevin Ryde <kevin@swox.se>
5139
5140 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
5141 which were permitted in the past for these.
5142
5143 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
5144 previous change to numbers.c.
5145
5146 * script.c (scm_shell_usage): Print bug-guile email address, as per
5147 GNU standard. Reported by Han-Wen Nienhuys.
5148
5149 2004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5150
5151 * unif.c (scm_make_uve): Removed local variable and simplified
5152 code in order to avoid compiler used uninitialized warnings.
5153
5154 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
5155 scm_hash_map.
5156 (scm_hash_fold): Use scm_call_3 directly in the call to
5157 scm_internal_hash_fold instead of going via fold_proc (which is
5158 now removed).
5159 (scm_hash_for_each): Use a trampoline +
5160 scm_internal_hash_for_each_handle.
5161 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
5162 functions.
5163
5164 2004-02-12 Kevin Ryde <user42@zip.com.au>
5165
5166 * ports.c (scm_port_line): In docstring, note first line is 0.
5167 (scm_set_port_line_x): In docstring, note first line is 0.
5168 (scm_port_column): In docstring, there's no default to current input
5169 port, and remove shared port-line @defun.
5170 (scm_set_port_column_x): In docstring, there's no default to current
5171 input port, note first column is 0, remove shared set-port-line!
5172 @defun.
5173
5174 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
5175 convert args the same way that array-set! does.
5176
5177 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
5178 for dvect.
5179 (scm_array_p): Add missing "break"s in switch, fix llvect test look
5180 for "l" not "s", fix dvect to be false for singp(prot) since such a
5181 value is for fvect.
5182 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
5183 (exactly_one_third): New variable.
5184 (scm_init_unif): Initialize it.
5185
5186 2004-02-10 Neil Jerram <neil@ossau.uklinux.net>
5187
5188 * read.c (scm_read_opts): Change `escaped-parens' to
5189 `elisp-strings'.
5190
5191 2004-02-08 Neil Jerram <neil@ossau.uklinux.net>
5192
5193 * read.c (scm_read_opts): New opts `elisp-vectors' and
5194 `escaped-parens'.
5195 (s_vector): New.
5196 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
5197 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
5198 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
5199 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
5200 `escaped-parens' option set.
5201 (scm_read_token): If elisp vector syntax active, disallow [ and ]
5202 in tokens.
5203 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
5204 (scm_lreadparen1): New.
5205
5206 * read.h: Remove conditionally compiled last arg to
5207 scm_lreadparen.
5208 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
5209
5210 2004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
5211
5212 * eval.c (m_expand_body): remove stray variable new_body.
5213
5214 2004-01-22 Marius Vollmer <mvo@zagadka.de>
5215
5216 * eval.c (m_expand_body): Rewrite the expression in place (by
5217 overwriting FORMS) also when a letrec is constructed, not only
5218 when no definitions are found. Do not return rewritten expression
5219 to emphasize the in-place rewriting. Changed all users.
5220
5221 2004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
5222
5223 * gc.c: add protected_object_count, a number that is dumped from
5224 gc_stats()
5225
5226 2004-01-11 Marius Vollmer <mvo@zagadka.de>
5227
5228 * dynwind.h, dynwind.c (scm_frame_unwind,
5229 scm_frame_unwind_handler): Renamed and changed all uses.
5230 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
5231
5232 2004-01-11 Kevin Ryde <user42@zip.com.au>
5233
5234 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
5235 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
5236 changes made to scheme-compound.texi.
5237
5238 2004-01-10 Marius Vollmer <mvo@zagadka.de>
5239
5240 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
5241 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
5242
5243 * guile-snarf.in: Use mkdir to create a unique temporary directory
5244 that we can safely use. Thanks to Stefan Nordhausen!
5245
5246 2004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5247
5248 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
5249 argument since it is always zero now. Changed all callers.
5250 Removed code for handling fluids.
5251
5252 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
5253 the wind chain explicitely. Use scm_c_with_fluid for the common
5254 case of only one fluid.
5255 (scm_with_fluid): New.
5256 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
5257
5258 * fluids.h, fluids.c (scm_frame_fluid): New.
5259 (scm_with_fluid): New.
5260 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
5261
5262 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
5263 do the unwinding directly. It is simple enough.
5264
5265 * dynwind.h, dynwind.c: Did the following renamings:
5266 scm_begin_frame -> scm_frame_begin,
5267 scm_end_frame -> scm_frame_end,
5268 scm_on_unwind -> scm_frame_unwind,
5269 scm_on_rewind -> scm_frame_rewind,
5270 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
5271 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
5272 Changed all uses.
5273
5274 * aync.h, async.c: Did the follwing renamings:
5275 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
5276 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
5277 Changed all uses.
5278
5279 * ports.h, ports.c: Did the follwing renamings:
5280 scm_with_current_input_port -> scm_frame_current_input_port,
5281 scm_with_current_output_port -> scm_frame_current_output_port,
5282 scm_with_current_error_port -> scm_frame_current_error_port.
5283 Changed all uses.
5284
5285 2004-01-07 Kevin Ryde <user42@zip.com.au>
5286
5287 * numbers.c (s_bignum): Remove, not used since gmp bignums.
5288 Reported by Richard Todd.
5289
5290 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
5291 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
5292
5293 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
5294 traversing the args list, fixes segv if an improper list is given.
5295 Reported by Rouben Rostamian.
5296
5297 2004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5298
5299 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
5300 swap_data on stack, use a 'malloc obj'.
5301
5302 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
5303 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
5304 scm_i_... since they are internal. Changed all uses.
5305
5306 * dynwind.c (frame_print): Removed, use the default printer.
5307 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
5308 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
5309 to protect SCM values.
5310
5311 * dynwind.h (SCM_F_WIND_EXPLICITELY,
5312 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
5313 Changed all uses.
5314 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
5315
5316 2004-01-05 Marius Vollmer <mvo@zagadka.de>
5317
5318 * ports.h, ports.c (scm_with_current_input_port,
5319 scm_with_current_output_port, scm_with_current_error_port): New.
5320
5321 * async.h, async.c (scm_with_blocked_asyncs,
5322 scm_with_unblocked_asyncs): New.
5323
5324 2004-01-03 Marius Vollmer <mvo@zagadka.de>
5325
5326 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
5327 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
5328 New.
5329 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
5330 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
5331 function when the outermost wind point has been reached. The
5332 latter is used to copy a continuation stack at the right time.
5333 scm_dowinds remains available.
5334 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
5335 tc16_guard, guards_print): Removed.
5336 (scm_internal_dynamic_wind): Reimplemented using frames.
5337
5338 * continuations.c (copy_stack): New, do only the stack copying
5339 part of copy_stack_and_call.
5340 (copy_stack_and_call): Copy the stack after unwinding and before
5341 rewinding.
5342 (scm_dynthrow): Do not call scm_dowinds, this is now done by
5343 copy_stack_and_call.
5344
5345 2004-01-04 Kevin Ryde <user42@zip.com.au>
5346
5347 * numbers.c (scm_less_p): Don't convert frac to float for compares,
5348 can give bad results due to rounding.
5349
5350 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
5351 setzone/restorezone protection for DOS.
5352
5353 2003-12-26 Marius Vollmer <mvo@zagadka.de>
5354
5355 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
5356 and scm_t_uintmax to be defined in scmconfig.h
5357
5358 2003-12-03 Kevin Ryde <user42@zip.com.au>
5359
5360 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
5361
5362 * numbers.c (scm_make_ratio): Check for numerator equal to
5363 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
5364 giving integer -1.
5365
5366 * numbers.c (scm_real_part): Return fraction unchanged rather than
5367 converting to flonum.
5368
5369 2003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5370
5371 * modules.c (module_variable): Fixed (and thus simplified) the
5372 definition of SCM_BOUND_THING_P to reflect the fact that since
5373 after the 1.4 series of guile, obarrays only hold variable
5374 objects.
5375
5376 2003-11-30 Marius Vollmer <mvo@zagadka.de>
5377
5378 * numbers.c (scm_logand): It's "#b...", not "#\b...".
5379
5380 From Paul Jarc:
5381
5382 * read.c (scm_lreadr): Signal an error for invalid escape
5383 sequences in strings. Code cleanups too.
5384
5385 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
5386 writing control characters in strings.
5387
5388 2003-11-21 Marius Vollmer <mvo@zagadka.de>
5389
5390 * ports.c (scm_drain_input): Bug fix: only access the port after
5391 checking that it indeed is one.
5392
5393 2003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5394
5395 * eval.c (s_bad_define): New static identifier.
5396
5397 (m_body): Fixed comment.
5398
5399 (scm_m_define): Don't generate memoized code for definitions that
5400 are not on the top level. As a consequence, no memoized code at
5401 all is generated for definitions any more: Top level definitions
5402 are executed immediately during memoization and internal
5403 definitions are handled separately in m_expand_body.
5404
5405 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
5406 definitions. Consequently, there is no unmemoizing code any more
5407 that might modify the environment. Thus, the old scm_unmemocopy
5408 is removed and the old unmemocopy is renamed to scm_unmemocopy.
5409
5410 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
5411 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
5412 over SCM_NIMP in places, where the argument is known to be part of
5413 a proper list.
5414
5415 2003-11-21 Kevin Ryde <user42@zip.com.au>
5416
5417 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
5418 for bignums.
5419
5420 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
5421 to share some shifting.
5422
5423 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
5424 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
5425 since gc does this.
5426
5427 2003-11-19 Marius Vollmer <mvo@zagadka.de>
5428
5429 * numbers.c (scm_make_ratio): Rewritten to have a simpler
5430 structure. Previously, not all cases with a negative denominator
5431 were covered.
5432
5433 * numbers.c (mem2decimal_from_point): use scm_divide instead of
5434 scm_divide2real when forming the fractional part. This allows
5435 "#e1.2" to yield 6/5.
5436
5437 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
5438 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
5439 fractions were equal to each other regardless of value. Ooops.
5440
5441 * numbers.c (scm_rationalize): Return an inexact result when given
5442 inexact arguments.
5443
5444 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
5445 non-numbers.
5446
5447 2003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5448
5449 Support for exact fractions from Bill Schottstaedt! Thanks!
5450
5451 * print.c (scm_iprin1): Handle fractions.
5452
5453 * objects.h (scm_class_fraction): New.
5454 * objects.c (scm_class_fraction): New.
5455 (scm_class_of): Handle fractions.
5456
5457 * hash.c (scm_hasher): Handle fractions.
5458
5459 * numbers.c: New code for handling fraction all over the place.
5460 (scm_odd_p, scm_even_p): Handle inexact integers.
5461 (scm_rational_p): New function, same as scm_real_p.
5462 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
5463 New exact functions that replace the inexact 'dsubr'
5464 implementations.
5465 (scm_numerator, scm_denominator): New.
5466
5467 * numbers.h (SCM_NUMP): Recognize fractions.
5468 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5469 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5470 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5471 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5472 SCM_FRACTION_REDUCED): New.
5473 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5474 New prototypes.
5475 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5476 scm_rational_p): New prototypes.
5477 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5478 scm_i_print_fraction): New prototypes.
5479
5480 * goops.c (create_standard_classes): Create "<fraction>" class.
5481
5482 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5483
5484 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5485 case in the switch, but do nothing for now.
5486
5487 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5488 to doubles when calling 'dsubr' functions.
5489
5490 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5491
5492 2003-11-18 Rob Browning <rlb@defaultvalue.org>
5493
5494 * gen-scmconfig.c (main): remove public definition of
5495 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5496 direct typedef of long_long and ulong_long inside deprecated block
5497 when appropriate.
5498
5499 * deprecated.h: move long_long and ulong_long definitions to
5500 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5501 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5502
5503 2003-11-17 Marius Vollmer <mvo@zagadka.de>
5504
5505 * hash.c (scm_string_hash): New hashing algorithm that takes the
5506 complete string into account.
5507
5508 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5509 is a list. This allows (@ ...) to work with set!.
5510 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5511 SCM_ASSYNT.
5512
5513 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5514 the "-e" option instead of scm_str2symbol. This allows things
5515 like (@ ...) to be specified for the entry point.
5516
5517 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5518
5519 * eval.c (scm_m_letstar): Create memoized code in place to
5520 minimize consing.
5521
5522 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5523
5524 * eval.c (s_splicing): Commented and reformulated.
5525
5526 (lookup_global_symbol, lookup_symbol): New static functions.
5527
5528 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5529
5530 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5531 creating a temporary pair for scm_lookupcar.
5532
5533 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5534 created deprecated wrapper function scm_unmemocar.
5535
5536 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5537 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5538 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5539 undefineds, sym_three_question_marks): Moved around without
5540 modifications.
5541
5542 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5543
5544 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5545
5546 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5547 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5548 No further modifications.
5549
5550 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5551
5552 * eval.c (s_mixed_body_forms): New static identifier.
5553
5554 (canonicalize_define, scm_m_define): The check for a bad
5555 expression is performed in canonicalize_define now.
5556
5557 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5558 static helper functions for m_expand_body.
5559
5560 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5561 expand user defined macros. Fixed handling of the definition/
5562 expression boundary. Fixed handling of definitions grouped with
5563 'begin. Use canonicalize_define to expand definitions.
5564
5565 2003-11-13 Marius Vollmer <mvo@zagadka.de>
5566
5567 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5568 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5569
5570 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5571 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5572 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5573 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5574 New macros from Paul Jarc. Thanks!
5575
5576 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5577 return NULL when the machine type is unknown. Previously,
5578 gc_os_dep.c would refuse to compile.
5579
5580 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5581
5582 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5583 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5584 scm_m_body to m_body.
5585
5586 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5587
5588 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5589 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5590 scm_m_expand_body to m_expand_body and made it static. Added
5591 deprecated wrapper scm_m_expand_body.
5592
5593 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5594 of scm_m_expand_body.
5595
5596 2003-11-09 Kevin Ryde <user42@zip.com.au>
5597
5598 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5599 argument. Reported by Mike Gran.
5600
5601 2003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5602
5603 * eval.c (s_missing_body_expression): New static identifier.
5604
5605 (s_body): Removed.
5606
5607 (scm_m_expand_body): Fixed core dump when passing a body with
5608 defines, but without expressions (see additions to syntax.test).
5609 Use ASSERT_SYNTAX to signal syntax errors.
5610
5611 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5612
5613 * eval.c (canonicalize_define): New static helper function.
5614
5615 (memoize_define, canonicalize_define): Extract handling of
5616 function currying to canonicalize_define.
5617
5618 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5619
5620 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5621 Make sure that error checking in debug mode is not worse than in
5622 standard mode.
5623
5624 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5625
5626 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5627 handled in scm_m_body any more, but rather in scm_m_lambda.
5628
5629 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5630 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5631 calling functions of scm_m_body.
5632
5633 (scm_m_lambda): Avoid unnecessary consing when creating the
5634 memoized code.
5635
5636 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5637
5638 * eval.c (s_expression): Added comment.
5639
5640 (s_empty_combination, error_unbound_variable): New static
5641 identifiers.
5642
5643 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5644 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5645 signal syntax errors.
5646
5647 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5648 scheme objects.
5649
5650 2003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5651
5652 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5653 Grouped together with unmemocopy, without modifications.
5654
5655 (build_binding_list, unmemocopy): Renamed names of list arguments
5656 and variables to reflect the actual order of the list elements.
5657
5658 2003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5659
5660 * eval.c (s_defun): New static identifier.
5661
5662 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5663 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5664 when creating the memoized code.
5665
5666 2003-10-19 Kevin Ryde <user42@zip.com.au>
5667
5668 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5669
5670 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5671 in accordance with R5RS, which just mpz_get_d doesn't really give.
5672
5673 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5674
5675 * eval.c (s_bad_slot_number): New static identifier.
5676
5677 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5678 signal syntax errors. Avoid unnecessary consing when creating the
5679 memoized code.
5680
5681 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5682
5683 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5684 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5685 errors. Avoid unnecessary consing when creating the memoized
5686 code.
5687
5688 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5689 standard case. Make sure line and file information are copied to
5690 every created expression.
5691
5692 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5693
5694 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5695 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5696 when creating the memoized code.
5697
5698 (scm_m_atbind): Reversed the order, in which the init expressions
5699 are stored and executed. The order of execution is now equal to
5700 the order in which the initializers of the let-forms are executed.
5701 Use check_bindings and transform_bindings.
5702
5703 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5704 !SCM_NULLP. Added some comments.
5705
5706 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5707
5708 * eval.c: Sorted include files alphabetically.
5709
5710 (scm_m_begin): Added comment.
5711
5712 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5713 unnecessary consing when creating the memoized code.
5714
5715 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5716 syntax errors. Be more specific about the kind of error that was
5717 detected.
5718
5719 (scm_m_quote, unmemocopy): As an optimization, vector constants
5720 are now inserted unquoted into the memoized code. During
5721 unmemoization the quotes are added again to provide syntactically
5722 correct code.
5723
5724 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5725
5726 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5727 scm_m_expand_body, check_bindings): Extracted syntax checking of
5728 bindings to new static function check_bindings.
5729
5730 (scm_m_let, memoize_named_let): Extracted handling of named let to
5731 new static function memoize_named_let.
5732
5733 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5734 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5735 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5736 unnecessary consing when creating the memoized code.
5737
5738 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5739
5740 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5741 static identifiers.
5742
5743 (s_clauses, s_formals, s_duplicate_formals): Removed.
5744
5745 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5746 specific about the kind of error that was detected. Prepare for
5747 easier integration of changes for separated memoization.
5748
5749 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5750
5751 * eval.c (s_duplicate_binding): New static identifier.
5752
5753 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5754
5755 (scm_m_define): Added comment about how we check for duplicate
5756 formals.
5757
5758 (scm_m_do): Added check for duplicate bindings.
5759
5760 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5761 unnecessary consing when creating the memoized code.
5762
5763 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5764 scm_c_improper_memq to c_improper_memq, since it is not exported.
5765
5766 (transform_bindings): Call scm_c_memq rather than
5767 scm_c_improper_memq.
5768
5769 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5770
5771 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5772
5773 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5774 static identifiers.
5775
5776 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5777 specific about the kind of error that was detected. Avoid use of
5778 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5779 code, this way also making sure that file name, line number
5780 information etc. remain available.
5781
5782 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5783
5784 * eval.c (memoize_as_thunk_prototype): New static function.
5785
5786 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5787 Avoid unnecessary consing when creating the memoized code.
5788
5789 2003-10-12 Kevin Ryde <user42@zip.com.au>
5790
5791 * list.c (scm_append): Track argument number and use in error.
5792
5793 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5794
5795 * eval.c (s_missing_expression, s_bad_variable): New static
5796 identifiers.
5797
5798 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5799 R5RS terminology for the naming of variables. Be more specific
5800 about the kind of error that was detected. Make sure file name,
5801 line number etc. are added to all freshly created expressions.
5802 Avoid unnecessary consing when creating the memoized code.
5803
5804 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5805
5806 * eval.c (s_extra_expression, s_misplaced_else_clause,
5807 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5808
5809 (s_extra_case_clause): Removed.
5810
5811 (scm_m_case, scm_m_cond): If a clause appears after an else
5812 clause, report a misplaced else clause.
5813
5814 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5815 specific about the kind of error that was detected. Handle bound
5816 'else and '=>. Avoid unnecessary consing when creating the
5817 memoized code.
5818
5819 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5820 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5821 syntactic keyword '=>.
5822
5823 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5824
5825 * eval.c (scm_m_case): Allow empty lists of case labels.
5826
5827 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5828
5829 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
5830
5831 * print.c (scm_isymnames): Add names for the new memoizer codes.
5832
5833 * eval.c (s_missing_clauses, s_bad_case_clause,
5834 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
5835 literal_p): New static identifiers.
5836
5837 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
5838 specific about the kind of error that was detected. Check for
5839 duplicate case labels. Handle bound 'else. Avoid unnecessary
5840 consing when creating the memoized code.
5841
5842 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5843 the syntactic keyword 'else.
5844
5845 2003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5846
5847 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
5848 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
5849
5850 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5851 unnecessary consing when creating the memoized code.
5852
5853 2003-10-09 Kevin Ryde <user42@zip.com.au>
5854
5855 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
5856 cast gives for values bigger than a long, or for nan or inf.
5857
5858 2003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5859
5860 * smob.h (scm_make_smob_type): Made the declaration match the
5861 definition.
5862
5863 2003-10-07 Marius Vollmer <mvo@zagadka.de>
5864
5865 * goops.c, objects.h, smob.c, smob.h: Make type names char
5866 const * instead of char *. Thanks to Paul Jarc!
5867
5868 2003-10-02 Kevin Ryde <user42@zip.com.au>
5869
5870 * strports.c (scm_call_with_output_string): scm_get_output_string
5871 rather than scm_strport_to_string, so as to guard against the port
5872 having been closed by the called procedure. Reported by Nic Ferrier.
5873
5874 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5875
5876 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
5877
5878 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
5879 tags.h to deprecated.h.
5880
5881 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5882
5883 This set of patches introduces a new tc7 code scm_tc7_number for
5884 numbers. Bignums, reals and complex numbers are turned from smobs
5885 into subtypes of scm_tc7_number.
5886
5887 * tags.h (scm_tc7_number): New.
5888
5889 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
5890 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
5891 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
5892 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
5893 (scm_class_of), print.c (scm_iprin1), smob.c
5894 (scm_smob_prehistory): Don't handle bignums, reals and complex
5895 numbers as subtypes of scm_tc7_smob any more.
5896
5897 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
5898 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
5899
5900 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5901
5902 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
5903 sizeof (scm_t_complex) to determine the memory size of the
5904 malloc'd area for complex numbers.
5905
5906 2003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5907
5908 * numbers.c (scm_bigequal): Fixed.
5909
5910 2003-09-16 Marius Vollmer <mvo@zagadka.de>
5911
5912 * stime.c (scm_current_time): 'time' does not set errno so don't
5913 use SCM_SYSERROR for reporting errors.
5914
5915 2003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5916
5917 This set of patches eliminates the dependency between the
5918 implementation of evaluator specific memoization codes and special
5919 constants like #f, '() etc. ('flags'), which are not evaluator
5920 specific. The goal is to remove definitions of evaluator
5921 memoization codes completely from the public interface. This will
5922 make it possible to experiment more freely with optimizations of
5923 guile's internal representation of memoized code.
5924
5925 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
5926
5927 * print.c (iflagnames): New array, holding the printed names of
5928 guile's special constants ('flags').
5929
5930 (scm_isymnames): Now holds only the printed names of the
5931 memoization codes.
5932
5933 (scm_iprin1): Separate the handling of memoization codes and
5934 guile's special constants.
5935
5936 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
5937 SCM_IFLAGNUM): new
5938
5939 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
5940 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
5941 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
5942 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
5943 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
5944 values.
5945
5946 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
5947
5948 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
5949 tc9 macros and scm_tc9_flag.
5950
5951 2003-09-15 Marius Vollmer <mvo@zagadka.de>
5952
5953 * posix.c (scm_setgroups): Check that the gid list is not too
5954 long. Thanks to Paul Jarc!
5955
5956 2003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5957
5958 * tags.h: Reduced the number of short instructions from 14 to 13.
5959 The typecode of the former 14th short instruction is now used to
5960 represent long instructions. Changed some comments to reflect
5961 this fact.
5962
5963 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
5964 previously used by SCM_IM_DEFINE.
5965
5966 (SCM_IM_DEFINE): Turned into a long instruction.
5967
5968 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
5969 instruction.
5970
5971 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
5972 code that is separate from all instructions, one level of dispatch
5973 for long instructions can be eliminated.
5974
5975 * print.c (scm_isymnames): Removed some commented code.
5976
5977 2003-09-12 Marius Vollmer <mvo@zagadka.de>
5978
5979 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
5980 compiler on IA64.
5981
5982 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
5983
5984 * modules.c (scm_module_reverse_lookup): Check that the obarray
5985 really is a hashtable and do nothing if not.
5986
5987 * inline.h: Use "extern inline" only with GCC. Use "static
5988 inline" else.
5989
5990 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5991
5992 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
5993 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5994
5995 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
5996 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
5997 deprecated.h.
5998
5999 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6000
6001 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
6002 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6003
6004 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
6005 0.0==some_expression to some_expression==0.0. The latter is
6006 better readable. The former is preferred by some people, since it
6007 leads to a compiler error when confusing == with =. However, when
6008 using gcc, a warning will be issued if in an if-statement an
6009 assigment appears. Since many Guile developers are using gcc,
6010 such errors will not remain unnoticed anyway. We can therefore
6011 focus on better readability.
6012
6013 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6014
6015 * tags.h: Added description of Guile's type system. Removed some
6016 old and misleading comments.
6017
6018 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6019
6020 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
6021 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6022
6023 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6024
6025 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
6026
6027 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
6028 respective SLOPPY macro.
6029
6030 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6031
6032 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
6033 type string, not SCM_TYP7S.
6034
6035 2003-09-03 Kevin Ryde <user42@zip.com.au>
6036
6037 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
6038 2s-complement.
6039
6040 * stime.c (scm_strptime): Add comment about glibc strptime %s and
6041 current timezone requiring SCM_DEFER_INTS.
6042
6043 2003-08-30 Neil Jerram <neil@ossau.uklinux.net>
6044
6045 * script.c (scm_compile_shell_switches): Make -s switch optional
6046 if file to be loaded does not begin with a `-'. (Thanks to Aaron
6047 VanDevender for the patch!)
6048
6049 2003-08-30 Kevin Ryde <user42@zip.com.au>
6050
6051 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
6052 and to have non-integer types rejected as per other logical funcs.
6053
6054 2003-08-28 Kevin Ryde <user42@zip.com.au>
6055
6056 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
6057
6058 2003-08-23 Kevin Ryde <user42@zip.com.au>
6059
6060 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
6061 thread safe, and could take a long time too.
6062
6063 2003-08-22 Kevin Ryde <user42@zip.com.au>
6064
6065 * numbers.c (scm_difference): Correction to bignum - negative inum.
6066
6067 2003-08-14 Kevin Ryde <user42@zip.com.au>
6068
6069 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
6070 [__GNUC__]: Use volatile asm macros rather than a function call.
6071 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
6072 macros while defining functions.
6073
6074 * simpos.c (getenv): Use <stdlib.h> for prototype.
6075 (scm_system): In docstring, refer to status:exit-val rather than
6076 "functions above".
6077
6078 2003-08-09 Kevin Ryde <user42@zip.com.au>
6079
6080 * srcprop.c (scm_source_properties): Return plist from hash if it's a
6081 list set by source-properties! rather than an SRCPROPS object,
6082
6083 2003-07-29 Kevin Ryde <user42@zip.com.au>
6084
6085 * properties.c (scm_primitive_property_ref): In docstring, note
6086 parameters to not-found-proc, use hyphens rather than underscores for
6087 that parameter name.
6088 (scm_primitive_property_set_x): In docstring, VAL is the value
6089 parameter not CODE.
6090
6091 2003-07-27 Marius Vollmer <mvo@zagadka.de>
6092
6093 * print.c (scm_print_symbol_name): handle more weird characters by
6094 escaping the symbol name properly. Thanks to Paul Jarc!
6095
6096 * posix.h (scm_setgroups): New prototype.
6097 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
6098 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
6099 Don't use SCM_WRITABLE_VELTS.
6100
6101 * gc.h (SCM_GC_SET_CELL_BVEC): New.
6102 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
6103 Matthias Koeppe!
6104
6105 * __scm.h (SCM_C_INLINE_KEYWORD): New.
6106 * numbers.c: Use it in place of SCM_C_INLINE so that the code
6107 compiles when SCM_C_INLINE is undefined.
6108
6109 2003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6110
6111 * __scm.h: Reformulated the architecture and compiler properties
6112 in terms of properties of scm_t_bits and SCM variables rather than
6113 in terms of c standard types. This is since it is not known which
6114 of the standard types scm_t_bits and SCM variables will be defined
6115 to.
6116
6117 2003-07-24 Kevin Ryde <user42@zip.com.au>
6118
6119 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
6120 and real.
6121
6122 2003-07-18 Kevin Ryde <user42@zip.com.au>
6123
6124 * numbers.c (scm_product): In complex * bignum, correction to
6125 REAL/IMAG fetch, x is the complex, not y.
6126
6127 2003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6128
6129 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
6130 scm_inf_p test as Scheme values.
6131 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
6132 and a positive inum.
6133 Use GNU indentation style.
6134
6135 2003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6136
6137 * values.c (scm_values): Build lists of length 1 by using
6138 scm_list_1 instead of using scm_cons.
6139
6140 2003-07-10 Kevin Ryde <user42@zip.com.au>
6141
6142 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
6143 * list.c (scm_list_n): Ditto.
6144
6145 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
6146
6147 2003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
6148
6149 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
6150 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
6151 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
6152 the other using intptr_t.
6153
6154 2003-07-08 Kevin Ryde <user42@zip.com.au>
6155
6156 * numbers.c (scm_make_polar): Use sincos, when available.
6157 (scm_magnitude): Use hypot.
6158
6159 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
6160 @footnote since it doesn't go through to guile-procedures.txt.
6161
6162 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
6163 outside @var to quieten makeinfo, and use @code.
6164
6165 2003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6166
6167 * gc-malloc.c (decrease_mtrigger): new function
6168 (increase_mtrigger): new function, separate debug registering and
6169 mtrigger administration.
6170 (scm_gc_realloc): bugfix: do mtrigger administration before the
6171 actual realloc, for the realloc might invalidate a GC-d segment of
6172 memory. Thanks to Sam Hocevar for pointing this out.
6173 (scm_gc_realloc): use scm_malloc_reregister instead of
6174 unregistering and registering in sequence.
6175
6176 2003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6177
6178 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
6179
6180 2003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6181
6182 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
6183 clauses.
6184
6185 2003-06-29 Marius Vollmer <mvo@zagadka.de>
6186
6187 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
6188 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
6189 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
6190 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
6191 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
6192 the release_1_6 branch.
6193
6194 2003-06-25 Stefan Jahn <stefan@lkcc.org>
6195
6196 * continuations.c: Redeclaration of getcontext() via the
6197 __asm__ ("getcontext") directive.
6198
6199 * continuations.h: Include <ucontext.h> instead of
6200 <sys/ucontext.h>.
6201
6202 2003-06-21 Kevin Ryde <user42@zip.com.au>
6203
6204 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
6205 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
6206 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
6207 available.
6208 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
6209 (isfinite): Remove, conflicts with C99 isfinite().
6210
6211 2003-06-19 Marius Vollmer <mvo@zagadka.de>
6212
6213 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
6214 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
6215 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
6216 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
6217 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
6218 the release_1_6 branch.
6219
6220 2003-06-14 Stefan Jahn <stefan@lkcc.org>
6221
6222 * threads.h: Redefined scm_getspecific() and scm_setspecific()
6223 to be functions instead of macros.
6224
6225 * threads.c: Conditionalized inclusion of <sys/time.h> and
6226 <unistd.h>.
6227 (scm_getspecific, scm_setspecific): Made these two function
6228 real part of the API.
6229
6230 * posix.c (s_scm_putenv): Added some code to make a
6231 (putenv "FOO="), i.e. setting an empty string, work also on
6232 Win32 systems. Thanks to Kevin Ryde for the proposal.
6233
6234 2003-06-12 Kevin Ryde <user42@zip.com.au>
6235
6236 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
6237 freebsd to comment about need to use unsetenv.
6238
6239 2003-06-02 Marius Vollmer <mvo@zagadka.de>
6240
6241 * ports.c (scm_peek_char): Safe the column of the port around the
6242 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
6243
6244 2003-06-07 Kevin Ryde <user42@zip.com.au>
6245
6246 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
6247 and friends required by scm_t_bits setups.
6248
6249 2003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6250
6251 * tags.h (scm_tc2_int): Added.
6252
6253 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
6254 scm_tc2_int.
6255
6256 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
6257 scm_tcs_closures): Hard coded values replaced by symbolic ones.
6258
6259 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6260
6261 * eval.c: Partially undid my patch from 2003-05-31. This patch
6262 caused the segfault referenced in the previous changelog entry.
6263
6264 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6265
6266 * tags.h: Fixed comment about the immediate type code layout.
6267
6268 * eval.c: Fixed handling of non-special instructions. Without
6269 this patch, guile will segfault on (#\0) and similar instructions.
6270
6271 2003-06-05 Kevin Ryde <user42@zip.com.au>
6272
6273 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
6274 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
6275
6276 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
6277 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
6278
6279 2003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6280
6281 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
6282 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
6283 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
6284 generalized it to apply not only to C level functions but also to
6285 scheme level functions.
6286
6287 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
6288 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
6289 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
6290 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
6291 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
6292 respectively.
6293
6294 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
6295 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
6296 eval.h into eval.c and a copy is placed into deprecated.h.
6297
6298 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
6299 into eval.c. This definition was not part of the API in any
6300 officially released version of guile and thus does not need to go
6301 through a phase of deprecation.
6302
6303 2003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
6304
6305 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
6306 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
6307 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
6308 definitions are make static and renamed from scm_s_xxx to s_xxx.
6309 In deprecated.c the original definitions are copied.
6310
6311 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
6312 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
6313 eval.h into eval.c and a copy (slightly modified to work in user
6314 code) is placed into deprecated.h.
6315
6316 * eval.c: Use the local static s_xxx definitions instead of the
6317 scm_s_xxx definitions throughout.
6318
6319 2003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6320
6321 This set of patches separates the representation of the cxr family
6322 of functions (car, cdr etc.) from the dsubr family of functions
6323 (i. e. functions that take a double precision floating point
6324 argument). Further, the algorithm for handling the cxr function
6325 is improved.
6326
6327 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
6328 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
6329 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
6330 cosh, tanh), objects.c (scm_class_of), procprop.c
6331 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
6332 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
6333 typecode for the dsubr family of functions.
6334
6335 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
6336 ramap_dsubr.
6337
6338 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
6339 (scm_init_pairs): Make use of the (now usable) second cell element
6340 of a scm_tc7_cxr function to implement the cxr family of functions
6341 more efficiently.
6342
6343 2003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6344
6345 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
6346 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
6347 end of an if-else-if-sequence of checks.
6348
6349 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6350
6351 * eval.c (SCM_CEVAL): Improved readability of call-with-values
6352 execution. Generalize apply_closure to apply_proc and use that
6353 for call-with-values.
6354
6355 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6356
6357 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
6358 a non closure.
6359
6360 2003-05-30 Stefan Jahn <stefan@lkcc.org>
6361
6362 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
6363 appropriately for mingw32 hosts.
6364
6365 * numbers.h: Defining copysign(), isnan() and finite() to
6366 be prefixed by a single '_' for mingw32 hosts.
6367
6368 2003-05-30 Kevin Ryde <user42@zip.com.au>
6369
6370 * numbers.c (z_negative_one): New variable.
6371 (scm_init_numbers): Initialize it.
6372 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
6373
6374 2003-05-29 Stefan Jahn <stefan@lkcc.org>
6375
6376 * win32-dirent.c: Use malloc() instead of scm_malloc().
6377
6378 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
6379 warning.
6380
6381 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
6382 mingw32 build.
6383
6384 * modules.c (s_scm_module_import_interface): Renamed local
6385 variable interface to _interface. Seems like 'interface'
6386 is a special compiler directive for the mingw32 compiler.
6387
6388 * mkstemp.c: Provide prototype to avoid compiler warning.
6389
6390 * load.c (s_scm_search_path): Fixed absolute and relative
6391 path detections for native Windows platforms.
6392
6393 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
6394 to build on mingw32).
6395
6396 * gc-freelist.c ("s_scm_map_free_list",
6397 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
6398
6399 * fports.c (fport_fill_input): Disable use of
6400 fport_wait_for_input() on Win32 platforms.
6401
6402 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
6403
6404 * Makefile.am: Modified some rules for cross compiling.
6405
6406 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6407
6408 * eval.c (SCM_CEVAL): In case of an application, all checks for a
6409 proper function object and the correct number of arguments are now
6410 performed in the application part of SCM_CEVAL.
6411
6412 (scm_badformalsp): Removed.
6413
6414 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6415
6416 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
6417
6418 2003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6419
6420 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
6421 always being false by inserting preprocessor conditional. (Thanks
6422 to Bruce Korb.)
6423
6424 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
6425 (void *) in order to avoid an aliasing warning; thanks to Bruce
6426 Korb.)
6427
6428 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
6429
6430 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
6431 SCM_STACK_PTR.
6432
6433 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
6434 thread->base --> t->base.
6435
6436 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
6437
6438 2003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6439
6440 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
6441 scm_variable_set_name_hint, scm_builtin_variable,
6442 scm_internal_with_fluids, scm_make_gsubr,
6443 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
6444 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
6445 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
6446 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
6447 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
6448 scm_make_subr_with_generic, scm_make_subr_opt,
6449 scm_call_catching_errors, scm_make_smob_type_mfpe,
6450 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
6451 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
6452 branch. Some have been slightly rewritten.
6453 (scm_i_object_chars, scm_i_object_length): New, to support
6454 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
6455
6456 2003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6457
6458 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
6459 names and inits in the memoized code of do.
6460
6461 2003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6462
6463 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
6464 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
6465 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6466 a compilation error if error-on-warning is enabled).
6467
6468 2003-05-17 Marius Vollmer <mvo@zagadka.de>
6469
6470 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6471 removes preprocessor directives from the snarfage that might
6472 otherwise confuse us. These directives appear when compiling with
6473 "-g3", for example.
6474
6475 2003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6476
6477 * ChangeLog: add my surname
6478
6479 * srcprop.c (scm_finish_srcprop): use
6480 scm_gc_register_collectable_memory()
6481 (scm_make_srcprops): idem.
6482
6483 2003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6484
6485 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6486 wrap-around for scm_mtrigger
6487 (scm_gc_register_collectable_memory): abort on overflowing
6488 scm_mallocated().
6489
6490 2003-05-13 Kevin Ryde <user42@zip.com.au>
6491
6492 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6493 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6494
6495 2003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6496
6497 * backtrace.c (scm_display_error_message): Introduced fancy
6498 printing with max level 7 and length 10. (Purpose: avoid printing
6499 gigantic objects in error messages.)
6500
6501 * print.c, print.h (scm_i_port_with_print_state): New function.
6502
6503 * print.c (scm_iprin1, scm_printer_apply,
6504 scm_port_with_print_state): Use scm_i_port_with_print_state.
6505 (scm_simple_format): Modified not to destroy print states.
6506 (print_state_mutex): New mutex.
6507 (scm_make_print_state, scm_free_print_state, scm_prin1):
6508 Lock/unlock print_state_mutex.
6509
6510 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6511 Use current names in definitions.
6512
6513 2003-05-10 Kevin Ryde <user42@zip.com.au>
6514
6515 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6516
6517 * numbers.c (scm_integer_length): On negative bignums, adjust
6518 mpz_sizeinbase to account for it looking at absolute value where we
6519 want ones-complement.
6520
6521 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6522 since we're only using the ulong return value, and x might not fit.
6523
6524 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6525
6526 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6527 read. This will allow to make the definition in read.c static.
6528
6529 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6530
6531 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6532 from evalext to eval. This will allow to make some of the
6533 definitions in eval.c static.
6534
6535 2003-05-06 Kevin Ryde <user42@zip.com.au>
6536
6537 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6538 (scm_logcount): Use mpz_com, not mpz_neg.
6539
6540 2003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6541
6542 The purpose of this patch is to make guile's internal memoizers
6543 distinguishable from memoizing macros created on the scheme level
6544 or from user provided primitive memoizing macros. The reason is,
6545 that the internal memoizers are the only ones that are allowed to
6546 transform their scheme input into memoizer byte code, while all
6547 other memoizing macros may only transform scheme code into new
6548 scheme code.
6549
6550 To achieve this, a new macro type 'builtin-macro!' is introduced.
6551 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6552 this will change when the memoizer and executor are separated.
6553
6554 * macros.[ch] (scm_i_makbimacro): New.
6555
6556 * macros.h (SCM_BUILTIN_MACRO_P): New.
6557
6558 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6559
6560 * eval.c, goops.c: All of guile's primitive memoizing macros are
6561 primitive builtin-macros now.
6562
6563 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6564 builtin-macros are handled equally to memoizing macros.
6565
6566 2003-05-04 Marius Vollmer <mvo@zagadka.de>
6567
6568 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6569 work around a bug in GCC 2.95.2 but is now a bug in itself.
6570
6571 2003-05-02 Marius Vollmer <mvo@zagadka.de>
6572
6573 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6574 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6575 scm_tcs_symbols): New.
6576
6577 2003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6578
6579 * deprecated.h, deprecated.c (scm_protect_object,
6580 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6581 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6582 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6583 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6584 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6585 scm_ptob_descriptor, scm_port_rw_active,
6586 scm_close_all_ports_except): New.
6587
6588 * ports.c (scm_c_port_for_each): New function, mostly copied from
6589 scm_port_for_each.
6590 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6591 * ports.h (scm_c_port_for_each): New prototype.
6592
6593 2003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6594
6595 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6596 macro was introduced in anticipation of GOOPS method compilation
6597 code.)
6598
6599 * goops.c: Removed binding of @dispatch.
6600
6601 2003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6602
6603 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6604 instructions that bind the macros on the scheme level back to
6605 goops.c in order to make sure again that the bindings go into the
6606 (oop goops) module and are not visible from the outside.
6607
6608 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6609
6610 * eval.c: Non functional change: Separated R5RS and non-R5RS
6611 macros into different sections of the file and ordered the
6612 memoizers alphabetically.
6613
6614 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6615
6616 * eval.c (scm_ilookup): Rewritten to improve readability.
6617
6618 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6619
6620 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6621 Partially reverted patch from 2003-04-23 in oder to find a better
6622 compromise between readability and debuggability.
6623
6624 2003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6625
6626 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6627 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6628 definitions of the special goops memoizers from goops.[ch] to
6629 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6630 throughout guile.
6631
6632 2003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6633
6634 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6635
6636 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6637
6638 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6639
6640 * ioext.c (scm_fdes_to_ports): Ditto.
6641
6642 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6643 lock/unlock scm_i_port_table_mutex.
6644
6645 * strports.c (scm_mkstrport): Ditto.
6646
6647 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6648
6649 * fports.c (scm_fdes_to_port): Ditto.
6650
6651 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6652
6653 This set of patches contains no functional changes, only debatable
6654 minor stylistic ones. Still, in order to prepare a patch between
6655 my local copy and the CVS version, I decided to submit the changes
6656 below. Then, the patch will hopefully only contain relevant
6657 modifications :-)
6658
6659 * eval.c (iqq): Added const specifier.
6660
6661 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6662 Use NULL instead of 0 to indicate that a pointer is returned.
6663 Removed some misleading 'fall through' comments.
6664
6665 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6666 Split up long expressions into smaller ones to be more debugging
6667 friendly.
6668
6669 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6670
6671 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6672 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6673 rather than casting to SCM.
6674
6675 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6676
6677 * sort.c, pairs.h: Removed unnecessary includes.
6678
6679 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6680
6681 * sort.c: Replaced hand-made trampline code by the new official
6682 mechanism from eval.c. This fixes a segfault in the new test file
6683 sort.test.
6684
6685 (quicksort, compare_function, scm_restricted_vector_sort_x,
6686 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6687 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6688 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6689 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6690 eval.c.
6691
6692 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6693 cmp_fun_t): Removed.
6694
6695 (compare_function): Added.
6696
6697 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6698 arithmetics with index arithmetics. Changed quicksort to work on
6699 an array of SCM values instead of an array of characters. Avoid
6700 bytewise copying of SCM elements. Avoid allocating memory on the
6701 stack with alloca. Fixed some comments.
6702
6703 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6704
6705 * eval.c (EXTEND_ENV): Eliminated.
6706
6707 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6708 EXTEND_ENV.
6709
6710 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6711
6712 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6713
6714 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6715 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6716
6717 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6718 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6719 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6720 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6721 functions such that they check if the object is a non-immediate.
6722 Further, renamed identifiers to use the scm_dbg_ prefix and made
6723 their inclusion into the lib dependent of the
6724 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6725
6726 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6727
6728 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6729 debug option.
6730
6731 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6732
6733 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
6734 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6735 any calls to SCM_NCONSP any more.
6736
6737 * unif.c (l2ra): Eliminate redundant check.
6738
6739 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6740
6741 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6742 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6743 SCM_NNULLP. Now, guile itself does not include any calls to
6744 SCM_NNULLP any more.
6745
6746 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6747
6748 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6749 scm_copy_tree): Place assignment expressions which are part of
6750 other expressions into an expression of their own.
6751
6752 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6753
6754 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6755 compare SCM values with !=.
6756
6757 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6758
6759 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6760 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6761 and definition of the memoizer for the generalized set! macro from
6762 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6763 define the macro object.
6764
6765 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6766 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6767 eval.c, it is made static and renamed to s_set_x.
6768
6769 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6770 over SCM_N<foo>.
6771
6772 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6773
6774 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6775 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6776 to undefineds and registered the object as a permanent object.
6777
6778 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6779 static in eval.c, renamed it to f_apply and registered the object
6780 as a permanent object.
6781
6782 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6783
6784 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
6785 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6786
6787 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6788
6789 * numbers.c (scm_logtest): Fixed argument bug in the call to
6790 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6791
6792 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6793
6794 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6795 type errors that showed up when compiling with SCM_DEBUG defined.
6796
6797 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6798
6799 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6800 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6801 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6802 fix compile errors with --disable-deprecated.
6803
6804 2003-04-17 Rob Browning <rlb@defaultvalue.org>
6805
6806 * numbers.c (scm_integer_expt): fix case where we were declaring
6807 vars in the middle of a statement block. Thanks to Thamer
6808 Al-Harbash.
6809
6810 2003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6811
6812 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6813 change.
6814
6815 * eq.c (scm_eqv_p): Turned into a primitive generic.
6816
6817 2003-04-16 Rob Browning <rlb@defaultvalue.org>
6818
6819 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6820 Thanks to Boyd Gerber.
6821 Added check for __arm__ in addition to arm for LINUX and copied
6822 __s390__ defines from upstream libgc. Thanks to James Treacy for
6823 reporting the problems.
6824
6825 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
6826
6827 * socket.c: use SCM_CHAR_BIT.
6828
6829 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
6830
6831 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
6832
6833 2003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6834
6835 * feature.c (scm_init_feature): Always add threads feature.
6836
6837 2003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6838
6839 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
6840 scm_at_assert_bound_ref. (We don't want the unbound check. See
6841 oop/goops/active-slot.scm.)
6842
6843 2003-04-14 Rob Browning <rlb@defaultvalue.org>
6844
6845 * tags.h: scm_t_intptr should have been intptr_t.
6846
6847 2003-04-13 Rob Browning <rlb@defaultvalue.org>
6848
6849 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
6850 test. Instead use
6851 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
6852 as gc_os_dep.c suggests is appropriate.
6853
6854 * goops.c (prep_hashsets): make static to match prototype.
6855 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
6856 Chin.
6857
6858 * c-tokenize.lex: remove trailing comma from enum. Thanks to
6859 Albert Chin.
6860
6861 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
6862 Klausner.
6863
6864 2003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6865
6866 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
6867 indicated through extra fields in getters-n-setters.
6868 (scm_add_slot): Adapted to new format of getters_n_setters slot.
6869 (Thanks to Andy Wingo.)
6870
6871 2003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6872
6873 * gc-segment.c: add comment
6874
6875 2003-04-07 Rob Browning <rlb@defaultvalue.org>
6876
6877 * debug.h: change "id" arg name to "info_id" to avoid objective-c
6878 clash.
6879
6880 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
6881 and add regression test to standalone/.
6882
6883 2003-04-06 Rob Browning <rlb@defaultvalue.org>
6884
6885 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
6886 Thanks to Dale P. Smith.
6887
6888 * random.c: #include gmp.h.
6889 (scm_c_random_bignum): normalize result on return.
6890
6891 * init.c: #include gmp.h.
6892
6893 * numbers.h: remove the gmp.h #include (not needed now).
6894
6895 * posix.h: change occurences of "id" to something else so we don't
6896 cause trouble when included via objective-c (can't hurt, might
6897 help). Still have usage in debug.h, though.
6898
6899 2003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6900
6901 * random.c (scm_c_random_bignum): Don't generate a random number
6902 equal to m (the second argument of scm_c_random_bignum); only
6903 generate numbers in the range 0 <= r < m.
6904 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
6905 scm_var_random_state.
6906
6907 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
6908 clause.
6909
6910 2003-04-05 Rob Browning <rlb@defaultvalue.org>
6911
6912 * modules.c (scm_module_import_interface): move declaration of
6913 uses before any code.
6914
6915 2003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6916
6917 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
6918 not top_srcdir.
6919
6920 * hashtab.c (rehash_after_gc): Clear to_rehash list before
6921 processing it in order to avoid an infinite loop.
6922
6923 * print.c (scm_prin1): Remember old state of pstate->writingp.
6924
6925 2003-04-05 Marius Vollmer <mvo@zagadka.de>
6926
6927 * Changed license terms to the plain LGPL thru-out.
6928
6929 2003-04-04 Rob Browning <rlb@defaultvalue.org>
6930
6931 * socket.c (FLIPCPY_NET_HOST_128): new macro.
6932 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
6933 rewrite to handle GMP bignums.
6934
6935
6936 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
6937
6938 * ports.c (scm_getc): minor tweak.
6939
6940 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
6941 rewrite to handle GMP bignums.
6942
6943 * numbers.c: rewrite *many* functions to handle GMP bignums.
6944
6945 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
6946 handle GMP bignums.
6947
6948 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
6949
6950 * init.c (check_config): remove SCM_BIGDIG conditionals.
6951 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
6952
6953 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
6954
6955 * eval.c: remove SCM_BIGDIG conditionals.
6956
6957 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
6958
6959 2003-03-31 Rob Browning <rlb@defaultvalue.org>
6960
6961 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
6962 to Kevin Ryde.)
6963
6964 2003-03-27 Rob Browning <rlb@defaultvalue.org>
6965
6966 * threads.h: 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 * threads.c: 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 * tags.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 * stacks.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 * stackchk.h: 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 * stackchk.c: 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 * sort.c: fix various preprocessor usages of new public
6991 symbols to expect 0 or 1 values rather than 1 or undefined.
6992 i.e. change #ifdef to #if, etc.
6993
6994 * read.c: fix various preprocessor usages of new public
6995 symbols to expect 0 or 1 values rather than 1 or undefined.
6996 i.e. change #ifdef to #if, etc.
6997
6998 * random.c: 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 * print.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 * objects.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 * numbers.h: 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 * null-threads.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 * lang.c: 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 * lang.h: 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 * iselect.h: 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 * init.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 * gh_data.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 * gh.h: 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 * gen-scmconfig.c: change most new public symbols to be defined to
7043 0 or 1 rather than being either 1 or undefined.
7044
7045 * gc_os_dep.c: fix various preprocessor usages of new public
7046 symbols to expect 0 or 1 values rather than 1 or undefined.
7047 i.e. change #ifdef to #if, etc.
7048 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
7049
7050 * gc.h: 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 * gc-card.c: fix various preprocessor usages of new public
7055 symbols to expect 0 or 1 values rather than 1 or undefined.
7056 i.e. change #ifdef to #if, etc.
7057
7058 * gc-mark.c: fix various preprocessor usages of new public
7059 symbols to expect 0 or 1 values rather than 1 or undefined.
7060 i.e. change #ifdef to #if, etc.
7061
7062 * feature.c: fix various preprocessor usages of new public
7063 symbols to expect 0 or 1 values rather than 1 or undefined.
7064 i.e. change #ifdef to #if, etc.
7065
7066 * evalext.c: fix various preprocessor usages of new public
7067 symbols to expect 0 or 1 values rather than 1 or undefined.
7068 i.e. change #ifdef to #if, etc.
7069
7070 * eval.h: fix various preprocessor usages of new public
7071 symbols to expect 0 or 1 values rather than 1 or undefined.
7072 i.e. change #ifdef to #if, etc.
7073
7074 * eval.c: fix various preprocessor usages of new public
7075 symbols to expect 0 or 1 values rather than 1 or undefined.
7076 i.e. change #ifdef to #if, etc.
7077
7078 * eq.c: fix various preprocessor usages of new public
7079 symbols to expect 0 or 1 values rather than 1 or undefined.
7080 i.e. change #ifdef to #if, etc.
7081
7082 * coop.c: fix various preprocessor usages of new public
7083 symbols to expect 0 or 1 values rather than 1 or undefined.
7084 i.e. change #ifdef to #if, etc.
7085
7086 * coop-threads.c: fix various preprocessor usages of new public
7087 symbols to expect 0 or 1 values rather than 1 or undefined.
7088 i.e. change #ifdef to #if, etc.
7089
7090 * coop-pthreads.c: fix various preprocessor usages of new public
7091 symbols to expect 0 or 1 values rather than 1 or undefined.
7092 i.e. change #ifdef to #if, etc.
7093
7094 * coop-defs.h: fix various preprocessor usages of new public
7095 symbols to expect 0 or 1 values rather than 1 or undefined.
7096 i.e. change #ifdef to #if, etc.
7097
7098 * convert.i.c: fix various preprocessor usages of new public
7099 symbols to expect 0 or 1 values rather than 1 or undefined.
7100 i.e. change #ifdef to #if, etc.
7101
7102 * continuations.c: fix various preprocessor usages of new public
7103 symbols to expect 0 or 1 values rather than 1 or undefined.
7104 i.e. change #ifdef to #if, etc.
7105
7106 * _scm.h: fix various preprocessor usages of new public symbols to
7107 expect 0 or 1 values rather than 1 or undefined. i.e. change
7108 #ifdef to #if, etc.
7109
7110 2003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7111
7112 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
7113
7114 * deprecated.c, deprecated.h: New files, to collect deprecated
7115 things in one place.
7116 * Makefile.am: Added them in all the right places.
7117
7118 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
7119 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
7120 builds work.
7121 (DOT_X_FILES): Removed "iselect.x".
7122 (DOT_DOC_FILES): Removed "iselect.doc".
7123
7124 2003-03-25 Rob Browning <rlb@defaultvalue.org>
7125
7126 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
7127 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
7128
7129 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
7130
7131 * vports.c: #include <config.h> if HAVE_CONFIG_H.
7132
7133 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
7134 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7135
7136 * threads.h: replace usage of struct timespect with
7137 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
7138 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
7139 favor of scm_t_timespec from scmconfig.h.
7140
7141 * threads.c: move libguile/_scm.h include to the top so we pick up
7142 any critical defines like _GNU_SOURCE early. Replace usage of
7143 struct timespect with scm_t_timespec. Replace usage of
7144 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
7145 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
7146
7147 * threads-plugin.h: replace usage of struct timespect with
7148 scm_t_timespec.
7149
7150 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
7151 usage of struct timespect with scm_t_timespec.
7152
7153 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
7154 HAVE_INTTYPES_H handling to scmconfig.h. #include
7155 "libguile/__scm.h". Rework handling for scm_t_bits,
7156 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
7157 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
7158 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
7159 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
7160 SCM_HAVE_ARRAYS.
7161
7162 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
7163
7164 * struct.c: #include <config.h> if HAVE_CONFIG_H.
7165
7166 * strports.c: #include <config.h> if HAVE_CONFIG_H.
7167
7168 * strop.c: #include <config.h> if HAVE_CONFIG_H.
7169
7170 * stime.h: move handling of time related headers to scmconfig.h.
7171
7172 * stime.c: #include <config.h> if HAVE_CONFIG_H.
7173
7174 * stacks.c: replace usage of STACK_GROWS_UP with
7175 SCM_STACK_GROWS_UP.
7176
7177 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7178 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7179
7180 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7181 of uint32 and HAVE_UINT_32 with scm_t_int32.
7182
7183 * smob.c: #include <config.h> if HAVE_CONFIG_H.
7184
7185 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
7186
7187 * script.c: #include <config.h> if HAVE_CONFIG_H.
7188
7189 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
7190
7191 * scmconfig.h.top: new file -- preamble for scmconfig.h.
7192
7193 * rw.c: #include <config.h> if HAVE_CONFIG_H.
7194
7195 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
7196
7197 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7198
7199 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
7200
7201 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7202 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
7203 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
7204 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7205
7206 * ramap.c: replace usage of HAVE_LONG_LONGS with
7207 "SCM_SIZEOF_LONG_LONG != 0".
7208
7209 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
7210 "libguile/scmconfig.h".
7211
7212 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
7213
7214 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7215 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7216
7217 * posix.c: #include <config.h> if HAVE_CONFIG_H.
7218
7219 * ports.c: #include <config.h> if HAVE_CONFIG_H.
7220
7221 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7222
7223 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
7224 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
7225 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
7226 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
7227 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
7228 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
7229 "SCM_SIZEOF_LONG_LONG != 0".
7230
7231 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7232 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
7233 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
7234 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
7235
7236 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
7237
7238 * null-threads.h: replace usage of struct timespect with
7239 scm_t_timespec.
7240
7241 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
7242
7243 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
7244 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
7245 scm_t_uint64 and rename usages.
7246
7247 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
7248
7249 * load.c: #include <config.h> if HAVE_CONFIG_H.
7250
7251 * iselect.h: move handling of time related headers to scmconfig.h.
7252 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
7253 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
7254 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
7255
7256 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7257 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7258 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7259
7260 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
7261
7262 * inline.h: #include "libguile/__scm.h" at the top. Change code
7263 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
7264 what to do instead of creating a new public #define. Rename usage
7265 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7266 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
7267 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
7268
7269 * inline.c: rearrange handling -- now we just #define
7270 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
7271 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
7272 appropriate, and we use that in inline.h along with the above
7273 define to determine how to respond.
7274
7275 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7276 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7277
7278 * guile.c: #include <config.h> if HAVE_CONFIG_H.
7279
7280 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7281 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7282
7283 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7284
7285 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
7286
7287 * gen-scmconfig.c: new file -- see comments in file for details.
7288
7289 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
7290
7291 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
7292 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7293
7294 * gc.h: replace usage of SIZEOF_LONG with
7295 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
7296 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
7297 since we handle that in scmconfig.h now.
7298
7299 * gc.c: #include <config.h> if HAVE_CONFIG_H.
7300
7301 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7302 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
7303 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7304
7305 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
7306
7307 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7308 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7309
7310 * fports.c: #include <config.h> if HAVE_CONFIG_H.
7311
7312 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
7313
7314 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7315 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7316
7317 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
7318
7319 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7320 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7321
7322 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
7323 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
7324 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7325 with "SCM_SIZEOF_LONG_LONG != 0".
7326
7327 * error.c: #include <config.h> if HAVE_CONFIG_H.
7328
7329 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7330 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7331 with "SCM_SIZEOF_LONG_LONG != 0".
7332
7333 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
7334
7335 * coop.c: replace usage of struct timespect with scm_t_timespec.
7336 #include <config.h> if HAVE_CONFIG_H.
7337
7338 * coop-threads.c: #include "libguile/_scm.h" early. Replace
7339 usage of struct timespect with scm_t_timespec. Replace usage of
7340 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7341
7342 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
7343 usage of struct timespect with scm_t_timespec. Replace usage of
7344 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7345
7346 * coop-defs.h: move handling of time related headers to
7347 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
7348 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
7349 timespect with scm_t_timespec.
7350
7351 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7352
7353 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7354
7355 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7356 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7357
7358 * continuations.c: move libguile/_scm.h include to the top so we
7359 pick up any critical defines like _GNU_SOURCE early.
7360
7361 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
7362
7363 * async.c: #include <config.h> if HAVE_CONFIG_H.
7364
7365 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
7366
7367 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
7368 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
7369
7370 * __scm.h: move libguile/scmconfig.h include up to the top, so
7371 we're sure to pick up any critical defines like _GNU_SOURCE early.
7372 #include <limits.h> removed in favor of scmconfig.h inclusion when
7373 appropriate. STDC_HEADERS based inclusion of stdlib.h,
7374 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
7375 scmconfig.h inclusion when appropriate. Various Win32 related
7376 definitions removed in favor of scmconfig.h inclusion when
7377 appropriate.
7378 (HAVE_UINTPTR_T): definition removed (see NEWS).
7379 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
7380 (HAVE_LONG_LONGS): definition removed (see NEWS).
7381 (HAVE_LONG_LONG): definition removed (see NEWS).
7382 (HAVE_PTRDIFF_T): definition removed (see NEWS).
7383
7384 * Makefile.am: scmconfig.h is now generated by building and
7385 running gen-scmconfig.h and capturing its output. gen-scmconfig
7386 uses config.h and the configure.in generated gen-scmconfig.h to
7387 decide what to output. See gen-scmconfig.c for details.
7388 (noinst_PROGRAMS): add gen-scmconfig.
7389 (gen_scmconfig_SOURCES): new variable.
7390 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
7391 cross-compiling right.
7392 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
7393 (BUILT_SOURCES): add scmconfig.h.
7394
7395 2003-03-19 Marius Vollmer <mvo@zagadka.de>
7396
7397 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
7398 Adrian Bunk. Thanks!
7399
7400 2003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7401
7402 * goops.c (make_class_from_template): New fourth arg:
7403 applicablep.
7404 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
7405 cpls.
7406
7407 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
7408
7409 * goops.c, objects.c, objects.h (scm_make_extended_class): New
7410 second arg: applicablep.
7411 (scm_i_inherit_applicable): New function.
7412
7413 * goops.c, goops.h (scm_class_applicable,
7414 scm_class_extended_accessor): New classes.
7415
7416 2003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7417
7418 * procs.c (scm_procedure_documentation): Removed redundant
7419 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
7420 predicates.
7421
7422 2003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7423
7424 * list.c, list.h (scm_filter, scm_filter_x): New functions.
7425
7426 * modules.c (scm_module_import_interface): New function.
7427
7428 * goops.c, goops.h (scm_class_accessor_method): Renamed from
7429 scm_class_accessor.
7430 (scm_class_accessor): New class.
7431
7432 2003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7433
7434 * goops.c (scm_primitive_generic_generic): Enable primitive
7435 generic if not enabled.
7436 (scm_sys_goops_loaded): Setup unextended primitive generics.
7437
7438 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
7439
7440 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
7441 snarf macros.
7442
7443 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
7444 testing example. All uses of SCM_GPROC should be converted.)
7445
7446 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
7447 scm_assoc.
7448
7449 * eq.c (scm_equal_p): Turned into a primitive generic.
7450
7451 2003-02-27 Rob Browning <rlb@defaultvalue.org>
7452
7453 * Makefile.am (scmconfig.h): new target -- generate file from
7454 ../config.h.
7455 (modinclude_HEADERS): remove version.h.
7456 (nodist_modinclude_HEADERS): add version.h.
7457
7458 2003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7459
7460 This fixes a serious GC bug, introduced during the latest
7461 reorganization of the GC, which disabled freeing of structs and
7462 GOOPS objects:
7463
7464 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
7465 SCM_EOL.
7466 (scm_struct_prehistory): Move scm_free_structs to
7467 scm_before_mark_c_hook.
7468
7469 * gc-card.c (sweep_card): Check that we haven't swept structs on
7470 this card before. That can happen if scm_i_sweep_all_segments has
7471 been called from some other place than scm_igc.
7472
7473 2003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7474
7475 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7476 (since hash tables now adapt their size).
7477
7478 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7479 (current number of prehistory bindings; hashtable code will select
7480 a prime which is greater than this value).
7481
7482 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7483 (current number of initial symbols).
7484
7485 * properties.c (scm_init_properties): Don't specify size of
7486 scm_properties_whash.
7487
7488 * objprop.c (scm_init_objprop): Don't specify size of
7489 scm_object_whash.
7490
7491 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7492
7493 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7494
7495 The following changes introduce the use of resizable hash tables
7496 throughout Guile. It also renames the old *-hash-table* functions
7497 to *-alist-vector* and places them, together with the rest of the
7498 weak vector support, in the module (ice-9 weak-vector). We should
7499 probably introduce a new, better, API for weak references, for
7500 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7501 look like and are used like ordinary pairs.)
7502
7503 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7504 leaf_environment_fold, obarray_remove_all): Use hashtable
7505 accessors.
7506
7507 * gc.c (scm_init_storage): Moved hook initialization to
7508 scm_storage_prehistory.
7509 (scm_storage_prehistory): New function.
7510 (scm_igc): Added commentary about placement of
7511 scm_after_sweep_c_hook.
7512
7513 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7514 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7515 SCM_WVECT_WEAK_VALUE_P.
7516
7517 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7518 functions.
7519 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7520 Removed.
7521 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7522 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7523
7524 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7525 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7526
7527 * modules.c (module-reverse-lookup): Use hashtable accessors.
7528
7529 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7530
7531 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7532 scm_make_weak_value_alist_vector,
7533 scm_make_doubly_weak_alist_vector): New functions.
7534
7535 * weaks.c (scm_init_weaks_builtins): New function.
7536
7537 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7538 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7539 SCM_WVECT_NOSCAN_P): New macros.
7540
7541 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7542 and SCM_WVECT_WEAK_VALUE_P.
7543
7544 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7545 allocate_weak_vector and exported.
7546
7547 2003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7548
7549 * hashtab.c: Undid thread safety. (We decided that it's better to
7550 let the user explicitly protect the tables (or not) according what
7551 is suitable for the application.)
7552
7553 2003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7554
7555 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7556 thread safe and handle resizing tables.
7557 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7558 SCM_DEFER/ALLOW_INTS.
7559
7560 2003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7561
7562 * hashtab.c (scm_vector_to_hash_table,
7563 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7564 functions.
7565 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7566 safe and handle resizing tables.
7567
7568 * weaks.c (scm_make_weak_key_hash_table,
7569 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7570 Size argument made optional. Return resizable table if not
7571 specified.
7572
7573 2003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7574
7575 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7576 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7577
7578 2003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7579
7580 * debug.c (scm_procedure_source): Handle all objects for which
7581 procedure? is #t. (Thanks to Bill Schottstaedt.)
7582
7583 2003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7584
7585 * futures.c (mark_futures): Don't need to mark data of recycled
7586 futures.
7587 (scan_futures, cleanup_undead): Be smarter about marking
7588 futures---avoid unnecessary passes through future lists.
7589
7590 * futures.h, futures.c: New files; Introduced recycling of
7591 futures. For fine-grained threading this lifts performance to
7592 another level. We can now use parallelization in inner loops of
7593 Guile programs without impossible overhead.
7594
7595 * threads.h, threads.c: Moved futures to their own file.
7596
7597 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7598 (DOT_X_FILES): Added futures.x.
7599 (DOT_DOC_FILES): Added futures.doc.
7600 (modinclude_HEADERS): Added futures.h.
7601
7602 * threads.c, threads.h (scm_i_create_thread): Renamed from
7603 create_thread and made global.
7604
7605 * futures.c (scm_make_future): New procedure.
7606
7607 * eval.c: #include "libguile/futures.h".
7608
7609 * init.c: #include "futures.h"
7610 (scm_init_guile_1): Call scm_init_futures.
7611
7612 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7613
7614 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7615
7616 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7617 functions.
7618
7619 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7620
7621 2003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7622
7623 * threads.c (create_thread): Don't unwind dynwind chain of parent
7624 thread before creation. Just start the new thread with an empty
7625 dynwind chain.
7626
7627 2003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7628
7629 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7630
7631 2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7632
7633 * threads.c (scm_timed_wait_condition_variable): Support timed
7634 waiting also for simple condition variables.
7635
7636 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7637 of calling the procedure change-object-class.
7638
7639 2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7640
7641 * ramap.c (scm_ramapc): Typo in error message.
7642
7643 2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7644
7645 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7646 slots with instance allocation.
7647
7648 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7649 class.
7650 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7651
7652 * goops.c (scm_generic_function_methods): Support extended
7653 generic functions.
7654
7655 2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7656
7657 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
7658 Thanks to Neil for pointing this out!
7659
7660 2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7661
7662 * lang.h: Remove declarations matching definitions removed from
7663 lang.c (just below).
7664
7665 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7666
7667 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7668 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7669 and already commented out.
7670
7671 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7672 scm_lreadparen): Support reading vectors with Elisp syntax if
7673 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7674 is not currently defined, and there isn't even a configure switch
7675 to enable it yet.)
7676
7677 2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7678
7679 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7680 builds work.
7681 (EXTRA_DIST): Added version.h.in.
7682
7683 2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7684
7685 This change makes it possible for one thread to do lazy sweeping
7686 while other threads are running. Now only the mark phase need to
7687 have all threads asleep. We should look further into this issue.
7688 Presently, I've put the locking of scm_i_sweep_mutex at
7689 "conservative" places due to my current lack of knowledge about
7690 the garbage collector. Please feel free to restrict these regions
7691 further to allow for maximal parallelism!
7692
7693 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7694
7695 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7696 scm_gc_register_collectable_memory): Substitute locking of
7697 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7698 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7699 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7700 the single-thread section (which now only contains the mark
7701 phase).
7702 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7703 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7704
7705 * threads.c (gc_section_mutex): Removed.
7706
7707 2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7708
7709 * threads.c (create_thread): Clear parent field in root state in
7710 order not to unnecessarily remember dead threads.
7711
7712 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7713 (scm_trampoline_1, scm_trampoline_2): Use them.
7714
7715 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7716
7717 Partial introduction of real plugin interface.
7718
7719 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7720 (EXTRA_DIST): Added threads-plugin.c.
7721
7722 * threads-plugin.h, threads-plugin.c: New files.
7723
7724 * threads.h: #include "libguile/threads-plugin.h".
7725
7726 * threads.c: #include "libguile/threads-plugin.c".
7727
7728 * pthread-threads.c: Temporarily remove debugging functions.
7729
7730 * threads.c, threads.h (scm_yield): Added back.
7731
7732 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7733
7734 * threads.c (really_launch): Detach before unlocking
7735 thread_admin_mutex in order not to risk being joined.
7736 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7737 thread_admin_mutex locked during GC.
7738
7739 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7740 functions.
7741
7742 2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7743
7744 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7745 support for debugging mutex operations.
7746
7747 * threads.c (scm_thread): Removed filed joining_threads.
7748 (thread_print): Print thread number as well as address of thread
7749 structure.
7750 (scm_join_thread): Bugfix.
7751 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7752 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7753 scm_broadcast_condition_variable): Use the low-level API.
7754 (scm_all_threads): Return copy of thread list (to prevent
7755 unintended destruction).
7756 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
7757
7758 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7759 pthread "native" recursive mutex support.
7760
7761 2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7762
7763 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7764 Simply lock a thread C API recursive mutex.
7765 (SCM_NONREC_CRITICAL_SECTION_START,
7766 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7767 SCM_REC_CRITICAL_SECTION_END): Removed.
7768
7769 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7770 direct calls to scm_rec_mutex_lock / unlock around the three calls
7771 to scm_m_expand_body.
7772
7773 * eval.c, eval.h (promise_free): New function.
7774 (scm_force): Rewritten; Now thread-safe; Removed
7775 SCM_DEFER/ALLOW_INTS.
7776
7777 * pthread-threads.h: Added partially implemented plugin interface
7778 for recursive mutexes. These are, for now, only intended to be
7779 used internally within the Guile implementation.
7780
7781 * pthread-threads.c: New file.
7782
7783 * threads.c: Conditionally #include "pthread-threads.c".
7784
7785 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7786 thread-safe;
7787
7788 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7789 SCM_GLOBAL_REC_MUTEX): New macros.
7790
7791 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7792 macros---use mutexes instead.
7793
7794 * tags.h (SCM_IM_FUTURE): New tag.
7795
7796 * eval.c (scm_m_future): New primitive macro.
7797 (SCM_CEVAL): Support futures.
7798 (unmemocopy): Support unmemoization of futures.
7799
7800 * print.c (scm_isymnames): Name of future isym.
7801
7802 * version.c: Unmade some changes to my private copy that got
7803 committed by mistake.
7804
7805 2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7806
7807 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7808 2002-12-10.
7809
7810 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7811
7812 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7813 logical place.
7814
7815 * threads.c (create_thread): Remember root object until the handle
7816 of the new thread is on all_threads list.
7817
7818 * root.c (scm_make_root): Moved copying of fluids until after
7819 creation of root handle so that the fluids are GC protected. Also
7820 removed the critical section.
7821
7822 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7823
7824 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
7825
7826 * gc-malloc.c (malloc_mutex): New mutex.
7827 (scm_gc_malloc_prehistory): Initialize it.
7828 (scm_realloc): Serialize call to realloc
7829 (scm_calloc): Same for calloc.
7830 Thanks to Wolfgang Jaehrling!
7831 (Now we have to make sure all calls to malloc/realloc are made
7832 through scm_malloc.)
7833
7834 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
7835
7836 * threads.c (really_launch): Release heap (to prevent deadlock).
7837 (create_thread): Release heap before locking thread admin mutex.
7838
7839 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7840
7841 * threads.c (scm_i_thread_invalidate_freelists): New
7842 function.
7843
7844 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
7845
7846 * modules.c (scm_export): Inserted a return statement.
7847
7848 2002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7849
7850 * modules.c (scm_export): new function
7851
7852 * gc-card.c: add a note about malloc()/free() overhead.
7853
7854 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7855
7856 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
7857 in srcdir.
7858
7859 2002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7860
7861 These changes remove scm_ints_disabled (which hasn't has any
7862 effect in Guile for quite some time).
7863
7864 * async.c, error.h (scm_ints_disabled): Removed.
7865
7866 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
7867 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
7868 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
7869 (old_ints): Removed.
7870
7871 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
7872 critical section.
7873 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
7874 SCM_ALLOW_INTS.
7875
7876 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7877
7878 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
7879 Removed accidental #if 0 around these functions.
7880
7881 These changes are the start of support for preemptive
7882 multithreading. Marius and I have agreed that I commit this code
7883 into the repository although it isn't thoroughly tested and surely
7884 introduces many bugs. The bugs should only be exposed when using
7885 threads, though. Signalling and error handling for threads is
7886 very likely broken. Work on making the implementation cleaner and
7887 more efficient is needed.
7888
7889 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
7890 (SCM_NONREC_CRITICAL_SECTION_START,
7891 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7892 SCM_REC_CRITICAL_SECTION_END): New macros.
7893 (SCM_CRITICAL_SECTION_START/END): Defined here.
7894
7895 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
7896 the three calls to scm_m_expand_body.
7897
7898 * gc.h: #include "libguile/pthread-threads.h";
7899 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
7900
7901 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
7902 scm_t_key;
7903
7904 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
7905 access.
7906
7907 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
7908
7909 * gc-freelist.c, threads.c (really_launch): Use
7910 SCM_FREELIST_CREATE.
7911
7912 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
7913
7914 * gc.c (scm_i_expensive_validation_check, scm_gc,
7915 scm_gc_for_newcell): Put threads to sleep before doing GC-related
7916 heap administration so that those pieces of code are executed
7917 single-threaded. We might consider rewriting these code sections
7918 in terms of a "call_gc_code_singly_threaded" construct instead of
7919 calling the pair of scm_i_thread_put_to_sleep () and
7920 scm_i_thread_wake_up (). Also, we would want to have as many of
7921 these sections eleminated.
7922
7923 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
7924
7925 * inline.h: #include "libguile/threads.h"
7926
7927 * pthread-threads.h: Macros now conform more closely to the
7928 pthreads interface. Some of them now take a second argument.
7929
7930 * threads.c, threads.h: Many changes.
7931
7932 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7933
7934 * Makefile.am (version.h): Changed $^ --> $< in rule for
7935 version.h.
7936
7937 2002-12-08 Rob Browning <rlb@defaultvalue.org>
7938
7939 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
7940 (SCM_MINOR_VERSION): use @--@ substitution now.
7941 (SCM_MICRO_VERSION): use @--@ substitution now.
7942 (scm_effective_version): new function prototype.
7943
7944 * version.c (scm_effective_version): new function, also add
7945 effective-version.
7946
7947 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
7948 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
7949 SCM_LIBRARY_DIR.
7950 (version.h): generate this here rather than configure.in. This
7951 approach tracks source edits better (i.e. more immediately).
7952 Might be worth considering for other .in files too.
7953
7954 2002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
7955
7956 Reorganized thread package selection. A thread package now only
7957 implements a small set of pthread like functions and Guile
7958 implements the rest on top of that. Guile's implementation is
7959 what the "coop-pthreads" package has been previously. Support for
7960 "coop" threads has been removed until I get time to add it again.
7961
7962 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
7963 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
7964 null-threads.c, coop-pthreads.c.
7965 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
7966 pthread-threads.h.
7967
7968 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
7969
7970 * threads.h: Do not include "libguile/coop-defs.h". Include
7971 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
7972 (previously deprecated) C level thread API prototypes. They are
7973 now in the thread package specific headers, "null-threads.h" and
7974 "pthread-threads.h".
7975 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
7976 New.
7977 (scm_threads_init): Removed.
7978 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
7979 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
7980 SCM_I_THREAD_SWITCH_COUNT): Define here.
7981 (scm_single_thread_p): Removed.
7982 (scm_call_with_new_thread): Take two args directly instead of list
7983 of two args.
7984 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
7985 SCM_SET_THREAD_LOCAL_DATA): Define here.
7986
7987 * threads.c: Merged with "coop-pthreads.c".
7988
7989 * null-threads.h: Implement pthread-like API as a set of macros.
7990
7991 * pthread-threads.h: New, implement pthread-like API by deferring
7992 to pthread itself.
7993
7994 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
7995 has been lost in the reorganization.
7996
7997 2002-12-01 Mikael Djurfeldt <mdj@linnaeus>
7998
7999 The following change makes it possible to move procedure
8000 application dispatch outside inner loops. The motivation was
8001 clean implementation of efficient replacements of R5RS primitives
8002 in SRFI-1.
8003
8004 The semantics is clear: scm_trampoline_N returns an optimized
8005 version of scm_call_N (or NULL if the procedure isn't applicable
8006 on N args).
8007
8008 Applying the optimization to map and for-each increases efficiency
8009 noticeably. For example, (map abs ls) is 8 times faster than
8010 before.
8011
8012 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
8013
8014 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
8015
8016 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
8017 (map, for-each): Handle also application on two args as a special
8018 case; Use trampolines.
8019
8020 Other changes:
8021
8022 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
8023 (subr2oless): Removed.
8024 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
8025 vector GC protected.
8026
8027 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
8028 scm_out_of_range.
8029
8030 2002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8031
8032 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
8033
8034 2002-11-17 Mikael Djurfeldt <mdj@linnaeus>
8035
8036 * debug.c (scm_make_iloc): Added missing "return".
8037
8038 2002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
8039
8040 * strports.c (scm_eval_string_in_module): Validate second arg to
8041 be a module. Thanks to Arno Peters!
8042
8043 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8044
8045 * .cvsignore: remove goops.c
8046
8047 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8048
8049 * modules.c (scm_env_top_level, scm_lookup_closure_module,
8050 module_variable, scm_module_lookup_closure,
8051 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
8052 scm_system_module_env_p): Don't compare SCM values with C
8053 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
8054 over SCM_NFALSEP.
8055
8056 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8057
8058 * eval.h (SCM_MAKE_ILOC): New macro.
8059
8060 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
8061 the iloc bitpattern here.
8062
8063 2002-11-14 Mikael Djurfeldt <mdj@linnaeus>
8064
8065 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
8066 part of the API, otherwise it's difficult to write Guile
8067 extensions using non-blocking I/O => moved #include
8068 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
8069
8070 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
8071 s_unlock_mutex.
8072
8073 2002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
8074
8075 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
8076 are defined in configure.in.
8077
8078 * threads.c: Removed SCM_API from function definitions. SCM_API
8079 is only for declarations.
8080
8081 2002-11-07 Mikael Djurfeldt <mdj@linnaeus>
8082
8083 * coop-pthreads.h: Added support for thread specific data to the
8084 generic C API for the coop-pthreads case.
8085
8086 * threads.c, threads.h (scm_cond_init): Undo unintentional API
8087 change.
8088 (scm_cond_broadcast): Added missing function.
8089
8090 2002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8091
8092 * coop.c (coop_next_runnable_thread): Removed, wich should have
8093 happened when GUILE_ISELECT was hard-wired.
8094
8095 2002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
8096
8097 * Makefile.am (libguile_la_SOURCES): Added threads.c
8098 (DOT_DOC_FILES): Added threads.doc.
8099 (DOT_X_FILES): Added threads.x.
8100 (EXTRA_libguile_la_SOURCES): Removed threads.c.
8101 (noinst_HEADERS): Added coop-pthreads.c.
8102 (modinclude_HEADERS): Added coop-pthreads.h.
8103
8104 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
8105 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
8106
8107 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
8108 Thanks to Bill Schottstaedt!
8109
8110 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
8111
8112 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
8113 SCM_COPT_THREADS is defined.
8114 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
8115 is defined.
8116
8117 * coop-pthreads.c: Some harmless renamings of internal stuff.
8118 (create_thread): New, generalized version of
8119 scm_call_with_new_thread.
8120 (scm_call_with_new_thread): Use it.
8121 (scm_spawn_thread): New, use create_thread.
8122
8123 2002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
8124
8125 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
8126 start testing it now.
8127
8128 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
8129 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
8130 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
8131 is defined.
8132
8133 2002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
8134
8135 * scmsigs.c (signal_cell_handlers, install_handler_data,
8136 scm_delq_spine_x, really_install_handler, install_handler): New
8137 scheme for triggering signal handlers, to simplify take_signal.
8138 (take_signal): Simplified, to avoid race conditions.
8139 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
8140 hasn't exited yet.
8141
8142 * async.c (scm_async_click): Reset pending_asyncs, handle
8143 signal_asyncs. Don't set cdr of a non-signal async to #f.
8144 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
8145 always. Set pending_asyncs.
8146 (scm_system_async_mark_for_thread): Check that thread has not
8147 exited.
8148 (scm_unmask_signals, decrease_block): Call scm_async_click after
8149 block_asyncs becomes zero.
8150
8151 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
8152 active_asyncs.
8153
8154 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
8155 fields.
8156 * root.c (root_mark): Mark them.
8157 (make_root): Initialize them.
8158
8159 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
8160 USE_COOP_THREADS.
8161 (scm_internal_select): Define one version for USE_COOP_THREADS and
8162 one for USE_NULL_THREADS.
8163 (scm_init_iselect): Likewise.
8164
8165 * inline.h (scm_cell, scm_double_cell): Also allow
8166 USE_COPT_THREADS to not protect the slot initializers.
8167
8168 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
8169 because threads need to be initialized before the stack, but
8170 gsubrs such as scm_timed_condition_variable_wait can only be
8171 created later.
8172
8173 * threads.h: Include "coop-pthreads.h" when requested.
8174 (scm_threads_make_mutex, scm_threads_lock_mutex,
8175 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
8176 not implemented anyway.
8177 (scm_init_thread_procs, scm_try_mutex,
8178 scm_timed_condition_variable_wait,
8179 scm_broadcast_condition_variable, scm_c_thread_exited_p,
8180 scm_thread_exited_p): New prototypes.
8181 (struct timespec): Define if not already defined.
8182 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8183 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8184 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8185 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
8186 deprecated.
8187
8188 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
8189 requested.
8190 (scm_thread_exited_p): New.
8191 (scm_try_mutex, scm_broadcast_condition_variable): Newly
8192 registered procedures.
8193 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
8194 Use the latter as the procedure for "wait-condition-variable",
8195 thus offering a optional timeout parameter to Scheme.
8196 (scm_wait_condition_variable): Implement in terms of
8197 scm_timed_wait_condition_variable.
8198 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8199 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
8200 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8201 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
8202 scm_make_mutex, etc, and deprecate.
8203 (scm_init_threads): Do not create smobs, leave this to
8204 scm_threads_init. Do not include "threads.x" file.
8205 (scm_init_thread_procs): New, include "threads.x" here.
8206
8207 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
8208 scm_null_mutex_lock, scm_null_mutex_unlock,
8209 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
8210 scm_null_condvar_wait, scm_null_condvar_signal,
8211 scm_null_condvar_destroy): Removed.
8212 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
8213 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
8214 scm_cond_destory): Do not define, they are now deprecated and
8215 handled by threads.{h,c}.
8216
8217 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
8218 (scm_threads_init): Create smobs here, using the appropriate
8219 sizes.
8220 (block): Removed, now unused.
8221 (scm_c_thread_exited_p): New.
8222 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
8223 scm_null_mutex_destroy, scm_null_condvar_init,
8224 scm_null_condvar_wait, scm_null_condvar_signal,
8225 scm_null_condvar_destroy): Removed and updated users to do their
8226 task directly.
8227 (scm_try_mutex, timeval_subtract,
8228 scm_timed_wait_condition_variable,
8229 scm_broadcast_condition_variable): New.
8230 (scm_wait_condition_variable): Removed.
8231
8232 * coop-defs.h (coop_m): Added 'level' field.
8233 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8234 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8235 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8236 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
8237 define.
8238 (coop_condition_variable_broadcast): New.
8239
8240 * coop-threads.c (scm_threads_init): Create smobs here, using the
8241 appropriate sizes.
8242 (scm_c_thread_exited_p, scm_try_mutex,
8243 scm_timed_wait_condition_variable,
8244 scm_broadcast_condition_variable): New.
8245 (scm_wait_condition_variable): Removed.
8246
8247 * coop.c (coop_new_mutex_init): Initialize level.
8248 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
8249 level.
8250 (coop_condition_variable_signal): Renamed to
8251 coop_condition_variable_broadcast and reimplemented in terms of
8252 that. Thus...
8253 (coop_condition_variable_broadcast): New.
8254
8255 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
8256
8257 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
8258
8259 2002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
8260
8261 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
8262 of system headers.
8263
8264 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
8265 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
8266 give better error messages. Thanks to Bill Schottstaedt!
8267
8268 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8269
8270 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
8271 scm_definedp to scm_defined_p and deprecated scm_definedp.
8272
8273 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8274
8275 * async.h, async.c (scm_system_async): Fixed deprecation to work
8276 correctly when deprecated features are excluded.
8277
8278 2002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8279
8280 * async.c (scm_system_async_mark_for_thread): Validate thread
8281 argument.
8282
8283 * coop-threads.c (scm_i_thread_root): Do not validate argument.
8284
8285 * feature.c (scm_init_feature): Don't add 'threads' for
8286 USE_NULL_THREADS.
8287
8288 * inline.h (scm_cell, scm_double_cell): Also allow
8289 USE_NULL_THREADS to not protect the slot initializers.
8290
8291 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
8292 "USE_THREAD".
8293
8294 * Makefile.am (noinst_HEADERS): Added null-threads.c.
8295 (modinclude_HEADERS): Added null-threads.h.
8296
8297 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
8298 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
8299 (scm_init_threads): Use generic type names scm_t_mutex and
8300 scm_t_cond instead of coop_m and coop_c.
8301
8302 * null-threads.c, null-threads.h: New files.
8303
8304 2002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
8305
8306 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
8307 This is to support makes that know about "$<" only in pattern
8308 rules, like Sun's make.
8309
8310 2002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
8311
8312 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
8313 substitution. Thanks to David Allouche!
8314
8315 2002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8316
8317 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
8318 !SCM_ENABLE_DEPRECATED.
8319
8320 2002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8321
8322 * async.c (scm_system_async_mark_for_thread): Only call
8323 scm_i_thread_root when USE_THREADS is defined. Use scm_root
8324 otherwise.
8325
8326 * scmsigs.c (take_signal): Only call scm_i_thread_root when
8327 USE_THREADS is defined. Use scm_root otherwise.
8328 (scm_sigaction_for_thread): Ignore THREAD argument when
8329 USE_THREADS is not defined. Also, move THREAD argument defaulting
8330 out of HAVE_SIGACTION section, which was a bug.
8331
8332 2002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8333
8334 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
8335 signal_handlers, not the closure that is used as the async.
8336 The closure is stored in signal_handler_cells, as previously.
8337
8338 2002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
8339
8340 * root.h (scm_root_state): Added 'block_async' slot.
8341 (scm_active_asyncs): Removed abbrev.
8342 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
8343
8344 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
8345 abbrev.
8346
8347 * async.h (scm_call_with_blocked_asyncs,
8348 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8349 scm_c_call_with_unblocked_asyncs): New prototypes.
8350 (scm_mask_signals, scm_unmask_signals): Deprecated.
8351 (scm_mask_ints): Turned into a macro.
8352 * async.c (scm_mask_ints): Removed.
8353 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
8354 this should not be necessary.
8355 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
8356 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
8357 deprecation warning and check for errornous use. Set block_asyncs
8358 instead of scm_mask_ints.
8359 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
8360 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8361 scm_c_call_with_unblocked_asyncs): New.
8362
8363 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
8364 Asyncs are enabled by default.
8365
8366 2002-10-09 Neil Jerram <neil@ossau.uklinux.net>
8367
8368 * vports.c (scm_make_soft_port): Allow vector argument to carry a
8369 6th element: an input waiting thunk.
8370 (sf_input_waiting): New.
8371
8372 2002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
8373
8374 * root.c (root_mark): Mark active_asyncs slot.
8375
8376 * async.c (scm_async_click): Set the cdr of a executed handler
8377 cell to SCM_BOOL_F, not SCM_EOL.
8378 (scm_i_queue_async_cell): Queue the cell at the end of the list,
8379 and only if the handler procedure is not already present.
8380 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
8381 with SCM_BOOL_F.
8382 * scmsigs.c (scm_sigaction_for_thread): Likewise.
8383
8384 2002-10-04 Rob Browning <rlb@defaultvalue.org>
8385
8386 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
8387
8388 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
8389 scm_lt_dlopenext, and scm_lt_dlerror.
8390 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
8391 and scm_lt_dlerror.
8392 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
8393 and scm_lt_dlerror.
8394 (sysdep_dynl_init): switch to scm_lt_dlinit();
8395
8396 * Makefile.am (libguile_la_LIBADD): switch to use
8397 libguile-ltdl.la.
8398
8399 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
8400
8401 2002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
8402
8403 * scmsigs.h (scm_sigaction_for_thread): New prototype.
8404 * scmsigs.c (got_signal): Removed.
8405 (signal_handler_cells, signal_handler_threads): New.
8406 (take_signal): Queue the cell of the signal for the specified
8407 thread. Reset the signal handler on systems that don't have
8408 sigaction.
8409 (sys_deliver_signals): Removed.
8410 (close_1): New.
8411 (scm_sigaction_for_thread): Renamed from scm_sigaction and
8412 extended to also set the thread of a signal and allocate a cell
8413 for it. Keep the Scheme name "sigaction". Check that signum is
8414 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
8415 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
8416 (scm_init_scmsigs): Allocate signal_handler_cells and
8417 signal_handler_threads vectors.
8418
8419 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
8420 that system asnycs and user asyncs are separated. Reimplemented
8421 system asyncs to work per-thread.
8422
8423 * gc.c (scm_init_gc): Do not use scm_system_async.
8424
8425 * async.h (scm_asyncs_pending, scm_set_tick_rate,
8426 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
8427 Removed prototypes.
8428 (scm_i_queue_async_cell): New.
8429
8430 * __scm.h (scm_asyncs_pending_p): Removed.
8431 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
8432 scm_asyncs_pending_p.
8433
8434 * async.h (scm_system_async_mark_for_thread): New prototype.
8435
8436 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
8437
8438 * root.h (scm_root_state): Added new "active_asyncs" slot.
8439 * root.c (scm_make_root): Initialize it to SCM_EOL.
8440
8441 * coop-defs.h (coop_t): Added new "handle" slot.
8442 * coop-threads.c (all_threads, scm_current_thread,
8443 scm_all_threads, scm_i_thread_root): New.
8444 (scm_threads_init): Add main thread to all_threads.
8445 (scheme_launch_thread): Remove thread from all_threads when it
8446 terminates.
8447 (scm_call_with_new_thread): Initialize handle slot of coop_t
8448 structure and add new thread to all_threads.
8449 (scm_spawn_thread): Likewise.
8450
8451 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
8452 * threads.c (scm_current_thread, scm_all_threads): Register as
8453 primitives.
8454
8455 * dynl.c: Use scm_lt_ prefix for libltdl functions.
8456
8457 2002-09-29 Neil Jerram <neil@ossau.uklinux.net>
8458
8459 * script.c (scm_compile_shell_switches): Fix bad spelling of
8460 `explicitly' in comment.
8461
8462 2002-09-28 Neil Jerram <neil@ossau.uklinux.net>
8463
8464 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
8465 Refer to provided? in doc string rather than deprecated feature?.
8466
8467 2002-09-24 Gary Houston <ghouston@arglist.com>
8468
8469 * inline.h (scm_double_cell): prevent reordering of statements
8470 with any following code (for GCC 3 strict-aliasing).
8471 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8472 the earlier version of the reordering prevention.
8473
8474 2002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8475
8476 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
8477
8478 2002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8479
8480 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8481 protection.
8482
8483 2002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8484
8485 * inline.h: include stdio.h
8486
8487 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8488
8489 2002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8490
8491 * gc-segment.c (scm_i_make_initial_segment): check user settings
8492 for sanity.
8493
8494 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8495 sanity.
8496
8497 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
8498
8499 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8500
8501 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
8502 these won't ever wrap around with high memory usage. Thanks to
8503 Sven Hartrumpf for finding this.
8504
8505 * gc-freelist.c: include <stdio.h>
8506
8507 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8508
8509 2002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8510
8511 * vectors.h (SCM_VECTOR_REF): New.
8512
8513 * snarf.h (SCM_DEFINE_PUBLIC): New.
8514
8515 2002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8516
8517 * socket.c (scm_addr_vector): Added size of address to arguments.
8518 Use it to avoid accessing a non-existent path in a sockaddr_un.
8519 Changed all callers.
8520
8521 2002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8522
8523 * gc.h: remove DOUBLECELL card flags.
8524
8525 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8526 scm_realloc().
8527
8528 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8529 init loop; handle this from scm_init_card_freelist()
8530
8531 * gc-card.c (scm_init_card_freelist): init bit vector here.
8532
8533 * numbers.c (scm_make_real): prevent reordering of statements
8534 num2float.i.c (FLOAT2NUM): idem
8535
8536 2002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8537
8538 * eval.h: prepend libguile/ to include path
8539
8540 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8541
8542 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
8543 years. Thanks to Martin Grabmüller!
8544
8545 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8546
8547 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8548 unsigned numbers for computing minimum heap increment. This
8549 prevents weird results when a a negative minimum increment is
8550 computed.
8551
8552 2002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8553
8554 * gc_os_dep.c: When we have __libc_stack_end, use that directly
8555 instead of the old tricks.
8556
8557 * guile-snarf.in: Do not expect the input file to be the first
8558 argument after the optional "-o" option, just pass everything to
8559 the pre-processor without extracting the input file name.
8560
8561 2002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8562
8563 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
8564 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
8565
8566 2002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8567
8568 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8569 Bill Schottstaedt for the bug report
8570
8571 2002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8572
8573 * print.c (scm_iprin1): Print primitives generics always as
8574 "primitive-generic" even when they have no primitive methods yet.
8575
8576 2002-08-17 Gary Houston <ghouston@arglist.com>
8577
8578 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8579 call.
8580
8581 2002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8582
8583 * ports.c (scm_add_to_port_table): small bugfix.
8584
8585 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8586 malloc.
8587
8588 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8589 only use SCM_MIN_HEAP_SEG_SIZE.
8590
8591 * ports.c (scm_add_to_port_table): add backwards compatibility
8592 function
8593
8594 * ports.h: use scm_i_ prefix for port table and port table size.
8595
8596 2002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8597
8598 * vports.c (scm_make_soft_port): Initialize pt variable.
8599
8600 2002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8601
8602 * strports.h (scm_c_eval_string_in_module,
8603 scm_eval_string_in_module): New prototypes.
8604 * strports.c (scm_eval_string_in_module): New, but use
8605 "eval-string" as the Scheme name and make second parameter
8606 optional.
8607 (scm_eval_string): Implement using scm_eval_string_in_module.
8608 (scm_c_eval_string_in_module): New.
8609 Thanks to Ralf Mattes for the suggestion!
8610
8611 2002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8612
8613 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8614 message and abort.
8615
8616 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8617
8618 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8619 stead of scm_t_port*. The function now takes a tag argument.
8620
8621 2002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8622
8623 * gc.h: add scm_debug_cells_gc_interval to public interface
8624
8625 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8626
8627 * gc.c (scm_i_expensive_validation_check): separate expensive
8628 validation checks from cheap ones.
8629
8630 2002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8631
8632 * read.c (scm_input_error): new function: give meaningful error
8633 messages, and throw read-error
8634
8635 * gc-malloc.c (scm_calloc): add scm_calloc.
8636
8637 2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8638
8639 * tags.h: remove GC bits documentation from the tags table.
8640
8641 * read.c (INPUT_ERROR): Prepare for file:line:column error
8642 messages for errors in scm_lreadr() and friends.
8643
8644 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8645
8646 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
8647 implementation).
8648 (scm_gc_calloc): new function
8649
8650 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8651
8652 * ports.c (scm_new_port_table_entry): init port entry to 0
8653 completely.
8654
8655 * ports.c (scm_new_port_table_entry): change function from
8656 scm_add_to_port_table. This prevents cells with null-pointers from
8657 being exposed to GC.
8658
8659 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
8660 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
8661
8662 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
8663 to gc-stats.
8664
8665 * numbers.c (big2str): return "0" for 0 iso. ""
8666
8667 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8668 private-gc.h: new file
8669
8670 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8671 sweeping. More documentation in workbook/newgc.text
8672
8673 2002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8674
8675 * random.c (rstate_free): Return zero.
8676
8677 2002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8678
8679 * environments.c (remove_key_from_alist): Removed.
8680
8681 (obarray_remove): Simplified.
8682
8683 2002-07-24 Stefan Jahn <stefan@lkcc.org>
8684
8685 * continuations.h: ia64: Include <signal.h> before
8686 <sys/ucontext.h>.
8687
8688 2002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8689
8690 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8691
8692 2002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8693
8694 * goops.c (scm_compute_applicable_methods): use
8695 scm_remember_upto_here_1 iso scm_remember_upto_here
8696
8697 * macros.c: include deprecation.h
8698
8699 * vectors.c (scm_vector_move_right_x): remove side effect in
8700 macro arg.
8701 (scm_vector_move_left_x): idem.
8702
8703 * net_db.c, posix.c, socket.c: variable naming: change ans to
8704 result.
8705
8706 * sort.c (scm_merge_vector_x): accept vector as argument
8707 iso. SCM*. This is needed for full GC correctness.
8708
8709 * gc.h: undo previous undocumented changes related to #ifdef
8710 GENGC.
8711
8712 2002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8713
8714 * *.c: add space after commas everywhere.
8715
8716 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8717 Document cases where SCM_WRITABLE_VELTS() is used.
8718
8719 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8720 SCM_VELTS() return a const pointer
8721 (SCM_VECTOR_SET): add macro.
8722
8723 2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8724
8725 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8726 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8727 Deprecated the special kind of built-in dynamic syntax transformer
8728 that was inaccurately named "macro". Note: The built-in syntax
8729 transformers that are named "mmacro" or "memoizing-macro" still
8730 exist, and it is these which come much closer to what one would
8731 call a macro.
8732
8733 2002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8734
8735 * eval.c (unmemocopy): Fix for
8736 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8737 with internal definitions and local-eval).
8738
8739 2002-07-12 Gary Houston <ghouston@arglist.com>
8740
8741 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8742 defined. They don't do anything useful, especially since the
8743 only case where DYNAMIC_LINKING is undefined seems to be
8744 when --with-modules=no is given to configure, which is basically
8745 requesting that the "dynamic linking module" be omitted.
8746
8747 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8748 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8749
8750 * extensions.c (load_extension): check DYNAMIC_LINKING for
8751 scm_dynamic_call.
8752 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8753 scm_init_dynamic_linking.
8754
8755 2002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8756
8757 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8758 check for Cygwin when including <winsock2.h>, this is already
8759 check for by configure. Thus, revert change from 2002-07-07.
8760
8761 2002-07-10 Gary Houston <ghouston@arglist.com>
8762
8763 * eq.c: include <string.h>
8764 * dynl.c: docstring editing.
8765
8766 2002-07-09 Gary Houston <ghouston@arglist.com>
8767
8768 * dynl.c (scm_dynamic_call): docstring editing.
8769
8770 2002-07-08 Rob Browning <rlb@defaultvalue.org>
8771
8772 * gc_os_dep.c: HURD fixes.
8773
8774 2002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8775
8776 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8777
8778 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8779 this should be compiled for BUILD host.
8780 Override default rule for
8781 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8782 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8783 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8784
8785 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8786 <winsock2.h> on Cygwin even when we have it.
8787
8788 2002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8789
8790 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8791 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8792 the code. Full number of arguments checking of closures is
8793 mandatory now. However, the option to disable the checking has
8794 most probably not been used anyway.
8795
8796 2002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8797
8798 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8799 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8800 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8801 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8802 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8803 (scm_source_properties, scm_set_source_properties_x,
8804 scm_source_property): Removed compile time option SCM_RECKLESS to
8805 clean up the code. Full number of arguments checking of closures
8806 is mandatory now. However, the option to disable the checking has
8807 most probably not been used anyway.
8808
8809 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8810 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8811
8812 2002-06-30 Gary Houston <ghouston@arglist.com>
8813
8814 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8815 do anything useful. Added a comment about need for a mutex if
8816 pre-emptive threading is supported.
8817
8818 * posix.c (scm_convert_exec_args), dynl.c
8819 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8820 allocate_string_pointers. 2) simplified: don't reallocate the
8821 strings, just make an array of pointers 3) avoid memory leaks on
8822 error 4) let the procedure report errors in its own name.
8823 Consequences: 1) the procedures now assume that SCM strings are
8824 nul-terminated, which should always be the case. 2) Since strings
8825 are not reallocated, it's now possible for strings passed to
8826 dynamic-args-call to be mutated.
8827
8828 2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8829
8830 * __scm.h, eval.c, eval.h: Removed compile time option
8831 MEMOIZE_LOCALS to clean up the code. Now, caching of local
8832 variable positions during memoization is mandatory. However, the
8833 option to disable the caching has most probably not been used
8834 anyway.
8835
8836 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
8837
8838 * print.c (scm_simple_format): Print missing part of format before
8839 ~% control. Thanks to Daniel Skarda!
8840
8841 2002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
8842
8843 * mkstemp.c: Added exception notice to license statement.
8844
8845 2002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
8846
8847 * numbers.c (mem2ureal): When returning an inexact zero, make sure
8848 it is represented as a floating point value so that we can change
8849 its sign.
8850
8851 From John W. Eaton <jwe@bevo.che.wisc.edu>
8852
8853 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
8854
8855 2002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
8856
8857 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
8858 in addition to `i386'. Thanks to Dale P. Smith.
8859
8860 2002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
8861
8862 * eq.c (real_eqv): New.
8863 (scm_eqv_p): Use it when comparing reals and complexes.
8864
8865 * numbers.c: Include <string.h>, for strncmp.
8866 (mem2complex): Do not create negative NaNs.
8867 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
8868 NaN.
8869 (scm_inexact_to_exact): Signal error when converting a NaN.
8870
8871 2002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8872
8873 * posix.c (scm_putenv): Handle removing variables explicitely by
8874 calling unsetenv.
8875
8876 From John W. Eaton.
8877
8878 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
8879 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
8880 and scm_nan.
8881 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
8882 [SCO && ! HAVE_ISINF] (isinf): New function.
8883 (xisinf, xisnan): New functions.
8884 (IS_INF): Delete.
8885 (isfinite): Define in terms of xisinf.
8886 (scm_inf_p, scm_nan_p): New functions.
8887 (guile_Inf, guile_NaN): New file-scope vars.
8888 (guile_ieee_init): New function.
8889 (scm_inf, scm_nan): New functions.
8890 (idbl2str): Handle Inf and NaN. Remove funny label and
8891 corresponding gotos.
8892 (ALLOW_DIVIDE_BY_ZERO): New macro.
8893 (scm_divide): Allow division by zero to occur if
8894 ALLOW_DIVIDE_BY_ZERO is defined.
8895 Handle bignums and ints as special cases.
8896
8897 Additional stuff by me:
8898
8899 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
8900 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
8901 (iflo2str): Don't output a '+' for negative numbers or for Inf and
8902 NaN. They will provide their own sign.
8903 (scm_divide): Only allow divides by inexact zeros. Dividing by
8904 exact zeros still signals an errors.
8905
8906 2002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
8907
8908 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
8909 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
8910 (scm_slot_exists_p): Rename from scm_slots_exists_p.
8911 Thanks to Andreas Rottmann.
8912
8913 2002-04-20 Gary Houston <ghouston@arglist.com>
8914
8915 * removal of unused fields in root state (thanks to Christopher
8916 Cramer for pointing out the disuse.)
8917 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
8918 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
8919
8920 * root.c (root_mark): don't mark them.
8921 (scm_make_root): don't set them to #f.
8922 * init.c (scm_init_standard_ports): don't initialise with the
8923 default ports.
8924
8925 2002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
8926
8927 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
8928 cpp_sig_symbols.c.
8929
8930 2002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
8931
8932 * guile-snarf.in: Do not clean input file. This would write to
8933 the $(srcdir) during a VPATH build, which is not allowed. It also
8934 isn't needed since it only works when an output filename has been
8935 specified and in that case we don't need to clean the input file
8936 because the output file will already exist.
8937
8938 2002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
8939
8940 * guile-snarf: Install the trap for removing $cleanfile only when
8941 the value of $cleanfile is actually known.
8942
8943 2002-04-10 Rob Browning <rlb@defaultvalue.org>
8944
8945 * .cvsignore: add versiondat.h and *.c.clean.c.
8946
8947 2002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8948
8949 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
8950 function, replaces macro SRCBRKP.
8951
8952 (SRCBRKP): Deprecated.
8953
8954 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
8955 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
8956 temporary variable.
8957
8958 2002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8959
8960 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
8961 CHECK_EXIT and removed all references to them.
8962
8963 2002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8964
8965 * debug.h (scm_ready_p, debug_print): Removed declarations.
8966
8967 * eval.c (EVALCELLCAR): Removed.
8968
8969 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
8970 operation from condition.
8971
8972 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
8973
8974 * guile-snarf.in: When the output filename is "-", write to
8975 stdout. When no "-o" option is given, use "-" as the output
8976 filename (i.e., stdout). Only 'clean' the inputfile or remove the
8977 output file on error when the output file name is not "-". Define
8978 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
8979
8980 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
8981
8982 2002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
8983
8984 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
8985 and the corresponding goto statements. Removed redundant code.
8986
8987 2002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8988
8989 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
8990 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
8991 Re-enabled handing of rpsubrs and asubrs.
8992
8993 2002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
8994
8995 * eval.c (SIDEVAL): Removed.
8996
8997 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
8998 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
8999 argument checking order for set! to locals, variables and symbols.
9000 Improvements to control structure. Removed some uses of arg1 and
9001 arg2 as temporary variables.
9002
9003 2002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
9004
9005 * guile-snarf.in: Remove "--compat=1.4" support.
9006 Add "-d" and "-D" support.
9007
9008 (deprecated_list): New var.
9009 (compat_mode_clean_xxx): Delete.
9010 (grep_deprecated): New func.
9011 ("main"): If "-d" or "-D", call `grep_deprecated'.
9012
9013 2002-03-15 Neil Jerram <neil@ossau.uklinux.net>
9014
9015 * hooks.h: Change scm_t_c_hookype_t everywhere to
9016 scm_t_c_hook_type.
9017
9018 Docstring fixes:
9019
9020 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
9021
9022 * ports.c (scm_sys_make_void_port): Use `@file'.
9023
9024 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
9025 than `else'.
9026
9027 * macros.c (scm_makmacro): Don't say that the form replaces its
9028 source, because it doesn't.
9029 (scm_makmmacro): Clarify difference between this and scm_makmacro.
9030
9031 * backtrace.c (scm_display_error), filesys.c (scm_umask,
9032 scm_select, scm_basename), goops.c (scm_method_generic_function),
9033 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
9034 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
9035 spelling mistakes.
9036
9037 * debug.c (scm_debug_options), eval.c
9038 (scm_eval_options_interface), read.c (scm_read_options): Change
9039 incorrect @var in docstring to @code.
9040
9041 2002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
9042
9043 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
9044
9045 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
9046 guile-snarf can remove trailing non-init code.
9047
9048 * guile-snarf.in (modern_snarf): Remove everything following and
9049 including "^:^" from the output.
9050
9051 2002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9052
9053 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
9054
9055 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
9056
9057 2002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
9058
9059 * guile-snarf.in: Update copyright.
9060 Rewrite to internalize error handling.
9061 Add "--compat=1.4" handling.
9062 Add commentary.
9063
9064 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
9065 (snarfcppopts): New var.
9066 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
9067 (.c.doc): Use $(snarfcppopts).
9068
9069 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
9070 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
9071 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
9072 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
9073 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
9074 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
9075 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
9076 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
9077 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
9078 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
9079 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
9080 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
9081 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
9082 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
9083
9084 2002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9085
9086 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
9087 The next step will be to remove the union 't' and simplify the
9088 code of SCM_CEVAL that way.
9089
9090 2002-03-12 Neil Jerram <neil@ossau.uklinux.net>
9091
9092 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
9093 rreadfds, rwritefds, rexceptfds): Made static.
9094
9095 * gc.c (terminating), fports.c (terminating): Renamed
9096 scm_i_terminating.
9097
9098 2002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
9099
9100 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
9101 potential overflow problems. Thanks to John W Eaton!
9102
9103 * strop.c (string_capitalize_x): Treat characters as unsigned so
9104 that 8-bit chars work. Thanks to David Pirotte!
9105
9106 2002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9107
9108 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
9109 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
9110 proc as temporary variables. Introduced temporary variables with
9111 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9112 by a more explicit predicate in some places.
9113
9114 2002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
9115
9116 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
9117 Added lots of comments regarding the implementation of #@dispatch.
9118 Changed intra-procedure communication to use t.arg1 instead of
9119 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
9120 variables. Introduced temporary variables with hopefully
9121 descriptive names for clarification. Replaced SCM_N?IMP by a more
9122 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
9123 of computing the expression explicitly. Eliminate now unused
9124 label nontoplevel_cdrxbegin.
9125
9126 * goops.h (SCM_INSTANCE_HASH): New macro.
9127
9128 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
9129
9130 2002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9131
9132 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
9133 "guile-snarf" moved back from `noinst_SCRIPTS'.
9134
9135 2002-03-08 Neil Jerram <neil@ossau.uklinux.net>
9136
9137 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
9138 exists when adding a source property other than those that are
9139 handled explicitly, add the new property to the SRCPROPS obj's
9140 plist.
9141
9142 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
9143 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
9144
9145 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
9146 debug.status. It isn't needed, and it can overflow the bits
9147 reserved for it (which may lead to a segv or a GC abort).
9148
9149 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9150
9151 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
9152 side-effecting operations from conditions and macro calls.
9153 Replaced SCM_N?IMP by a more explicit predicate in some places.
9154 Minimized the scope of some variables.
9155
9156 2002-03-02 Stefan Jahn <stefan@lkcc.org>
9157
9158 * convert.i.c: Fixed int <-> long conversions which would have
9159 failed if their sizes were different.
9160
9161 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9162
9163 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
9164 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
9165 as temporary variables. Removed side-effecting operations from
9166 conditions and macro calls. Introduced temporary variables with
9167 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9168 by a more explicit predicate in some places. Removed code that
9169 was conditionally compiled if SICP was defined - which it never
9170 is.
9171
9172 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9173
9174 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
9175 Removed some uses of t.arg1 and proc as temporary variables.
9176 Removed side-effecting operations from conditions and macro calls.
9177 Introduced temporary variables with hopefully descriptive names
9178 for clarification. Replaced SCM_N?IMP by a more explicit
9179 predicate in some places.
9180
9181 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9182
9183 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
9184 explicit predicate in some places.
9185
9186 (CHECK_EQVISH): Removed.
9187
9188 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
9189 variables. Removed side-effecting operations from conditions and
9190 macro calls. Introduced temporary variables for clarification.
9191 Sorted if-else-if check for the type of the last form in a list by
9192 frequency. Avoided some unnecessary tail-recursion calls.
9193
9194 2002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9195
9196 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
9197 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
9198 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
9199 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
9200 scm_cell and all its uses to scm_t_cell in accordance to Guile's
9201 naming scheme for types.
9202
9203 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
9204 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
9205 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
9206 (scm_make_environment), eval.c (scm_closure), fports.c
9207 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
9208 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
9209 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
9210 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
9211 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
9212 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
9213 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
9214 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
9215 scm_alloc_cell to scm_cell.
9216
9217 * environments.c (core_environments_observe), gc.c
9218 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
9219 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
9220 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
9221 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
9222 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
9223 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
9224 (allocate_weak_vector): Renamed scm_alloc_double_cell to
9225 scm_double_cell.
9226
9227 2002-02-27 Stefan Jahn <stefan@lkcc.org>
9228
9229 * convert.i.c, convert.c: Better range checking.
9230
9231 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
9232
9233 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
9234 Windows (MinGW).
9235
9236 2002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
9237
9238 * Makefile.am: Update path to pre-inst-guile automake frag.
9239
9240 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9241
9242 * gc.c (scm_gc_sweep): Make it compile even when deprecated
9243 features are excluded.
9244
9245 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9246
9247 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
9248
9249 2002-02-25 Gary Houston <ghouston@arglist.com>
9250
9251 * convert.c: include <string.h> for convert_i.c.
9252
9253 2002-02-24 Rob Browning <rlb@defaultvalue.org>
9254
9255 * .cvsignore: add stamp-h1.
9256
9257 2002-02-21 Neil Jerram <neil@ossau.uklinux.net>
9258
9259 * unif.c (scm_array_to_list): Correct name, which had been
9260 accidentally changed to scm_t_arrayo_list!
9261
9262 2002-02-20 Mikael Djurfeldt <mdj@linnaeus>
9263
9264 * gc.c (scm_gc_sweep): Print an error message when aborting due to
9265 underflowing scm_mallocated.
9266
9267 2002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9268
9269 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
9270 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
9271 Reimplemented using the new scm_gc_malloc, etc., functions and
9272 deprecated.
9273
9274 2002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
9275
9276 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
9277 to `noinst_PROGRAMS'.
9278 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
9279 (noinst_PROGRAMS, noinst_SCRIPTS): New.
9280
9281 2002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9282
9283 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
9284 non-zero is returned from a port or smob free function.
9285 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
9286 scm_gc_register_collectable_memory,
9287 scm_gc_unregister_collectable_memory, scm_gc_malloc,
9288 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
9289
9290 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
9291 debug-malloc.c, dynl.c, environments.c, environments.h,
9292 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
9293 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
9294 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
9295 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
9296 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
9297 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
9298 appropriate. Return zero from smob and port free functions.
9299
9300 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
9301
9302 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
9303 messages while the GC is running.
9304 (scm_c_issue_deprecation_warning_fmt): New.
9305
9306 * fports.c (scm_setvbuf): Reset read buffer to saved values when
9307 it is pointing to the putback buffer.
9308
9309 2002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9310
9311 * gsubr.c (create_gsubr): On "too many args" error,
9312 also display arg count and name. Thanks to Bill Schottstaedt.
9313
9314 2002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
9315
9316 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
9317
9318 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
9319 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
9320 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
9321
9322 * guile-snarf-docs-texi.in: Bye bye.
9323
9324 2002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9325
9326 * symbols.c (scm_make_symbol): Fix typo in docstring.
9327
9328 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9329 scm_make_symbol): New prototypes.
9330
9331 2002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
9332
9333 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
9334 (SCM_SYMBOL_INTERNED_P): New.
9335 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
9336 SCM_MAKINUM since hash values can well be bignums.
9337 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
9338 This signals a interned symbol.
9339 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9340 scm_make_symbol): New.
9341
9342 * print.c (scm_iprin1): Print uninterned symbols unreadably.
9343
9344 2002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
9345
9346 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
9347 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
9348 Thanks to Dave Love.
9349
9350 2002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
9351
9352 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
9353 This might help to make unintended clashes less likely.
9354 (scm_string_to_symbol): Protect the string until the symbols is
9355 created.
9356
9357 2002-01-31 Stefan Jahn <stefan@lkcc.org>
9358
9359 * convert.c, convert.h, convert.i.c: New files containing C
9360 array to Scheme conversion helpers meant to be replacement
9361 functions for the deprecated gh interface.
9362
9363 * Makefile.am: Setup rules for new `convert.*' files.
9364
9365 2002-01-28 Stefan Jahn <stefan@lkcc.org>
9366
9367 * symbols.c (scm_c_symbol2str): New function, replacement for
9368 `gh_scm2newsymbol()'.
9369
9370 * strings.c (scm_c_substring2str): New function. Proper
9371 replacement for `gh_get_substr()'.
9372
9373 * socket.c: Include `stdint.h' if available for the `uint32_t'
9374 declaration.
9375
9376 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
9377 compiler warning).
9378
9379 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
9380
9381 2002-01-22 Neil Jerram <neil@ossau.uklinux.net>
9382
9383 Other changes unrelated to Elisp...
9384
9385 * eval.c (scm_m_if): Use s_if rather than repeating string literal
9386 "if".
9387 (comments): Fix a few typos.
9388 (scm_for_each): Add parentheses around oddly unparenthesized
9389 if/while conditions.
9390
9391 * read.c (scm_read_opts): Add full stop at end of doc for
9392 `keywords' option.
9393
9394 * script.c (scm_compile_shell_switches): Use scm_str2symbol
9395 instead of gh_symbol2scm.
9396
9397 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
9398 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
9399
9400 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
9401 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
9402
9403 First batch of changes for Elisp support...
9404
9405 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
9406 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
9407 throw.c, vectors.c, weaks.c: Add #include for lang.h.
9408
9409 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
9410 conditionalize compilation and initialization of Elisp support
9411 function.
9412
9413 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
9414 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
9415 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
9416 filesys.c (fill_select_type, retrieve_select_type), fluids.c
9417 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
9418 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
9419 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
9420 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
9421 options.c (change_option_setting, scm_options), posix.c
9422 (environ_list_to_c), print.c (scm_iprlist), throw.c
9423 (scm_exit_status), vectors.c (scm_vector), weaks.c
9424 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
9425
9426 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
9427 just SCM_FALSEP.
9428
9429 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
9430 of just SCM_BOOLP.
9431
9432 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
9433 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
9434 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
9435 (scm_m_atfop): Support function aliasing. Support both function
9436 args, which need transformation, and macro args, which do not.
9437 Add explanatory comments.
9438 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
9439 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
9440 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
9441 SCM_NULLP || SCM_NILP instead of checks against (removed)
9442 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
9443 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
9444
9445 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
9446 scm_m_while, scm_nil_eq): Commented out; I don't think we need
9447 these, but I don't want to remove them yet, just in case.
9448 (scm_init_lang): Define `%nil' variable on Scheme level to hold
9449 Elisp nil value.
9450
9451 * lang.h (SCM_NILP): Test against Elisp nil value instead of
9452 against (removed) scm_lisp_nil.
9453 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
9454 (SCM_NULL_OR_NIL_P): New.
9455
9456 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
9457 SCM_VALIDATE_NULL.
9458
9459 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
9460 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
9461 value).
9462
9463 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
9464 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
9465 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9466 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9467
9468 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9469 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9470 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9471 Numbering shifted down accordingly.
9472 (SCM_ELISP_NIL): New IFLAG.
9473
9474 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
9475
9476 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9477
9478 * eval.c: Removed outdated references to "everr". Improved some
9479 comments.
9480
9481 (scm_deval_args, deval_args): Renamed scm_deval_args to
9482 deval_args, since it is not part of the interface.
9483
9484 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9485 use references to debug.vect[0] before it exists. Add parentheses
9486 to switch statement.
9487
9488 * goops.h: Added local emacs variables.
9489
9490 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9491
9492 * eval.[ch] (scm_deval_args): Made static.
9493
9494 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9495 test.
9496
9497 * strings.c (scm_c_string2str): Clarified comment. Replaced
9498 THINKME by FIXME for uniformness. Removed question about whether
9499 arguments need to be protected from garbage collection: Arguments
9500 must be protected as any other variable.
9501
9502 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9503
9504 * procs.h (SCM_CLOSURE_BODY): New Macro.
9505
9506 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9507 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9508 get_slot_value, set_slot_value), procs.c
9509 (scm_procedure_documentation), sort.c (closureless), stacks.c
9510 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9511 SCM_CLOSURE_BODY.
9512
9513 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9514
9515 2001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9516
9517 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9518 use "cp" instead.
9519
9520 2001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9521
9522 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9523 everywhere.
9524
9525 * continuations.c (scm_make_continuation): Do not retain the
9526 throw_value when the continuation is invoked.
9527
9528 2001-12-08 Stefan Jahn <stefan@lkcc.org>
9529
9530 * strings.c (scm_c_string2str): New function. Converts a
9531 given Scheme string into a C string. Also put in two
9532 THINKME's regarding the malloc policy for the missing converter
9533 routines.
9534
9535 2001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9536
9537 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9538 gh_symbol2scm.
9539
9540 2001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9541
9542 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9543 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9544
9545 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9546 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9547 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9548 macros.
9549
9550 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9551
9552 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9553 SCM_GC_CELL_* macros when accessing free cells.
9554
9555 2001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9556
9557 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
9558 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
9559 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9560 * strings.h (SCM_MAKE_STRING_TAG): New.
9561 * procs.h (SCM_MAKE_CCLO_TAG): New.
9562 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9563
9564 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9565 !SCM_ENABLE_DEPRECATED.
9566
9567 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9568 New.
9569
9570 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9571 signal handlers are allowed to divert the flow of control. Call
9572 scm_system_async_mark_from_signal_handler instead of
9573 scm_system_async_mark.
9574
9575
9576 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9577 scm_alloc_double_cell in their place.
9578
9579 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9580 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9581 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9582 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9583 scm_deprecated_newcell and scm_deprecated_newcell2.
9584
9585 gc.c (scm_tc16_allocated): Only define when including deprecated
9586 features.
9587 (scm_debug_newcell, scm_debug_newcell2): Removed.
9588 (scm_init_storage): Do not initialize scm_tc16_allocated.
9589 (scm_init_gc): Do it here.
9590 (allocated_mark): New, from old code.
9591 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9592
9593 * inline.c, inline.h: New files.
9594 * Makefile.am: Added them in all the right places.
9595
9596 * _scm.h: Include "libguile/inline.h".
9597
9598 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9599 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9600 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9601 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9602 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9603 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9604 scm_alloc_double_cell, respectively.
9605
9606 2001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9607
9608 * modules.c (scm_c_use_module): Adapt to changes to
9609 `process-use-modules'.
9610
9611 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9612
9613 * numbers.c (scm_divide): Fix more division by zero errors.
9614
9615 2001-11-21 Gary Houston <ghouston@arglist.com>
9616
9617 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9618 obsolete. autogen.sh says:
9619 invalid unused variable name: `OMIT_DEPENDENCIES'
9620
9621 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9622
9623 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9624 reporting the bug.
9625
9626 2001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9627
9628 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9629 Thanks to Eric Gillespie, Jr!
9630
9631 2001-11-21 Stefan Jahn <stefan@lkcc.org>
9632
9633 * win32-socket.c (getservent, setservent, endservent,
9634 getprotoent, setprotoent, endprotoent): New functions.
9635 Appropriate replacements for M$-Windows.
9636
9637 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9638 these definitions for GUILE_DEBUG.
9639
9640 * net_db.c: Include "win32-socket.h" if compiling with a native
9641 M$-Windows compiler. Include some pieces of code (protoent and
9642 servent interface) protected by HAVE_* macros when using a
9643 native M$-Windows compiler.
9644
9645 2001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9646
9647 * modules.c (scm_c_export): Do nothing when the first argument is
9648 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9649
9650 2001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9651
9652 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9653 also include `buildstamp'.
9654
9655 2001-11-18 Rob Browning <rlb@defaultvalue.org>
9656
9657 * version.c
9658 (s_scm_major_version): use SCM_MAJOR_VERSION.
9659 (s_scm_minor_version): use SCM_MINOR_VERSION.
9660 (s_scm_micro_version): use SCM_MICRO_VERSION.
9661 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9662 SCM_MICRO_VERSION.
9663
9664 * version.h.in
9665 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9666 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9667 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9668
9669 2001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9670
9671 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9672 Rewrite docstrings without reference to substring-move-left/right,
9673 since the latter no longer exist.
9674
9675 2001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9676
9677 * eval.c: Removed bogus comment about acros.
9678
9679 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9680 Minimize scope of local variable. Eliminate dependency on
9681 macro DEBUG_EXTENSIONS.
9682
9683 (s_splicing): New error message string.
9684
9685 (scm_m_body): Issue 'bad body' message rather than 'missing
9686 expression' message.
9687
9688 (scm_m_quote): Eliminate unnecessary copying.
9689
9690 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9691 checking of the body to scm_m_body.
9692
9693 (scm_m_do): Move comment to function header. Rename arg1 to
9694 binding. Made the code a bit easier to read.
9695
9696 (evalcar): Removed.
9697
9698 (iqq): Added a comment. Changed the depth parameter to
9699 unsigned. Use size_t for vector lengths. Make sure vector object
9700 is gc protected as long as its contents are read. Add some syntax
9701 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9702 control structure a bit.
9703
9704 (scm_m_delay): Added comment about the implementation of
9705 scm_m_delay.
9706
9707 (scm_m_define): Add comment about guile's currying define
9708 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9709 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9710
9711 (scm_m_letrec1): Removed. Part of the functionality is taken
9712 over by the new function 'transform_bindings'.
9713
9714 (transform_bindings): New function. Takes over some of the
9715 functionality of removed function 'scm_m_letrec1', namely to split
9716 a list of bindings into a reversed list of variables and a list of
9717 initializers.
9718
9719 (scm_m_letrec): Call 'transform_bindings'.
9720
9721 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9722 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9723 test. Use 'transform_bindings'. Fixed scoping error with named
9724 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9725 Jerram for suggesting the fix). Cleaned up the control structure
9726 a bit.
9727
9728 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9729 unnecessary consing. Eliminated unnecessary
9730 SCM_DEFER/ALLOW_INTS.
9731
9732 (SCM_CEVAL): Un-obfuscated some loops.
9733
9734 2001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9735
9736 * gc.h (scm_unhash_name): Old declaration removed.
9737
9738 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9739 @code{primitive-eval}.
9740
9741 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9742 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9743 Change @deffnx lines in docstrings to say {Scheme Procedure}
9744 rather than primitive or procedure.
9745
9746 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9747 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9748 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9749 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9750 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9751 (scm_string_split, scm_string_ci_to_symbol), strings.c
9752 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9753 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9754 Docstring fixes and improvements reflecting edits that have been
9755 made in the reference manual source.
9756
9757 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9758 scm_object_property, scm_set_object_property_x): Remove invalid
9759 @deffnx lines for corresponding procedure property primitives.
9760
9761 These changes add a @deffnx C function declaration and function
9762 index entries for each Guile primitive to the copy of the doc
9763 snarf output that is used for reference manual synchronization.
9764 Online help is unchanged.
9765
9766 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9767 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9768 name to SCM_SNARF_DOCS.
9769
9770 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9771 snarf-check-and-output-texi.
9772
9773 * Makefile.am (guile-procedures.texi): New rule.
9774 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9775 Changed so that the last stage of doc snarfing is now performed
9776 twice, once to produce guile-procedures.txt for online help, and
9777 once to produce guile.texi for reference manual synchronization.
9778
9779 2001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9780
9781 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9782 safely usable as a single statement followed by a ';', for example
9783 in an if statement.
9784
9785 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9786
9787 2001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9788
9789 * random.c (scm_random_solid_sphere_x,
9790 scm_random_hollow_sphere_x): Correct "shere" typos.
9791
9792 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9793
9794 * version.c (scm_version): Update docstring to include
9795 `micro-version'.
9796
9797 2001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9798
9799 * modules.c (scm_c_export): Call va_end after collecting the
9800 symbols.
9801
9802 * strop.h, strop.c (scm_substring_move_left_x,
9803 scm_substring_move_right_x): Removed.
9804
9805 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9806 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9807 configure does.
9808
9809 2001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9810
9811 * numbers.c: Document macros to define when including
9812 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9813 now rely on SIZEOF_ macros that have been figured out at
9814 configure time.
9815
9816 * num2integral.i.c: Adapt to new interface.
9817 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9818 target type by casting it and checking whether it is still the
9819 same. Do not try to handle bignums for integral types that are
9820 smaller than fixnums. When handling bignums, collect the
9821 magnituse first into a unsigned type, and correctly check for
9822 overflow.
9823 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
9824 only -MIN_VALUE can still be negative of all negative numbers (in
9825 twos-complement).
9826
9827 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
9828
9829 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
9830 HAVE_LONG_LONG depending on whether their size is non-zero.
9831
9832 2001-11-11 Thien-Thi Nguyen <ttn@glug.org>
9833
9834 * strop.c (scm_string_null_p): Docfix; nfc.
9835 Thanks to Scott Lenser.
9836
9837 2001-11-07 Neil Jerram <neil@ossau.uklinux.net>
9838
9839 * extensions.c (scm_load_extension): Canonicalize docstring
9840 whitespace.
9841
9842 * unif.c (scm_uniform_array_write), ports.c
9843 (scm_current_output_port, scm_force_output), dynwind.c
9844 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
9845 filesys.c (scm_open, scm_lstat), struct.c
9846 (scm_make_struct_layout), random.c (scm_random,
9847 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
9848 (scm_i_index): Remove superfluous whitespace from end of docstring
9849 lines.
9850
9851 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
9852 strings.c (scm_make_string), variable.c (scm_make_variable,
9853 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
9854 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
9855 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
9856 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
9857 newline at end of docstrings.
9858
9859 * modules.c (scm_set_current_module): Add missing newline to
9860 docstring.
9861
9862 2001-11-07 Stefan Jahn <stefan@lkcc.org>
9863
9864 * win32-socket.[ch]: New files. Defines Winsock-API error codes
9865 and makes them available through Guile. That is because the
9866 Winsock-API does not store its errors in `errno' and thus cannot
9867 return error messages via `strerror (errno)'.
9868
9869 * socket.c (scm_init_socket): Initialize `win32-socket' part
9870 here under M$-Windows.
9871
9872 * numbers.h: Added missing declaration of
9873 `scm_sys_check_number_conversions()'.
9874
9875 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
9876 and use in `(strerror)' and `(system-error)'.
9877
9878 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
9879 `win32-socket.[ch]' to extra source and header files.
9880
9881 2001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
9882
9883 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
9884 a call to turn-on-debugging when --debug has been given instead of
9885 turning it on directly. Also, handle new `--no-debug' option,
9886 which might suppress the call to turn-on-debugging.
9887
9888 2001-11-05 Stefan Jahn <stefan@lkcc.org>
9889
9890 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
9891
9892 2001-11-04 Stefan Jahn <stefan@lkcc.org>
9893
9894 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
9895 here (was at guile_LDADD) which describes the dependency
9896 correctly and allows a clean build on Win32.
9897
9898 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
9899 into FOO.
9900
9901 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
9902 import macros for external libraries (libcrypt, libqthreads,
9903 libreadline and libregex).
9904
9905 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
9906
9907 * posix.c (flock): Added support for flock() in M$-Windows.
9908
9909 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
9910 of __SCM_IMPORT__.
9911
9912 * fports.c (getflags): Differentiate reading and writing pipes
9913 descriptors.
9914
9915 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
9916 M$-Windows.
9917
9918 * coop.c (coop_condition_variable_timed_wait_mutex): Use
9919 conditionalized error code if `ETIMEDOUT' is not available.
9920 (scm_thread_usleep): Remove bogus declaration of `struct timeval
9921 timeout'.
9922
9923 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
9924 belongs. That is because NO_PREPRO_MAGIC gets undefined after
9925 each inclusion of `num2integral.i.c'.
9926 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
9927
9928 2001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
9929
9930 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
9931 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
9932
9933 2001-11-02 Mikael Djurfeldt <mdj@linnaeus>
9934
9935 * print.c (scm_iprin1): Mark print state as revealed when
9936 dispatching to generic write or display.
9937
9938 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
9939
9940 2001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
9941
9942 Support for native Win32. Thanks to Stefan Jahn!
9943
9944 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
9945 and win32-dirent.h to extra source and header files. These
9946 include the uname() and the POSIX dirent interface implementation
9947 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
9948 linkers which do not allow unresolved symbols inside shared
9949 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
9950 dependency.
9951
9952 * __scm.h: Defined SCM_API. This macro gets prepended to all
9953 function and data definitions which should be exported or imported
9954 in the resulting dynamic link library in the Win32 port.
9955
9956 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
9957 chars.h, continuations.h, coop-defs.h, coop-threads.h,
9958 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
9959 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
9960 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
9961 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
9962 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
9963 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
9964 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
9965 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
9966 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
9967 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
9968 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
9969 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
9970 vports.h, weaks.h:
9971 Prefixed each each exported symbol with SCM_API.
9972
9973 * continuations.c: Added comment about the use of the extern
9974 declarations of {get,set}context() functions used in the ia64 port.
9975
9976 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
9977 is meant to be a `unsigned long *'.
9978
9979 * filesys.c: Include `direct.h' if possible. Use local
9980 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
9981 macros for M$-Windows. Implementation of `fstat_Win32()' which is
9982 able to differentiate between sockets and other file descriptors.
9983 Use this function as wrapper in `scm_fstat()'. Fixed typo in
9984 `scm_dirname()'.
9985
9986 * fports.c: Include `io.h' is possible. Put `*fp' into referring
9987 statement block in `scm_fport_buffer_add()'.
9988 Some corrections in `getflags()'.
9989
9990 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
9991
9992 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
9993 build on Win32. Disable preloaded symbols on Win2 platforms.
9994
9995 * ioext.c, ports.c: Include `io.h' is possible.
9996
9997 * mkstemp.c: Include `process.h' is possible.
9998
9999 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
10000 too.
10001 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
10002
10003 * posix.c: Remove unnecessary dirent includes and defines. Include
10004 local `win32-uname.h' for MinGW. Extern declaration of
10005 `mkstemp()' for systems where it does not exists. Make
10006 `getlogin()' available on M$-Windows.
10007
10008 * scmsigs.c: Made `usleep()' avalable on MinGW.
10009
10010 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
10011
10012 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
10013
10014 * win32-uname.c: Include "win32-uname.h", not "uname.h".
10015
10016 2001-10-28 Mikael Djurfeldt <mdj@linnaeus>
10017
10018 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
10019 Don't apply scm_uniform_vector_length on arrays.
10020
10021 2001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
10022
10023 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
10024 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
10025 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
10026 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
10027 scm_list_<n> over scm_cons[2]?.
10028
10029 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
10030 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
10031 SCM_C[AD][AD]R instead of explicit form.
10032
10033 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
10034 comparison parameters.
10035
10036 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
10037 !SCM_NULLP instead of SCM_NIMP.
10038
10039 (scm_m_case): Don't copy the form. Renamed proc to clause and
10040 minimized its scope. Renamed x to clauses. Removed side
10041 effecting operation from macro call.
10042
10043 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
10044 minimized its scope. Renamed x to clauses. Minimized the scope
10045 of variable 'len'. Make sure the else clause is treated specially
10046 even in case of '=>' occurences. Don't change the else to #t in
10047 order to be able to distinguish this case in the evaluator. Leave
10048 type checking of the recipient to the evaluator.
10049
10050 (scm_c_improper_memq): Made the comment somewhat clearer.
10051
10052 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
10053 test for SCM_IM_LET at the place of the formal parameters.
10054 Simplified the formal parameter checking.
10055
10056 (scm_m_letstar): Added Comment. Renamed proc to bindings.
10057 Renamed arg1 to binding and minimized its scope. Eliminated
10058 unnecessary consing.
10059
10060 (scm_m_do): Renamed proc to bindings. Minimized the scope of
10061 variable 'len'.
10062
10063 (build_binding_list): New static function.
10064
10065 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
10066 Further, split up the 'letrec' unmemoizing code to the
10067 corresponding parts for 'do', 'let' and 'letrec', adding comments
10068 to each form. Cleanup the handling of the do form (This removes
10069 some *real* code :-).
10070
10071 (SCM_CEVAL): Removed side effecting operation from macro call.
10072 Handle the 'else clause of the 'cond form specially - the symbol
10073 'else is not replaced with #t any more.
10074
10075 2001-10-14 Gary Houston <ghouston@arglist.com>
10076
10077 * version.c (scm_version): use sprintf instead of snprintf,
10078 for portability. thanks to Bill Schottstaedt.
10079
10080 2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
10081
10082 * read.c (scm_lreadr): When user-defined hash procedure returns
10083 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
10084 an exception. (This prevents parsing of uniform vectors from
10085 interfering with parsing of numbers.)
10086
10087 2001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
10088
10089 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
10090 PTRDIFF_MIN. Thanks to Ken Raeburn.
10091
10092 2001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
10093
10094 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
10095
10096 * eval.c (scm_m_atbind): First try to find the variable without
10097 defining it locally; when it has not been found, define it
10098 locally.
10099
10100 * modules.c (module_variable): Pass over variables that exist but
10101 are unbound.
10102
10103 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10104
10105 * backtrace.c (display_backtrace_file_and_line): Only use
10106 scm_basename when POSIX support is compiled in. Thanks to Chris
10107 Cramer.
10108
10109 2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10110
10111 * numbers.c (mem2uinteger): Return number read so far when coming
10112 across a hexdigit after having read a # or if not reading a hex
10113 value. This will enable the calling code to correctly handle
10114 forms like 1e2. (The background is, that the exponent markers d,
10115 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
10116 providing this patch.
10117
10118 (mem2complex): Fix erroneous double-negation. Now, numbers like
10119 1-i will be read correctly.
10120
10121 2001-10-12 Mikael Djurfeldt <mdj@linnaeus>
10122
10123 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
10124
10125 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
10126
10127 2001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
10128
10129 * print.c (scm_print_state_vtable, print_state_pool):
10130 Initialize. These variables are now registered as gc roots.
10131
10132 (scm_current_pstate): Update documentation.
10133
10134 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
10135 scm_prin1, scm_init_print): print_state_pool is registered as a
10136 gc root and thus does not need to be protected by a surrounding
10137 pair any more.
10138
10139 (make_print_state): The car of print_state_pool no longer holds
10140 the scm_print_state_vtable.
10141
10142 (scm_current_pstate, scm_make_print_state, print_circref,
10143 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
10144 SCM_N<foo>.
10145
10146 (scm_prin1): When building lists, prefer scm_list_<n> over
10147 scm_cons[2]?.
10148
10149 (scm_iprlist): Removed a redundant SCM_IMP test.
10150
10151 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
10152
10153 2001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10154
10155 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
10156
10157 (scm_memcons, scm_mem_to_proc): When building lists, prefer
10158 scm_list_<n> over scm_cons[2]?.
10159
10160 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
10161
10162 (scm_procedure_name): Use SCM_CADR instead of explicit form.
10163
10164 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
10165 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
10166 for some reason his patch didn't make it into the cvs.
10167
10168 2001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
10169
10170 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
10171 little bit - should even be somewhat more accurate now.
10172
10173 2001-10-08 Rob Browning <rlb@defaultvalue.org>
10174
10175 * gc.c: support ia64 register backing store.
10176 (SCM_MARK_BACKING_STORE): new macro.
10177
10178 * continuations.h: support ia64 register backing store.
10179 (struct scm_t_contregs): add ia64 register backing store.
10180
10181 * continuations.c: support ia64 register backing store.
10182 (continuation_mark): mark ia64 register backing store.
10183 (continuation_free): free ia64 register backing store.
10184 (scm_make_continuation): capture ia64 register backing store.
10185 (copy_stack_and_call): copy ia64 register backing store.
10186
10187 2001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10188
10189 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
10190 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
10191 instead of SCM_NIMP to test for that case.
10192
10193 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
10194 scm_t_bits instead of long.
10195
10196 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10197
10198 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
10199 SCM_T_SIGNED_BITS_MIN): New.
10200 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
10201 Use them to make these macros computable by the preprocessor.
10202
10203 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
10204 whether the integral type fits in a fixnum, not the compiler.
10205 This removes a spurious compiler warning. Also, honor the
10206 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
10207 needed for `long long's.
10208
10209 * numbers.c: Define NO_PREPRO_MAGOC when including
10210 num2integral.c.i for `long long' and `signed long long'.
10211
10212 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
10213
10214 These changes fixes a race condition in the Guile coop - pthread
10215 compatibility code.
10216
10217 * coop.c (mother_awake_p): New variable.
10218 (coop_create): Set mother_awake_p before creating or signalling
10219 mother; wait until mother is going to sleep before returning.
10220 (mother): Reset mother_awake_p before going to sleep.
10221
10222 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10223
10224 * options.c (protected_objects, scm_init_options): The content of
10225 protected_objects is now protected from garbage collection using
10226 scm_gc_register_root instead of scm_permanent_object.
10227
10228 (get_option_setting): New static function that computes an option
10229 setting as it was formerly done in the function scm_options.
10230
10231 (get_documented_option_setting): New static function that
10232 returns option documentation as it was formerly done in the
10233 function scm_options. Note that documentation C strings are no
10234 longer precomputed into SCM objects. Instead, they are converted
10235 into SCM strings every time get_documented_option_setting is
10236 called.
10237
10238 (change_option_setting): New static functions that modifies the
10239 option setting as it was formerly done in the function
10240 scm_options. The function is now exception safe, i. e. won't
10241 cause a memory leak when interrupted. Further, only non-immediate
10242 option values are added to the protection list.
10243
10244 (scm_options): This function now has only the purpose to dispatch
10245 to to get_option_setting, get_documented_option_setting or
10246 change_option_setting, depending on the arguments given to
10247 scm_options.
10248
10249 (scm_init_opts): Don't convert documentation C strings into SCM
10250 strings. Further, don't protect any object values: They _must_
10251 be immediate values, otherwise there is no guarantee that they
10252 have not been collected before anyway.
10253
10254 * options.[ch] (scm_t_option): Made type unsigned, name into a
10255 constant char* and val into a scm_t_bits type.
10256
10257 (scm_options, scm_init_opts): The number of options is guaranteed
10258 to be larger or equal to zero. Thus, the type is changed to
10259 unsigned.
10260
10261 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10262
10263 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
10264 testing an unsigned value for being >= 0.
10265
10266 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10267
10268 * numbers.h: Removed old comment about using SCM_CAR to access
10269 non-pair cells.
10270
10271 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
10272 the return value is signed. Thanks to Brian Crowder for the bug
10273 report.
10274
10275 (SCM_SRS): Avoid unnecessary casting and don't unpack input
10276 values. With this patch, SCM_SRS can be safely used for other
10277 types than scm_t_signed_bits. However, it should still better be
10278 an internal macro and thus be renamed to SCM_I_SRS.
10279
10280 (SCM_MAKINUM, SCM_INUM): Use proper casting.
10281
10282 2001-10-03 Gary Houston <ghouston@arglist.com>
10283
10284 * continuations.h, unif.h: in the descriptions of the bit patterns
10285 of the heap cells, make bit 0 the least significant.
10286
10287 2001-09-25 Thien-Thi Nguyen <ttn@glug.org>
10288
10289 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
10290 Thanks to Golubev I. N.
10291
10292 2001-09-25 Gary Houston <ghouston@arglist.com>
10293
10294 * ports.c (scm_drain_input): extended the docstring. thanks to
10295 Alex Schroeder and Thien-Thi Nguyen.
10296
10297 2001-09-23 Mikael Djurfeldt <mdj@linnaeus>
10298
10299 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
10300 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
10301 macros. (The NUM names might soon change.)
10302
10303 * numbers.h: Added missing declarations.
10304
10305 2001-09-22 Mikael Djurfeldt <mdj@linnaeus>
10306
10307 * Makefile.am: Distribute num2float.i.c.
10308
10309 * num2float.i.c: New file, multiply included by numbers.c, used
10310 to "templatize" the float <-> num conversion routines.
10311
10312 * numbers.c: New functions: scm_num2float, scm_float2num,
10313 scm_num2double, scm_double2num.
10314
10315 2001-09-21 Rob Browning <rlb@defaultvalue.org>
10316
10317 * .cvsignore: really add version.h
10318
10319 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
10320 Otherwise it fails on the alpha. However, we might rather choose
10321 this size conditionally.
10322
10323 * numbers.c (scm_gcd): change "k" to a long from an int.
10324 Otherwise it fails on the alpha. However, we might rather choose
10325 this size conditionally.
10326
10327 * error.c (scm_wta): coerce char* to intptr_t before int
10328 assignment.
10329
10330 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
10331 int.
10332
10333 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
10334
10335 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10336
10337 * numbers.c (scm_integer_expt): Accept inexact integer in second
10338 argument. (Thanks to Bill Schottstaedt.)
10339
10340 2001-09-20 Rob Browning <rlb@defaultvalue.org>
10341
10342 * .cvsignore: add version.h
10343
10344 * versiondat.h.in: removed (obsolete).
10345
10346 * version.h.in: renamed from version.h.
10347 (SCM_GUILE_MAJOR_VERSION): new public macro.
10348 (SCM_GUILE_MINOR_VERSION): new public macro.
10349 (SCM_GUILE_MICRO_VERSION): new public macro.
10350
10351 * version.h: renamed to version.h.in.
10352
10353 * version.c
10354 (scm_major_version): support integer *_VERSION macros.
10355 (scm_minor_version): support integer *_VERSION macros.
10356 (scm_micro_version): support integer *_VERSION macros.
10357 (scm_version): support integer *_VERSION macros.
10358
10359 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10360
10361 * error.c, error.h: Made error keys globally accessible.
10362 Applications might want to test for these or use them in a direct
10363 call to scm_error.
10364
10365 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
10366 routines are passed an inexact. This change in behavior is
10367 motivated by concordance with R5RS: It is more common that a
10368 primitive doesn't want to accept an inexact for an exact.
10369
10370 2001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10371
10372 The following patch partially undoes my patch from 2001-06-30,
10373 where I added the function scm_gc_mark_cell_conservatively. The
10374 function is buggy, since it breaks guile during conservative
10375 marking if a pointer on the stack points directly into the list of
10376 free cells on the heap: With conservative cell marking this will
10377 cause the whole free list to be scanned and marked - boom!
10378
10379 * gc.c (allocated_mark, MARK, heap_segment,
10380 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
10381 (scm_gc_mark_cell_conservatively): Remove function
10382 scm_gc_mark_cell_conservatively and update the corresponding
10383 comments and uses accordingly. Thanks to Christopher Cramer for
10384 the patch. (Minor corrections by me.)
10385
10386 2001-09-15 Gary Houston <ghouston@arglist.com>
10387
10388 * root.h (scm_root_state): removed the continuation_stack and
10389 continuation_stack_ptr members, which have no apparent purpose.
10390 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
10391 removed.
10392
10393 * root.c (root_mark), init.c (restart_stack, start_stack), gc
10394 (scm_igc): remove all references to contination_stack and
10395 continuation_stack_ptr, avoiding allocation of a vector and
10396 useless processing during gc.
10397
10398 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10399
10400 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
10401
10402 (TCONC_IN): Make sure that the cell word 0 is initialized last.
10403
10404 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
10405
10406 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
10407
10408 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
10409 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
10410
10411 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10412
10413 * guardians.c (mark_dependencies_in_tconc,
10414 whine_about_self_centered_zombies, scm_init_guardians): Register
10415 the static global variable `self_centered_zombies' via
10416 scm_gc_register_root, to make some cdr-ing unnecessary.
10417
10418 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10419
10420 * backtrace.c (display_backtrace_file,
10421 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
10422 values, use SCM_FALSEP when comparing SCM values against #f.
10423 Thanks to Rob Browning for the bug report.
10424
10425 2001-09-12 Martin Baulig <martin@home-of-linux.org>
10426
10427 * strings.[ch] (scm_str2string): New function.
10428
10429 2001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
10430
10431 * gc.c (scm_done_free): Always subtract size from scm_mallocated
10432 when computing nm, even if it's negative.
10433 (scm_must_malloc): Abort on overflow of scm_mtrigger.
10434 (scm_must_realloc): Likewise.
10435
10436 2001-09-01 Michael Livshin <mlivshin@bigfoot.com>
10437
10438 * numbers.c (scm_sys_check_number_conversions): new function,
10439 defined if Guile is compiled in debugging mode. currently checks
10440 `scm_num2ulong', should check much much more.
10441
10442 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
10443 unsigned, ensure that it's positive. thanks to Martin Baulig!
10444
10445 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10446
10447 * __scm.h: Added new section about compile time selectable
10448 features.
10449
10450 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
10451 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
10452 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
10453 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
10454 Removed.
10455
10456 * deprecation.c (scm_include_deprecated_features): Simplified.
10457
10458 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
10459 `SCM_IMP' instead of `!SCM_CELLP´.
10460
10461 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
10462 Extract side-effecting operations from macros.
10463
10464 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
10465 scm_top_level_lookup_closure_var and scm_system_transformer.
10466
10467 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10468
10469 (heap_segment): Use CELL_P instead of SCM_CELLP.
10470
10471 * init.c (start_stack): Don't initialize
10472 scm_top_level_lookup_closure_var and scm_system_transformer.
10473
10474 * modules.c (scm_set_current_module): Don't access
10475 scm_top_level_lookup_closure_var and scm_system_transformer.
10476
10477 (scm_sym2var): Don't call scm_variable_set_name_hint.
10478
10479 (scm_post_boot_init_modules): Removed deprecated initializations.
10480
10481 * print.c (scm_ipruk): Don't access cell contents of non cells.
10482
10483 * strings.c (scm_string_set_x): All strings are writable.
10484
10485 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10486 type. There is only one string type now.
10487
10488 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10489
10490 * tags.h: Remove comments about two different string types.
10491
10492 (SCM_CELLP, SCM_NCELLP): Deprecated.
10493
10494 * variable.c (make_variable): Remove code variant for vcells.
10495
10496 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10497 SCM_VARIABLE_LOC): Remove code variant for vcells.
10498
10499 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10500 SCM_ENABLE_DEPRECATED with the logic reversed.
10501
10502 * dynl.c (moddata, registered_mods), dynl.[ch]
10503 (scm_register_module_xxx, scm_registered_modules,
10504 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10505 (*top-level-lookup-closure*), eval.[ch]
10506 (scm_top_level_lookup_closure_var, scm_system_transformer,
10507 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10508 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10509 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10510 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10511 scm_unprotect_object), modules.c (root_module_lookup_closure,
10512 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10513 beautify_user_module_x_var, try_module_autoload_var,
10514 scm_module_full_name), modules.[ch] (scm_the_root_module,
10515 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
10516 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
10517 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10518 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10519 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10520 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10521 scm_make_shared_substring), tags.h (scm_tc7_substring,
10522 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10523 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10524 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10525 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10526 Removed.
10527
10528 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10529 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10530 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10531 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10532 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10533 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10534 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10535 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10536 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10537 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10538 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10539 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10540 (setzone, scm_strftime, scm_strptime), vports.c
10541 (scm_make_soft_port): Remove calls to
10542 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10543 gone, all strings are 0-terminated anyway.
10544
10545 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10546 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10547 double inclusion of the same headers to the SCM_<filename>_H
10548 format.
10549
10550 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10551 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10552 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10553 any more.
10554
10555 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10556 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10557 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10558 !SCM_<foo> over SCM_N<foo>.
10559
10560 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10561
10562 * Makefile.am: Remove references to symbols-deprecated.c.
10563
10564 * symbols.c (scm_init_symbols): Don't initialize deprecated
10565 symbol functions.
10566
10567 * symbols-deprecated.c: Removed.
10568
10569 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10570 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10571 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10572 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10573 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10574 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10575 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10576 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10577 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10578 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10579 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10580 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10581 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10582 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10583 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10584 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10585 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10586 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10587 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10588 scm_intern0, scm_sysintern, scm_sysintern0,
10589 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10590 scm_string_to_obarray_symbol, scm_intern_symbol,
10591 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10592 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10593 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10594 vectors.[ch] (scm_vector_set_length_x): Removed.
10595
10596 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10597 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10598 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10599 Renamed the macros that are defined to inhibit double inclusion of
10600 the same headers to the SCM_<filename>_H format.
10601
10602 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10603 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10604 SCM_N<foo>.
10605
10606 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10607
10608 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10609 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10610 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10611 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10612 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10613 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10614 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10615 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10616 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10617 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10618 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10619 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10620
10621 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10622 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10623 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10624 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10625 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10626 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10627 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10628 double inclusion of the same headers to the SCM_<filename>_H
10629 format.
10630
10631 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10632 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10633 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10634 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10635 !SCM_<foo> over SCM_N<foo>.
10636
10637 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10638
10639 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10640 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10641 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10642 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10643 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10644 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10645 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10646 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10647 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10648 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10649 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10650 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10651 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10652 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10653 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10654 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10655 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10656 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10657 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10658 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10659 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10660 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10661 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10662 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10663 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10664 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10665 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10666 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10667 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10668 the macros that are defined to inhibit double inclusion of the
10669 same headers to the SCM_<filename>_H format.
10670
10671 2001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10672
10673 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10674 "scm_t_portable" with "scm_port_table" which was an artifact from
10675 the great "scm_*_t -> scm_t_" renaming.
10676
10677 2001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10678
10679 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10680 used; nfc. Thanks to Bill Schottstaedt.
10681
10682 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10683 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10684 Thanks to Chris Cramer.
10685
10686 2001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10687
10688 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10689
10690 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10691 dynamic scope.
10692 * dynwind.h (scm_swap_bindings): Declare.
10693 * dynwind.c (scm_swap_bindings): Make non-static.
10694
10695 2001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10696
10697 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10698 doing exactly nothing about them). thanks Neil!
10699
10700 2001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10701
10702 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
10703
10704 2001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10705
10706 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10707 (proto) in the case when either `GUILE_DEBUG' or
10708 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10709
10710 (map_free_list): Fix typo: Ref `f' correctly.
10711
10712 Thanks to Chris Cramer.
10713
10714 2001-08-15 Rob Browning <rlb@defaultvalue.org>
10715
10716 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10717 variables.
10718 (libpath.h): change libguileversion to libguileinterface.
10719
10720 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10721
10722 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10723 ChangeLog-2000. Thanks to Daniel Skarda!
10724
10725 2001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10726
10727 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10728 do it from the Makefile.
10729
10730 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10731 are of a reasonable size.
10732
10733 2001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10734
10735 * stacks.c (scm_make_stack): Improve docstring by explaining use
10736 of cutting args.
10737
10738 2001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10739
10740 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10741 scm_char_whitespace_p, scm_char_upper_case_p,
10742 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10743 characters to fulfill isascii in addition to the primary
10744 predicate.
10745
10746 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10747
10748 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10749 scm_istr2flo, scm_istring2number): Removed.
10750
10751 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10752 SCM_SLOPPY_<foo>.
10753
10754 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10755 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10756 Added.
10757
10758 (scm_string_to_number): Use new number parser.
10759
10760 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10761 handles complex numbers.
10762
10763 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10764 SCM_<foo>_H.
10765
10766 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10767 SCM_N<pred>.
10768
10769 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10770
10771 (scm_i_mem2number): Added.
10772
10773 (scm_exact_to_inexact): Changed signature.
10774
10775 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10776 here instead of within scm_i_mem2number. Call scm_i_mem2number
10777 instead of scm_istr2int and scm_istring2number.
10778
10779 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10780
10781 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10782 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10783 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10784 !SCM_<pred> over SCM_N<pred>.
10785
10786 (scm_eval_body): Remove side effecting code from macro call.
10787
10788 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10789 SCM_NIMP test.
10790
10791 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10792
10793 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10794
10795 2001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10796
10797 Removed vcell slot from structs.
10798
10799 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10800 subsequent indices.
10801
10802 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10803 zero. Use scm_vtable_index_layout instead of "0" when accessing
10804 said slot.
10805 (scm_init_struct): Remove vcell slot layout code from
10806 required_vtable_fields.
10807
10808 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10809
10810 * goops.c (build_class_class_slots): Removed vcell slot
10811 definition.
10812
10813 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10814 Removed vcell slot layout code.
10815 (scm_si_vcell): Removed.
10816
10817 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10818
10819 "Glocs" have been removed.
10820
10821 * tags.h: Update tag system docs.
10822 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
10823 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
10824 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
10825 or SCM_NCONSP, respectively.
10826
10827 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
10828 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
10829 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
10830
10831 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
10832 tell glocs from structs.
10833
10834 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
10835
10836 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
10837 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
10838 instead of with glocs.
10839 (EVALCAR): Do not test for glocs.
10840 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
10841 condition.
10842 (scm_unmemocar): Do not handle glocs.
10843 (scm_m_atfop): Memoize as a variable, not as a gloc.
10844 (scm_eval_args, scm_deval_args): Do not handle glocs.
10845 (scm_ceval, scm_deval): Likewise.
10846
10847 * eval.h (SCM_XEVALCAR): Do not test for glocs.
10848 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
10849 Removed.
10850
10851 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
10852
10853 * dynwind.c (scm_swap_bindings): Likewise.
10854 (scm_dowinds): Updated to recognize lists of variables instead of
10855 lists of glocs.
10856
10857 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
10858
10859
10860 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
10861 where it is needed.
10862
10863 2001-07-25 Gary Houston <ghouston@arglist.com>
10864
10865 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
10866 docstrings to reflect the n-ary implementation.
10867
10868 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10869
10870 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
10871 value of a variable, not the plain "return" statement.
10872
10873 2001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
10874
10875 * eval.c: Allow variables in memoized code (in addition to glocs).
10876 (scm_lookupcar): Handle variables in lost races. Replace symbol
10877 with variable directly, do not make a gloc.
10878 (scm_unmemocar): Rewrite variables using a reverse lookup, just
10879 like glocs.
10880 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
10881 the main switch.
10882
10883 2001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10884
10885 * variable.c (scm_i_variable_print): Use "value" instead of
10886 "binding" since a binding is the mapping between symbols and
10887 variables, not between variables and their values.
10888
10889 * tags.h (scm_tc7_variable): New.
10890 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
10891 * print.c (scm_iprin1): Likewise.
10892
10893 * variable.h (scm_tc16_variable): Removed.
10894 (SCM_VARIABLEP): Test for new tc7 code.
10895 (scm_i_variable_print): New.
10896 * variable.c (scm_tc16_variable): Removed.
10897 (variable_print): Renamed to scm_i_variable_print and made
10898 non-static.
10899 (variable_equal_p): Removed.
10900 (make_variable): Construct a tc7 object instead of a smob.
10901 (scm_init_variable): Do not register smob.
10902
10903 2001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
10904
10905 * tags.h: Include inttypes.h when we have it.
10906
10907 2001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
10908
10909 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
10910 is taken by the new SCM_IM_CALL_WITH_VALUES.
10911 * print.c (scm_isymnames): Update table accordingly.
10912
10913 2001-07-22 Gary Houston <ghouston@arglist.com>
10914
10915 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
10916 SCM_MAKINUM to convert regoff_t value to SCM.
10917
10918 2001-07-21 Gary Houston <ghouston@arglist.com>
10919
10920 * scmsigs.c: include sys/time.h for itimer stuff.
10921
10922 2001-07-19 Rob Browning <rlb@defaultvalue.org>
10923
10924 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
10925
10926 * c-tokenize.lex: add option %nounput to quiet warning.
10927 Add prototype for yylex to quiet warning.
10928
10929 * scmconfig.h.in: add flags for setitimer and getitimer.
10930
10931 * scmsigs.h (scm_init_scmsigs): new prototype.
10932 (scm_init_scmsigs): new prototype.
10933
10934 * scmsigs.c (s_scm_setitimer): new function.
10935 (s_scm_setitimer): new function.
10936
10937 2001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10938
10939 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
10940 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
10941 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
10942 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
10943 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
10944 guile-func-name-check.in, guile-snarf-docs-texi.in,
10945 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
10946 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
10947 objprop.c, objprop.h, options.c, options.h, random.h,
10948 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
10949 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
10950 version.c, version.h: Updated copyright notice.
10951
10952 2001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10953
10954 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
10955 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
10956 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
10957 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
10958 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
10959 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
10960 sym_environment, scm_sym_change_class): New static variables to
10961 hold predefined symbols.
10962
10963 (build_class_class_slots): Build the list using scm_list_n
10964 instead of cons. Also, slots are already created as lists, thus
10965 making a call to maplist unnecessary.
10966
10967 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
10968 scm_class_direct_subclasses, scm_class_direct_methods,
10969 scm_class_precedence_list, scm_class_slots, scm_class_environment,
10970 scm_method_procedure, create_standard_classes, purgatory): Use
10971 predefined symbols.
10972
10973 (build_slots_list, compute_getters_n_setters,
10974 scm_sys_initialize_object, scm_sys_inherit_magic_x,
10975 get_slot_value_using_name, set_slot_value_using_name,
10976 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
10977 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
10978 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
10979
10980 (scm_sys_prep_layout_x): Minimize variable scopes.
10981
10982 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
10983 scm_sys_fast_slot_set_x): Fix signedness.
10984
10985 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
10986 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
10987 scm_memoize_method, scm_wrap_object): Use packing and unpacking
10988 when converting to and from SCM values.
10989
10990 (scm_enable_primitive_generic_x): Add rest argument checking.
10991
10992 (map, filter_cpl, maplist, scm_sys_initialize_object,
10993 scm_sys_prep_layout_x, slot_definition_using_name,
10994 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
10995 call_memoize_method, scm_make, scm_make_class): Prefer explicit
10996 predicates over SCM_N?IMP tests.
10997
10998 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
10999 checking.
11000
11001 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
11002 alias.
11003
11004 2001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11005
11006 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
11007
11008 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
11009
11010 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
11011
11012 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
11013
11014 2001-07-12 Michael Livshin <mlivshin@bigfoot.com>
11015
11016 * strings.c (s_scm_string): fix arg position in assert.
11017
11018 2001-07-11 Gary Houston <ghouston@arglist.com>
11019
11020 * strports.c (st_write): use memcpy, not strncpy. thanks to
11021 Dale P. Smith.
11022
11023 2001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
11024
11025 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
11026 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
11027 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
11028 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
11029 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
11030 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
11031 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
11032 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
11033 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
11034 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
11035 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
11036 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
11037 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
11038 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
11039 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
11040 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
11041 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
11042 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
11043 weaks.c, weaks.h: Remove "face-lift" comment.
11044
11045 2001-07-08 Rob Browning <rlb@defaultvalue.org>
11046
11047 * .cvsignore: add stamp-h.in.
11048
11049 2001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11050
11051 * hooks.c (scm_make_hook, scm_add_hook_x),
11052 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
11053 value info to the docstrings.
11054
11055 2001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11056
11057 Some more compatibility patches for Windows.
11058
11059 * posix.c (getlogin): getlogin() implementation for Windows.
11060
11061 * backtrace.c, ioext.c: Include <stdio.h>.
11062
11063 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
11064 exist.
11065
11066 * cpp_sig_symbols.in: Added SIGBREAK.
11067
11068 2001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
11069
11070 * strports.c (scm_read_0str, scm_eval_0str): Call
11071 scm_c_read_string and scm_c_eval_string respectively, not
11072 themselves. Thanks to Dale P. Smith!
11073
11074 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11075
11076 * unif.c (scm_array_set_x): The variable args does not
11077 necessarily have to be a list. Further, got rid of a redundant
11078 SCM_NIMP test.
11079
11080 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11081
11082 * list.c (SCM_I_CONS): Make sure the cell type is initialized
11083 last.
11084
11085 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
11086 init_heap_seg): Fixed signedness.
11087
11088 (init_heap_seg): Replaced strange for-loop with a while loop.
11089
11090 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
11091
11092 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
11093
11094 The following patch adds conservative marking for the elements of
11095 free or allocated cells.
11096
11097 * gc.c (allocated_mark, heap_segment): New static functions.
11098
11099 (which_seg): Deleted, since the functionality is now provided by
11100 function heap_segment.
11101
11102 (map_free_list): Use heap_segment instead of which_seg.
11103
11104 (MARK): If cell debugging is disabled, mark free cells
11105 conservatively.
11106
11107 (scm_mark_locations, scm_cellp): Extracted the search for the
11108 heap segment of a SCM value into function heap_segment.
11109
11110 (scm_init_storage): Allocated cells must be marked
11111 conservatively.
11112
11113 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
11114
11115 The following patch changes the representation of weak vectors to
11116 double cells instead of using an extension of the vector's
11117 allocated memory.
11118
11119 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
11120 the result of SCM_WVECT_GC_CHAIN.
11121
11122 (scm_gc_sweep): Weak vectors don't have extra fields any more.
11123
11124 * weaks.c (allocate_weak_vector): New static function. It does
11125 not patch any previously created vector object during the
11126 construction of a weak vector, and thus doesn't need to switch
11127 off interrupts during vector creation.
11128
11129 (scm_make_weak_vector, scm_make_weak_key_hash_table,
11130 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11131 Use allocate_weak_vector to provide the new weak vector object.
11132
11133 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
11134 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
11135 now stored in the double cell.
11136
11137 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
11138 Use SCM_WVECT_TYPE.
11139
11140 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
11141 using an entry of the double cell.
11142
11143 2001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
11144
11145 * stamp-h.in: bye bye
11146
11147 2001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
11148
11149 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
11150 scm_eval_0str.
11151
11152 * load.c, load.h (scm_c_primitive_load,
11153 scm_c_primitive_load_path): New.
11154
11155 * strports.c, strports.h (scm_c_read_string): Renamed from
11156 scm_read_0str. Also, added "const" qualifier to argument.
11157 (scm_c_eval_string): Renamed from scm_eval_0str.
11158 (scm_read_0str, scm_eval_0str): Deprecated.
11159
11160 2001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11161
11162 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
11163 SCM_LIST1.
11164
11165 2001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
11166
11167 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
11168 scm_list_n): New functions.
11169 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
11170 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
11171 (lots of files): Use the new functions.
11172
11173 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
11174
11175 * strings.c: #include "libguile/deprecation.h".
11176
11177 2001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11178
11179 * read.c (scm_lreadr): When reading a hash token, check for a
11180 user-defined hash procedure first, so that overriding the builtin
11181 hash characters is possible (this was needed for implementing
11182 SRFI-4's read synax `f32(...)').
11183
11184 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
11185 because the latter is unsigned now and breaks comparisons like
11186 (n < (scm_t_signed_bits)MIN_VALUE).
11187
11188 2001-06-26 Neil Jerram <neil@ossau.uklinux.net>
11189
11190 * eval.h, eval.c (scm_call_4): New function.
11191
11192 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
11193 directly rather than dispatching to them via scm_ithrow and a lazy
11194 catch.
11195
11196 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
11197 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
11198 for trap handler procedures.
11199
11200 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
11201 procedures not being #f.
11202
11203 2001-06-27 Michael Livshin <mlivshin@bigfoot.com>
11204
11205 * Makefile.am (c-tokenize.c): add rule to generate it.
11206 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
11207
11208 filter-doc-snarfage.c: remove.
11209
11210 2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11211
11212 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
11213
11214 The following set of changes makes compiling Guile under various
11215 Windows compilers easier. Compilation under GNU systems should
11216 not be affected at all.
11217
11218 Thanks to Stefan Jahn for all necessary information, patches and
11219 testing.
11220
11221 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
11222 getpgrp, ttyname, primitive-fork and some header inclusion for
11223 Windows.
11224
11225 * random.c: Define M_PI, if not predefined and use __int64 for
11226 LONG64 under Windows.
11227
11228 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
11229 Windows and conditionalize some signal names.
11230
11231 * socket.c (scm_getsockopt): Added missing comma.
11232 Include socket library header under Windows.
11233
11234 * stime.c (CLKTCK): Add cast to int, to make it compile under
11235 Windows.
11236
11237 * ports.c (truncate): New function, compiled only under Windows.
11238
11239 * net_db.c: Do not declare errno under Windows.
11240
11241 * iselect.h, inet_aton.c: Include socket library headers under
11242 Windows.
11243
11244 * guile.c (inner_main): Under Windows, initialize socket library
11245 and initialize gdb_interface data structures.
11246
11247 * gdb_interface.h: Under Windows, gdb_interface cannot be
11248 initialized statically. Initialize at runtime instead.
11249
11250 * fports.c (write_all): ssize_t -> size_t.
11251 (fport_print): Conditionalize call to ttyname().
11252 (getflags): New function, compiled only under Windows.
11253
11254 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
11255 primitives chown, link, fcntl.
11256 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
11257 as path seperator.
11258
11259 * backtrace.c: Include <io.h> under Windows.
11260
11261 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
11262
11263 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
11264 declaration.
11265
11266 2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
11267
11268 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11269 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
11270 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11271 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
11272 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
11273 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
11274 (scm_dynamic_wind, scm_dowinds), environments.c
11275 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
11276 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
11277 goops.c (GETVAR, purgatory, make_class_from_template,
11278 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
11279 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
11280 (scm_primitive_load), modules.c (scm_resolve_module,
11281 scm_c_define_module, scm_c_use_module, scm_c_export,
11282 module_variable, scm_eval_closure_lookup, scm_sym2var,
11283 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
11284 ports.c (scm_port_for_each), print.c (scm_printer_apply),
11285 properties.c (scm_primitive_property_ref), ramap.c (ramap,
11286 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
11287 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
11288 (scm_object_to_string, scm_call_with_output_string,
11289 scm_call_with_input_string), throw.c (scm_body_thunk,
11290 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
11291 scm_make_shared_array), vports.c (sf_flush, sf_write,
11292 sf_fill_input, sf_close): Use one of the above functions.
11293 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
11294
11295 2001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11296
11297 * filesys.c (scm_close), ports.c (scm_close_port,
11298 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
11299 instead of SCM_NEGATE_BOOL.
11300
11301 * filesys.c (scm_stat): Clean up type dispatch.
11302
11303 * filesys.c (scm_stat), ports.c (scm_input_port_p,
11304 scm_output_port_p): Get rid of redundant IM type check.
11305
11306 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
11307 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
11308 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
11309 scm_return_entry), numbers.c (scm_number_to_string), objects.c
11310 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
11311 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
11312 scm_addr_vector), stime.c (scm_strftime), strings.c
11313 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
11314 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
11315 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11316 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
11317 instead of scm_makfromstr.
11318
11319 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
11320 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
11321 scm_read_hash_extend), stime.c (scm_strftime), strings.c
11322 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
11323 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
11324 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
11325 !SCM_<pred> over SCM_N<pred>.
11326
11327 * strings.[ch] (scm_makfromstr): Deprecated.
11328
11329 (scm_mem2string): New function, replaces scm_makfromstr.
11330
11331 * strings.c (scm_substring), strop.c (string_copy,
11332 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11333 (scm_symbol_to_string): Fix gc problem.
11334
11335 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
11336 SCM_<foo>_H.
11337
11338 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
11339 warning about comparing signed and unsigned values. This fix is
11340 not optimal, since it won't work reliably if sizeof (c_start) >
11341 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
11342 solution is to define this macro as an inline function, thus
11343 allowing to specifiy the types of c_start and c_end.
11344
11345 2001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
11346
11347 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
11348 scm_t_debug_frame*.
11349
11350 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
11351 Rename <foo>H to SCM_<foo>_H.
11352
11353 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
11354 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11355
11356 (narrow_stack): Make i unsigned. Don't use side-effecting
11357 operations in conditions.
11358
11359 (narrow_stack, scm_make_stack, scm_stack_id,
11360 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
11361
11362 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
11363 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
11364 more.
11365
11366 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
11367 signedness.
11368
11369 (scm_last_stack_frame): Remove bogus `;'.
11370
11371 * stacks.h (SCM_FRAMEP): Fix type check.
11372
11373 2001-06-25 Michael Livshin <mlivshin@bigfoot.com>
11374
11375 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
11376 c-tokenize.c when doing maintainer-clean.
11377
11378 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
11379
11380 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
11381 simplify.
11382
11383 * eval.c: all hash signs are in column 0.
11384
11385 * Makefile.am (guile_filter_doc_snarfage): build using
11386 c-tokenize.c, not filter-doc-snarfage.c.
11387 rearrange snarfing dependencies a bit.
11388
11389 * c-tokenize.lex: new file.
11390
11391 2001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
11392
11393 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
11394 scm_t_srcpropso_plist. See the big type renaming.
11395 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
11396 Thanks to Seth Alves!
11397
11398 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
11399 they aren't defined already.
11400
11401 2001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
11402
11403 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
11404 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
11405 problem.
11406
11407 * backtrace.c (display_expression, scm_set_print_params_x,
11408 display_application, display_frame, scm_backtrace), numbers.c
11409 (scm_istring2number), objects.c (scm_class_of,
11410 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
11411 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11412
11413 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
11414 always positive.
11415
11416 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
11417 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
11418
11419 * objects.c (scm_class_of): Type fix.
11420
11421 (scm_mcache_lookup_cmethod): Improved comment, simplified,
11422 eliminated goto.
11423
11424 * pairs.h (scm_error_pair_access): The function can return if
11425 called recursively.
11426
11427 2001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11428
11429 * init.c (scm_init_guile_1): Removed initialization of tag.c.
11430
11431 * gdbint.c, init.c: Removed inclusion of tag.h.
11432
11433 * tag.h, tag.c: Removed files.
11434
11435 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
11436
11437 2001-06-20 Gary Houston <ghouston@arglist.com>
11438
11439 * deprecation.c, extensions.c, rw.c: include string.h.
11440
11441 2001-06-19 Gary Houston <ghouston@arglist.com>
11442
11443 * filter-doc-snarfage.c (process): added ungetc in
11444 MULTILINE_COOKIE case since otherwise it fails when there's no
11445 space between the '(' and the quote of the following string
11446 (gcc 3.0).
11447
11448 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11449
11450 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
11451
11452 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11453
11454 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
11455 extension takes place.
11456 * strings.h (SCM_STRING_LENGTH): Likewise.
11457 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
11458
11459 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
11460 it.
11461
11462 * tags.h: Include <stdint.h> when we have it.
11463 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
11464 available. Else use "unsigned long".
11465 (scm_signed_bits_t): New.
11466
11467 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11468 (SCM_INUM): Cast result to scm_signed_bits_t.
11469
11470 2001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11471
11472 * mkstemp.c: Update path to #include file scmconfig.h.
11473 Thanks to Golubev I. N.
11474
11475 2001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11476
11477 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11478
11479 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
11480 the macro definition.
11481
11482 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11483 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11484 instead of SCM_INST_TYPE.
11485
11486 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11487 the object is a struct before accessing its struct flags.
11488
11489 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11490
11491 2001-06-10 Gary Houston <ghouston@arglist.com>
11492
11493 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11494 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11495 work reliably anymore. try it from boot-9.scm instead.
11496
11497 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11498
11499 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
11500 Thanks to Matthias Köppe!
11501
11502 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11503
11504 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11505 space-happy C preprocessors.
11506
11507 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
11508 inside cookies. thanks to Matthias Köppe!
11509
11510 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11511
11512 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11513 keywords. Fix gc protection.
11514
11515 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11516 operations in macro calls.
11517
11518 * pairs.c (scm_error_pair_access): Avoid recursion.
11519
11520 Thanks to Matthias Koeppe for reporting the bugs that correspond
11521 to the following set of patches.
11522
11523 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11524 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11525 bitvector base address using SCM_BITVECTOR_BASE.
11526
11527 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11528 unsigned long*.
11529
11530 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11531
11532 * goops.c (SCM_CLASS_REDEF): Removed.
11533
11534 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11535 SCM_<foo>_H.
11536
11537 Thanks to Matthias Koeppe for reporting the bugs that correspond
11538 to the following set of patches.
11539
11540 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11541 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11542 scm_sys_allocate_instance, clear_method_cache,
11543 scm_sys_invalidate_method_cache_x, scm_make,
11544 create_standard_classes, scm_make_port_classes, scm_make_class,
11545 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11546
11547 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11548
11549 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11550
11551 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11552 UNARY_ELTS_CODE): Remove bogus break statement.
11553
11554 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11555 Don't access bit vectors elements as SCM objects.
11556
11557 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11558 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11559 Don't assign to an unpacked value.
11560
11561 2001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11562
11563 * __scm.h (SCM_NORETURN): Moved here from error.h.
11564
11565 (SCM_UNUSED): New macro.
11566
11567 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11568
11569 * backtrace.c (display_error_handler), continuations.c
11570 (continuation_print), debug.c (debugobj_print), dynwind.c
11571 (guards_print), environments.c (observer_print,
11572 core_environments_finalize, leaf_environment_cell,
11573 leaf_environment_print, eval_environment_print,
11574 eval_environment_observer, import_environment_define,
11575 import_environment_undefine, import_environment_print,
11576 import_environment_observer, export_environment_define,
11577 export_environment_undefine, export_environment_print,
11578 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11579 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11580 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11581 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11582 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11583 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11584 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11585 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11586 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11587 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11588 set_slot_value, test_slot_existence, scm_change_object_class,
11589 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11590 default_setter), guardians.c (guardian_print, guardian_gc_init,
11591 guardian_zombify, whine_about_self_centered_zombies), guile.c
11592 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11593 mallocs.c (malloc_print), numbers.c (scm_print_real,
11594 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11595 end_input_default, scm_port_print, fill_input_void_port,
11596 write_void_port), root.c (root_print), smob.c (scm_mark0,
11597 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11598 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11599 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11600 (scm_struct_free_0, scm_struct_free_standard,
11601 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11602 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11603 scm_handle_by_throw, scm_ithrow), weaks.c
11604 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11605 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11606 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11607
11608 * error.h (SCM_NORETURN): Moved to __scm.h.
11609
11610 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11611 Renamed <foo>H to SCM_<foo>_H.
11612
11613 * gc.c (debug_cells_gc_interval): New static variable.
11614
11615 (scm_assert_cell_valid): If selected by the user, perform
11616 additional garbage collections.
11617
11618 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11619 if additional garbage collections are desired.
11620
11621 (mark_gc_async): If additional garbage collections are selected
11622 by the user, don't call the after-gc-hook. Instead require the
11623 user to run the hook manually.
11624
11625 * pairs.c (scm_error_pair_access): New function. Only compiled
11626 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11627
11628 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11629
11630 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11631 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11632 is a real pair object. (Glocs are also accepted, but that may
11633 change.) If not, abort with an error message.
11634
11635 2001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11636
11637 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11638
11639 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11640 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11641
11642 2001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11643
11644 * extensions.c (scm_c_register_extension): Allow NULL as library
11645 name.
11646 (load_extension): Ignore NULL library names when comparing.
11647
11648 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11649 non-pointers are being compared. Thanks to Alexander Klimov!
11650
11651 2001-06-04 Gary Houston <ghouston@arglist.com>
11652
11653 * rw.c (scm_write_string_partial): new procedure implementing
11654 write-string/partial in (ice-9 rw).
11655 * rw.h: declare scm_write_string_partial.
11656
11657 2001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11658
11659 * keywords.c (keyword_print): Substract 1 from length of symbol
11660 name, accounting for the silly dash.
11661
11662 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11663 Do not emit deprecation warning.
11664
11665 Added exception notice to all files.
11666
11667 * dynl.c: Include "deprecation.h".
11668
11669 2001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11670
11671 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11672 scm_clear_registered_modules): Deprecated.
11673
11674 2001-06-02 Rob Browning <rlb@cs.utexas.edu>
11675
11676 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11677 guile-snarf-docs-texi.
11678
11679 * fports.c: HAVE_ST_BLKSIZE changed to
11680 HAVE_STRUCT_STAT_ST_BLKSIZE.
11681 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11682 HAVE_STRUCT_STAT_ST_BLKSIZE.
11683
11684 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11685 HAVE_STRUCT_STAT_ST_RDEV.
11686 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11687 HAVE_STRUCT_STAT_ST_BLKSIZE.
11688 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11689 HAVE_STRUCT_STAT_ST_BLOCKS.
11690
11691 2001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11692
11693 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11694 of scm_eval_x to allow module changes between the forms in the
11695 string. Set/restore module using scm_c_call_with_current_module.
11696
11697 * mkstemp.c: New file, slightly modified from libiberties
11698 mkstemps.c.
11699
11700 2001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11701
11702 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11703 filter-doc-snarfage.c: new files.
11704
11705 * Makefile.am: add stuff to [build,] use and distribute
11706 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11707
11708 * guile-snarf.in: grok the new snarf output.
11709
11710 * snarf.h: make the output both texttools- and `read'-friendly.
11711
11712 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11713 guile-snarf-docs. (should also deprecate, I guess. maybe not).
11714
11715 2001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11716
11717 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11718 error for unsupported format controls and for superflous
11719 arguments. Thanks to Daniel Skarda!
11720
11721 * print.h, print.c (scm_print_symbol_name): Factored out of
11722 scm_iprin1.
11723 (scm_iprin1): Call it.
11724
11725 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11726 weird names are printed correctly.
11727
11728 * print.c (scm_print_symbol_name): Symbols whose name starts with
11729 `#' or `:' or ends with `:' are considered weird.
11730
11731 2001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11732
11733 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11734 and /.
11735
11736 2001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11737
11738 * debug.h: Removed prototype for scm_eval_string.
11739
11740 2001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11741
11742 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
11743 (make-string 2000 #\!))' in an older version).
11744
11745 Change strncpy to memcpy to allow embedded NUL characters in
11746 symbol prefix.
11747
11748 2001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11749
11750 * hooks.c (scm_create_hook): deprecated.
11751 (make_hook): deleted.
11752 (scm_make_hook): all the hook creation code is now here.
11753
11754 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11755 a hook, make it permanent, and do a `scm_c_define' on it.
11756
11757 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11758
11759 * socket.c (s_scm_inet_pton): fix docstring quoting.
11760 (s_scm_inet_ntop): ditto.
11761
11762 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11763
11764 * hashtab.c (scm_internal_hash_fold): fix argument position in
11765 SCM_ASSERT.
11766
11767 * environments.c (s_scm_import_environment_set_imports_x): fix
11768 argument position in SCM_ASSERT.
11769
11770 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11771 (s_scm_make_iloc): ditto.
11772
11773 2001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11774
11775 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11776
11777 * eval.c (promise_print): Read the promise's value as an object.
11778
11779 (SCM_CEVAL): Don't perform side-effecting operations in macro
11780 parameters.
11781
11782 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11783 conditional expression.
11784
11785 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11786 initializer.
11787
11788 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11789 text, removed redundant computation of effective_length and fixed
11790 the overflow check.
11791
11792 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11793 values.
11794
11795 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11796
11797 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11798
11799 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11800 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11801
11802 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11803
11804 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11805 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11806 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11807 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11808
11809 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11810
11811 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11812
11813 * ramap.c (ramap_rp): Removed bogus `;'.
11814
11815 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11816 problem.
11817
11818 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11819 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11820 Read SCM objects rather than scm_bits_t values.
11821
11822 * tags.h (SCM_VOIDP_TEST): Removed.
11823
11824 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
11825 value of 2 now corresponds to the former 1, the current 1
11826 corresponds to the former situation that SCM_VOIDP_TEST was
11827 defined.
11828
11829 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
11830 If this appears to be not ANSI compliant, we will change it to
11831 typedef struct scm_unused_struct { } * SCM;
11832 Thanks to Han-Wen Nienhuys for the suggestion.
11833
11834 * unif.c (scm_array_set_x): Fix typing problem, and use
11835 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
11836 dealing with uniform vectors.
11837
11838 2001-05-27 Michael Livshin <mlivshin@bigfoot.com>
11839
11840 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
11841 (scm_igc): mark from them, too (precisely, not conservatively!).
11842
11843 * root.h (scm_gc_registered_roots): new object in
11844 scm_sys_protects.
11845
11846 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
11847 `scm_protect_object'. shouldn't call it at all, though, it seems.
11848
11849 * gc.c (scm_[un]protect_object): deprecated.
11850 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
11851 (scm_gc_[un]register_root[s]): new.
11852
11853 * gc.h: add prototypes for scm_gc_[un]protect_object,
11854 scm_gc_[un]register_root[s].
11855
11856 2001-05-26 Michael Livshin <mlivshin@bigfoot.com>
11857
11858 revert the controversial part of the 2001-05-24 changes.
11859
11860 2001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
11861
11862 * modules.c (scm_env_module): Exported to Scheme.
11863
11864 * eval.c (scm_debug_opts): New option `show-file-name'.
11865
11866 * debug.h (SCM_SHOW_FILE_NAME): New.
11867
11868 * backtrace.c: Include "libguile/filesys.h".
11869 (sym_base, display_backtrace_get_file_line,
11870 display_backtrace_file, display_backtrace_file_and_line): New.
11871 (display_frame): Call display_backtrace_file_and_line if that is
11872 requested.
11873 (display_backtrace_body): Call scm_display_backtrace_file if
11874 requested.
11875
11876 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
11877 Prototypes removed since there's no definition for these
11878 functions.
11879
11880 2001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11881
11882 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
11883 Changed use of scm_array->scm_array_t and
11884 scm_array_dim->scm_array_dim_t to enable build with
11885 --disable-deprecated.
11886
11887 2001-05-24 Michael Livshin <mlivshin@bigfoot.com>
11888
11889 The purpose of this set of changes is to regularize Guile's usage
11890 of ANSI C integral types, with the following ideas in mind:
11891
11892 - SCM does not nesessarily have to be long.
11893 - long is not nesessarily enough to store pointers.
11894 - long is not nesessarily the same size as int.
11895
11896 The changes are incomplete and possibly buggy. Please test on
11897 something exotic.
11898
11899 * validate.h
11900 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
11901 new macros.
11902
11903 * unif.h: type renaming:
11904 scm_array -> scm_array_t
11905 scm_array_dim -> scm_array_dim_t
11906 the old names are deprecated, all in-Guile uses changed.
11907
11908 * tags.h (scm_ubits_t): new typedef, representing unsigned
11909 scm_bits_t.
11910
11911 * stacks.h: type renaming:
11912 scm_info_frame -> scm_info_frame_t
11913 scm_stack -> scm_stack_t
11914 the old names are deprecated, all in-Guile uses changed.
11915
11916 * srcprop.h: type renaming:
11917 scm_srcprops -> scm_srcprops_t
11918 scm_srcprops_chunk -> scm_srcprops_chunk_t
11919 the old names are deprecated, all in-Guile uses changed.
11920
11921 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
11922 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
11923 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
11924 vectors.c, vports.c, weaks.c:
11925 various int/size_t -> size_t/scm_bits_t changes.
11926
11927 * random.h: type renaming:
11928 scm_rstate -> scm_rstate_t
11929 scm_rng -> scm_rng_t
11930 scm_i_rstate -> scm_i_rstate_t
11931 the old names are deprecated, all in-Guile uses changed.
11932
11933 * procs.h: type renaming:
11934 scm_subr_entry -> scm_subr_entry_t
11935 the old name is deprecated, all in-Guile uses changed.
11936
11937 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
11938 type renaming:
11939 scm_option -> scm_option_t
11940 the old name is deprecated, all in-Guile uses changed.
11941
11942 * objects.c: various long -> scm_bits_t changes.
11943 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
11944
11945 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
11946 SCM_I_FIXNUM_BIT.
11947
11948 * num2integral.i.c: new file, multiply included by numbers.c, used
11949 to "templatize" the various integral <-> num conversion routines.
11950
11951 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
11952 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
11953 deprecated.
11954 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
11955 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
11956 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
11957 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
11958 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
11959 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
11960 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
11961 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
11962 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
11963 scm_num2size): new functions.
11964
11965 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
11966
11967 * load.c: change int -> size_t in various places (where the
11968 variable is used to store a string length).
11969 (search-path): call scm_done_free, not scm_done_malloc.
11970
11971 * list.c (scm_ilength): return a scm_bits_t, not long.
11972 some other {int,long} -> scm_bits_t changes.
11973
11974 * hashtab.c: various [u]int -> scm_bits_t changes.
11975 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
11976 (scm_ihashx): n: uint -> scm_bits_t
11977 use scm_bits2num instead of scm_ulong2num.
11978
11979 * gsubr.c: various int -> scm_bits_t changes.
11980
11981 * goops.[hc]: various {int,long} -> scm_bits_t changes.
11982
11983 * gh_data.c (gh_num2int): no loss of precision any more.
11984
11985 * gh.h (gh_str2scm): len: int -> size_t
11986 (gh_{get,set}_substr): start: int -> scm_bits_t,
11987 len: int -> size_t
11988 (gh_<num>2scm): n: int -> scm_bits_t
11989 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
11990 (gh_length): return scm_bits_t, not unsigned long.
11991
11992 * gc.[hc]: various small changes relating to many things stopping
11993 being long and starting being scm_[u]bits_t instead.
11994 scm_mallocated should no longer wrap around.
11995
11996 * fports.h: type renaming:
11997 scm_fport -> scm_fport_t
11998 the old name is deprecated, all in-Guile uses changed.
11999
12000 * fports.c (fport_fill_input): count: int -> scm_bits_t
12001 (fport_flush): init_size, remaining, count: int -> scm_bits_t
12002
12003 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
12004 those prototypes, as the functions they prototype don't exist.
12005
12006 * fports.c (default_buffer_size): int -> size_t
12007 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
12008 default_size: int -> size_t
12009 (scm_setvbuf): csize: int -> scm_bits_t
12010
12011 * fluids.c (n_fluids): int -> scm_bits_t
12012 (grow_fluids): old_length, i: int -> scm_bits_t
12013 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
12014 scm_bits_t
12015 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
12016
12017 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
12018 the new and shiny SCM_NUM2INT.
12019
12020 * extensions.c: extension -> extension_t (and made a typedef).
12021
12022 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
12023 there are no nasty surprises if/when the various deeply magic tag
12024 bits move somewhere else.
12025
12026 * eval.c: changed the locals used to store results of SCM_IFRAME,
12027 scm_ilength and such to be of type scm_bits_t (and not int/long).
12028 (iqq): depth, edepth: int -> scm_bits_t
12029 (scm_eval_stack): int -> scm_bits_t
12030 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
12031 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
12032 i: int -> scm_bits_t
12033
12034 * environments.c: changed the many calls to scm_ulong2num to
12035 scm_ubits2num.
12036 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
12037
12038 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
12039
12040 * debug.h: type renaming:
12041 scm_debug_info -> scm_debug_info_t
12042 scm_debug_frame -> scm_debug_frame_t
12043 the old names are deprecated, all in-Guile uses changed.
12044 (scm_debug_eframe_size): int -> scm_bits_t
12045
12046 * debug.c (scm_init_debug): use scm_c_define instead of the
12047 deprecated scm_define.
12048
12049 * continuations.h: type renaming:
12050 scm_contregs -> scm_contregs_t
12051 the old name is deprecated, all in-Guile uses changed.
12052 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
12053 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
12054
12055 * continuations.c (scm_make_continuation): change the type of
12056 stack_size from long to scm_bits_t.
12057
12058 * ports.h: type renaming:
12059 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
12060 scm_port -> scm_port_t
12061 scm_ptob_descriptor -> scm_ptob_descriptor_t
12062 the old names are deprecated, all in-Guile uses changed.
12063 (scm_port_t.entry): int -> scm_bits_t.
12064 (scm_port_t.line_number): int -> long.
12065 (scm_port_t.putback_buf_size): int -> size_t.
12066
12067 * __scm.h (long_long, ulong_long): deprecated (they pollute the
12068 global namespace and have little value beside that).
12069 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
12070 SCM handle).
12071 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
12072 exist (for size_t & ptrdiff_t).
12073 (scm_sizet): deprecated.
12074
12075 * Makefile.am (noinst_HEADERS): add num2integral.i.c
12076
12077 2001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
12078
12079 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
12080 SCM_VARIABLE_INIT since that it what it used to be.
12081
12082 * deprecation.c (scm_include_deprecated_features): Make docstring
12083 ANSIsh. Thanks to Matthias Köppe!
12084
12085 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
12086
12087 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
12088 needed for weak-key hashtables.
12089
12090 * procs.c (scm_make_subr_with_generic): Add missing last argument
12091 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
12092
12093 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
12094 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
12095
12096 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
12097
12098 2001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
12099
12100 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
12101 `duplicate_string'. Do not use an indirect cell, store symbol
12102 directly in collision list of hash table.
12103 (duplicate_string): Removed.
12104
12105 * init.c (scm_init_guile_1): Call scm_init_extensions.
12106
12107 * Makefile.am: Add "extensions.c" and related files in all the
12108 right places.
12109
12110 * extensions.h, extension.c: New files.
12111
12112 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
12113
12114 * modules.h (scm_system_module_env_p): Move out of deprecated
12115 section.
12116
12117 * rw.h (scm_init_rw): Added prototype.
12118
12119 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
12120 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
12121 New functions. They replace scm_make_gsubr and
12122 scm_make_gsubr_with_generic. The `make' variants only create the
12123 gsubr object, while the `define' variants also put it into the
12124 current module. Changed all callers.
12125 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
12126
12127 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
12128 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
12129 functions. They replace scm_make_subr, scm_make_subr_opt and
12130 scm_make_subr_with_generic. The `make' variants only create the
12131 subr object, while the `define' variants also put it into the
12132 current module. Changed all callers.
12133 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
12134 Deprecated.
12135
12136 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
12137 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
12138 the comments above.
12139
12140 2001-05-19 Neil Jerram <neil@ossau.uklinux.net>
12141
12142 * throw.c (scm_lazy_catch): Slight docstring clarification.
12143
12144 2001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
12145
12146 * throw.c: Lazy-catch handlers are no longer allowed to return.
12147 Fixed comments throughout.
12148 (scm_ithrow): Signal an error when a lazy-catch handler returns.
12149 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
12150 recognized as such.
12151
12152 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
12153 refered to s_scm_minor_version previously.
12154
12155 * modules.h, modules.c: Moved around a lot of code so that
12156 deprecated features appear at the bottom.
12157 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
12158 module_prefix, make_modules_in_var, beautify_user_module_x_var,
12159 scm_the_root_module, scm_make_module, scm_ensure_user_module,
12160 scm_load_scheme_module): Deprecated.
12161 (scm_system_module_env_p): Return SCM_BOOL_T directly for
12162 environments corresponding to the root module.
12163 (convert_module_name, scm_c_resolve_module,
12164 scm_c_call_with_current_module, scm_c_define_module,
12165 scm_c_use_module, scm_c_export): New.
12166 (the_root_module): New static variant of scm_the_root_module. Use
12167 it everywhere instead of scm_the_root_module.
12168
12169 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
12170 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
12171 (scm_c_with_fluid): New.
12172 (scm_with_fluids): Use scm_c_with_fluids instead of
12173 scm_internal_with_fluids.
12174
12175 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
12176 `scm_init_goops'. Do not explicitly create/switch modules.
12177 Return SCM_UNSPECIFIED.
12178 (scm_init_goops): Only register `%init-goops-builtins' procedure.
12179 (scm_load_goops): Use scm_c_resolve_module instead of
12180 scm_resolve_module.
12181
12182 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
12183 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
12184 `scm_init_rw' prior to loading the startup files.
12185
12186 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
12187 scm_init_rdelim. Do not explicitly create/switch modules.
12188 Return SCM_UNSPECIFIED.
12189 (scm_init_rdelim): Only register `%init-rdelim-builtins'
12190 procedure.
12191
12192 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
12193 explicitly create/switch modules. Return SCM_UNSPECIFIED.
12194 (scm_init_rw): Only register `%init-rw-builtins' procedure.
12195
12196 * script.c (scm_shell): Evaluate the compiled switches in the
12197 current module, not in the root module.
12198
12199 2001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
12200
12201 * fluids.c (scm_c_with_fluids): Rename from
12202 scm_internal_with_fluids.
12203 (scm_internal_with_fluids): Deprecated.
12204 (scm_c_with_fluid): New.
12205
12206 2001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12207
12208 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
12209
12210 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
12211 accessed with SCM_C[AD]R.
12212
12213 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
12214
12215 2001-05-16 Rob Browning <rlb@cs.utexas.edu>
12216
12217 * version.c (s_scm_major_version): doc fixes.
12218 (s_scm_minor_version): doc fixes.
12219 (s_scm_minor_version): new function.
12220
12221 * version.h (scm_init_version): new function.
12222
12223 * versiondat.h.in: add GUILE_MICRO_VERSION.
12224
12225 2001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
12226
12227 * deprecation.c (scm_init_deprecation): Renamed
12228 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
12229
12230 2001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
12231
12232 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
12233 dependent on cpp_cnvt.awk
12234
12235 2001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12236
12237 * script.c (scm_compile_shell_switches): New command line option
12238 `--use-srfi' for loading a list of SRFIs on startup.
12239 (scm_shell_usage): Added `--use-srfi' to help message.
12240
12241 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12242
12243 Merged from mvo-vcell-cleanup-1-branch.
12244
12245 The concept of vcells has been removed from Guile. With it,
12246 explicit obarrays and associated operations are gone. Use
12247 hashtables instead of obarrays.
12248
12249 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
12250 result as variable instead of vcell. Glocs no longer point to a
12251 vcell but to a variable. Use scm_c_define instead of
12252 scm_sysintern and treat the result as a variable (which it is),
12253 not a vcell.
12254
12255 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
12256 SCM_DEFVARIABLEP): Deprecated.
12257 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
12258 (variable_print): Do not print name of variable.
12259 (variable_equalp): Compare values, not vcells.
12260 (anonymous_variable_sym): Removed.
12261 (make_vcell_variable): Removed.
12262 (make_variable): New, as replacement.
12263 (scm_make_variable, scm_make_undefined_variable): Do not take name
12264 hint parameter.
12265 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
12266 error in that case.
12267 (scm_builtin_variable): Deprecated.
12268
12269 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
12270 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
12271 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
12272 scm_sysintern, scm_sysintern0, scm_symbol_value0,
12273 scm_string_to_obarray_symbol, scm_intern_symbol,
12274 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
12275 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
12276 Deprecated and moved to "symbols-deprecated.c".
12277 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
12278 (scm_init_symbols): Call scm_init_symbols_deprecated.
12279 * symbols-deprecated.c: New file.
12280 * Makefile.am: Added symbols-deprecated.c and related files in all
12281 the right places.
12282
12283 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
12284 SCM_GLOBAL_VCELL_INIT): Deprecated.
12285 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
12286 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
12287
12288 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
12289 SCM_GLOC_SYM.
12290
12291 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
12292 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
12293 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
12294 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
12295 Changed according to the `throughout' comments.
12296
12297 * modules.h, modules.c (scm_module_system_booted_p): Changed type
12298 to `int'.
12299 (scm_module_type): Removed.
12300 (the_root_module): Renamed to the_root_module_var. Now points to
12301 a variable instead of a vcell. Updated all uses.
12302 (scm_the_root_module): Return SCM_BOOL_F when module systems
12303 hasn't been booted yet.
12304 (SCM_VALIDATE_STRUCT_TYPE): Removed.
12305 (scm_post_boot_init_modules): Made static.
12306 (scm_set_current_module): Call scm_post_boot_init_modules on first
12307 call.
12308 (make_modules_in, beautify_user_module_x, resolve_module,
12309 try_module_autoload, module_make_local_var_x): Tacked on "_var"
12310 suffix. Now point to variables instead of vcells. Updated all
12311 uses.
12312 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
12313 and return SCM_BOOL_F in that case.
12314 (scm_module_transformer): Likewise.
12315 (sym_module, scm_lookup_closure_module, scm_env_module): New.
12316 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
12317 (scm_eval_closure_lookup): Do not allow new definitions when
12318 `interface' flag is set.
12319 (scm_standard_interface_eval_closure): New.
12320 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
12321 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
12322 scm_c_lookup, scm_c_module_define, scm_c_define,
12323 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
12324 scm_modules_prehistory): New.
12325 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
12326 instead of scm_intern0.
12327
12328 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
12329 symbol.
12330
12331 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
12332 hashtable operations to maintain the keywords, not obarray ones.
12333
12334 * init.c (scm_load_startup_files): Do not call
12335 scm_post_boot_init_modules. This is done by
12336 scm_set_current_module now.
12337 (scm_init_guile_1): Call scm_modules_prehistory. Call
12338 scm_init_variable early on.
12339
12340 * goops.c (s_scm_sys_goops_loaded): Get
12341 var_compute_applicable_methods from scm_sym2var, not from a direct
12342 invocation of scm_goops_lookup_closure.
12343
12344 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
12345
12346 * gc.c: Added simple debugging hack to mark phase of GC: When
12347 activated, do not tail-call scm_gc_mark. This gives nice
12348 backtraces.
12349 (scm_unhash_name): Removed.
12350
12351 * feature.c (features): Renamed to features_var. Now points to a
12352 variable instead of a vcell. Updated all uses.
12353
12354 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
12355 `scm_current_module_lookup_closure' which will do the right thing
12356 when the module system hasn't been booted yet.
12357 (SCM_GLOC_SYM): Removed.
12358 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
12359 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
12360
12361 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
12362 instead of with vcells. Do not overwrite `var' with the result of
12363 the lookup, use the new `real_var' instead. Remove `var2' in
12364 exchange (which was only used with threads).
12365 (sym_three_question_marks): New.
12366 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
12367 `SCM_GLOC_SYM'.
12368 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
12369 (scm_m_atfop): Expect the function definition to be a variable
12370 instead of a vcell.
12371 (scm_macroexp): Do not use `unmemocar', explicitely remember the
12372 symbol instead.
12373 (scm_unmemocopy): Removed thoughts about anti-macro interface.
12374 (scm_eval_args): Use more explicit code in the gloc branch of the
12375 atrocious struct ambiguity test. The optimizer will sort this
12376 out.
12377 (scm_deval_args): Likewise.
12378 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
12379 remember the symbol instead. Added some comments where
12380 scm_tc3_cons_gloc really exclusively refers to structs.
12381 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
12382 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
12383 of scm_sysintern in general.
12384
12385 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
12386 explicit magic.
12387
12388 * debug.c (s_scm_make_gloc): Only allow proper variables, no
12389 pairs. Put the variable directly in the gloc.
12390 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
12391 (scm_init_debug): Use scm_c_define instead scm_sysintern.
12392
12393 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
12394
12395 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
12396 scm_the_last_stack_fluid_var. It now points to a variable instead
12397 of a vcell. Updated all uses.
12398 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
12399 instead of a vcell. Updated all uses.
12400
12401 * _scm.h: Include "variables.h" and "modules.h" since almost
12402 everybody needs them now.
12403
12404 * root.h (scm_symhash, scm_symhash_vars): Removed.
12405 * gc.c (scm_init_storage): Do not initialize them.
12406
12407 2001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12408
12409 * eval.c (scm_init_eval): Initialize scm_undefineds and
12410 scm_listofnull.
12411
12412 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
12413 like the SCM_NEWCELL macro counterparts.
12414
12415 (scm_init_storage, scm_init_gc): Moved initialization of
12416 scm_tc16_allocated from scm_init_gc to scm_init_storage.
12417
12418 (scm_init_storage): Moved initialization of scm_undefineds and
12419 scm_listofnull to eval.c, initializion of scm_nullstr to
12420 strings.c, initializion of scm_nullvect to vectors.c.
12421
12422 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
12423 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
12424
12425 * init.c (scm_init_guile_1): Reordered some initializations and
12426 added dependcy information comments.
12427
12428 * load.c (scm_init_load): Use scm_nullstr.
12429
12430 * strings.c (scm_init_strings): Initialize scm_nullstr.
12431
12432 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
12433
12434 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
12435
12436 * values.c (print_values): Print as a unreadable object, not as
12437 multiple lines. Thanks to Matthias Köppe!
12438
12439 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
12440
12441 * deprecation.c: Fixed copyright date.
12442
12443 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
12444 DEPRECATION_H to SCM_DEPRECATION_H.
12445
12446 2001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
12447
12448 * guile-doc-snarf.in: Update copyright.
12449 Fix relative path bug. Thanks to Sergey Poznyakoff.
12450
12451 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12452
12453 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
12454 accept open ports. Thanks to Quetzalcoatl Bradley!
12455
12456 2001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12457
12458 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
12459 has 779 primitives on startup.
12460
12461 2001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
12462
12463 * eval.c (scm_i_eval): Copy expression before passing it to
12464 SCM_XEVAL. The copy operation was removed unintendedly during my
12465 change on 2001-03-25.
12466
12467 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12468
12469 from Matthias Köppe (thanks!):
12470
12471 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12472 portable.
12473
12474 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12475 docstring.
12476
12477 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12478
12479 * gc.c (scm_init_gc): Added FIXME comment.
12480
12481 * hooks.c: Since hooks don't have a name any more, it is not
12482 necessary to include objprop.h.
12483
12484 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12485
12486 (symbol_name, scm_make_hook_with_name): Removed.
12487
12488 (scm_create_hook): Don't set the hook's name property.
12489
12490 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12491
12492 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12493
12494 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12495
12496 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12497 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12498 FLOBUFLEN and define it unconditionally.
12499
12500 2001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12501
12502 * gh_data.c (gh_lookup): Call gh_module_lookup with
12503 `scm_current_module ()', not `#f'.
12504 (gh_module_lookup): Expect a module instead of an obarray as first
12505 argument and do lookup in that module.
12506
12507 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12508 arrays. The length of array is already determined differently and
12509 scm_uniform_vector_length does not work on arrays.
12510
12511 2001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12512
12513 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12514 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12515
12516 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12517 they are not used. Changed `wrong type' error into `wrong num
12518 args' error. Changed all callers.
12519
12520 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12521 arguments are supplied.
12522
12523 2001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12524
12525 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12526 describe `regexp/notbol' and `regexp/noteol' execution flags.
12527
12528 * strop.c (scm_substring_move_x): Doc fix; nfc.
12529
12530 2001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12531
12532 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12533 (scm_set_object_procedure_x): Use it to check argument. Fix
12534 docstring.
12535
12536 * evalext.c (scm_definedp): Fix docstring.
12537
12538 2001-05-05 Gary Houston <ghouston@arglist.com>
12539
12540 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12541 support.
12542
12543 2001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12544
12545 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12546 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12547 Change R4RS references to R5RS.
12548
12549 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12550 docstring source are correctly reproduced in the output (ii)
12551 we don't anymore get occasional trailing quotes. Also reorganized
12552 and commented the code a little.
12553
12554 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12555 fixes.
12556
12557 2001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12558
12559 * strop.c (scm_string_split): New procedure.
12560
12561 * strop.h (scm_string_split): Added prototype.
12562
12563 2001-05-04 Gary Houston <ghouston@arglist.com>
12564
12565 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12566 Dale P. Smith.
12567
12568 2001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12569
12570 * rw.c: Include "modules.h" and "strports.h".
12571
12572 * net_db.h (scm_gethost): Added prototype.
12573
12574 * deprecation.h, deprecation.c: New.
12575 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12576 (DOT_X_FILES): Added "deprecation.x".
12577 (modinclude_HEADERS): Added "deprecation.h".
12578
12579 * init.c: Include "deprecation.h".
12580 (scm_init_guile_1): Call scm_init_deprecation.
12581
12582 2001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12583
12584 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12585 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12586 New.
12587
12588 2001-04-29 Gary Houston <ghouston@arglist.com>
12589
12590 * rw.c: new file, implementing C part of module (ice-9 rw).
12591 (scm_read_string_x_partial): moved from ioext.c
12592 (scm_init_rw): new proc.
12593 * rw.h: new file.
12594 init.c: include rw.h and call scm_init_rw.
12595 Makefile.am: include rw.c and rw.h.
12596
12597 2001-04-28 Rob Browning <rlb@cs.utexas.edu>
12598
12599 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12600 know what's supposed to happen to it.
12601
12602 * list.h (scm_list_star): deprecation expired - removed.
12603
12604 * numbers.h (scm_dblproc): deprecation expired - removed.
12605 (SCM_UNEGFIXABLE): deprecation expired - removed.
12606 (SCM_FLOBUFLEN): deprecation expired - removed.
12607 (SCM_INEXP): deprecation expired - removed.
12608 (SCM_CPLXP): deprecation expired - removed.
12609 (SCM_REAL): deprecation expired - removed.
12610 (SCM_IMAG): deprecation expired - removed.
12611 (SCM_REALPART): deprecation expired - removed.
12612 (scm_makdbl): deprecation expired - removed.
12613 (SCM_SINGP): deprecation expired - removed.
12614 (SCM_NUM2DBL): deprecation expired - removed.
12615 (SCM_NO_BIGDIG): deprecation expired - removed.
12616
12617 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12618 (scm_tc_dblr): deprecation expired - removed.
12619 (scm_tc_dblc): deprecation expired - removed.
12620 (scm_tc16_flo): deprecation expired - removed.
12621 (scm_tc_flo): deprecation expired - removed.
12622
12623 * tag.h (scm_tag): deprecation expired - removed.
12624
12625 * tag.c: (scm_tag): deprecation expired - removed.
12626
12627 * ioext.c: (scm_fseek): deprecation expired - removed.
12628
12629 * ioext.h (scm_fseek): deprecation expired - removed.
12630
12631 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12632
12633 * gh.h (gh_int2scmb): deprecation expired - removed.
12634
12635 2001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12636
12637 * stacks.c (scm_make_stack): Fix typo in docstring.
12638
12639 2001-04-27 Rob Browning <rlb@cs.utexas.edu>
12640
12641 * error.c (scm_sysmissing): deprecation expired - removed.
12642
12643 * error.h (scm_sysmissing): deprecation expired - removed.
12644
12645 * gc.c
12646 (scm_init_gc): gc-thunk deprecation expired - removed.
12647 (scm_gc_vcell): deprecation expired - removed.
12648 (gc_async_thunk): scm_gc_vcell related code removed.
12649
12650 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12651
12652 * strings.h
12653 (SCM_NSTRINGP): deprecation expired - removed.
12654 (SCM_NRWSTRINGP): deprecation expired - removed.
12655
12656 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12657
12658 * chars.h
12659 (SCM_ICHRP): deprecation expired - removed.
12660 (SCM_ICHR): deprecation expired - removed.
12661 (SCM_MAKICHR): deprecation expired - removed.
12662
12663 * ports.h
12664 (SCM_INPORTP): deprecation expired - removed.
12665 (SCM_OUTPORTP): deprecation expired - removed.
12666
12667 2001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12668
12669 * modules.c (scm_module_type): New.
12670 (scm_post_boot_init_modules): Initialize from Scheme value.
12671 (the_module, scm_current_module, scm_init_modules): the_module is
12672 now a C only fluid.
12673 (scm_current_module): Export to Scheme.
12674 (scm_set_current_module): Do not call out to Scheme, do all the
12675 work in C. Export procedure to Scheme. Only accept modules, `#f'
12676 is no longer valid as the current module. Only set
12677 scm_top_level_lookup_closure_var and scm_system_transformer when
12678 they are not deprecated.
12679 (scm_module_transformer, scm_current_module_transformer): New.
12680
12681 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12682 scm_current_module_transformer, scm_module_transformer): New.
12683
12684 * gh_data.c: Removed FIXME comment about gh_lookup returning
12685 SCM_UNDEFINED. That's the right thing to do.
12686
12687 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12688 into the conditionally compiled sections.
12689 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12690 scm_current_module_transformer instead of scm_system_transformer.
12691 * init.c (start_stack): Move initialization of
12692 scm_system_transformer to the deprecated section.
12693
12694 2001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12695
12696 * throw.c (scm_throw): Correct docstring.
12697
12698 2001-04-22 Gary Houston <ghouston@arglist.com>
12699
12700 * socket.c: attempted to improve the docstrings slightly.
12701
12702 * net_db.c: remove bogus "close" declaration.
12703 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12704 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12705 moved to socket.c.
12706 * net_db.h: declarations moved too.
12707
12708 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12709 long.
12710 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12711 (VALIDATE_INET6): new macro.
12712 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12713 inet-pton and inet-ntop.
12714 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12715 (scm_addr_vector): use ipv6_net_to_num.
12716
12717 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12718
12719 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12720 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12721
12722 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12723 when compiled in debug mode.
12724
12725 (scm_gc_sweep): Only call smob's free function if it is defined.
12726
12727 * print.c (scm_iprin1): No need to check for validity of smob
12728 type or existence of print function.
12729
12730 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12731 Resizing will not work well with preemptive threading.
12732
12733 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12734
12735 (scm_make_smob_type): Extracted initialization of smob
12736 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12737 of the critical section.
12738
12739 (scm_smob_prehistory): Initialize all smob descriptors. By
12740 default, don't assign a smob free function: Most smob types don't
12741 need one.
12742
12743 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12744
12745 2001-04-21 Gary Houston <ghouston@arglist.com>
12746
12747 * socket.c (FLIP_NET_HOST_128): new macro.
12748 (scm_fill_sockaddr): use new macro.
12749 (scm_addr_vector): completed IPv6 address support. added const
12750 to the address parameter.
12751
12752 2001-04-20 Gary Houston <ghouston@arglist.com>
12753
12754 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12755 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12756 is defined.
12757 (scm_addr_vector): use a switch instead of multiple if statements.
12758 Add support for IPv6 (incomplete) .
12759 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
12760
12761 2001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12762
12763 * struct.c (scm_free_structs): Only pairs may be accessed with
12764 SCM_C[AD]R.
12765
12766 2001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12767
12768 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12769
12770 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12771 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12772 parentheses in order to get the correct associativity.
12773
12774 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12775
12776 * unif.c (scm_array_to_list): Added missing handling of arrays of
12777 bytes. Thanks to Masao Uebayashi for the bug report.
12778
12779 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12780
12781 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12782 consistently.
12783
12784 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12785
12786 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12787
12788 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12789 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
12790 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
12791 SCM_CLOSURE_FORMALS.
12792
12793 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12794 (scm_i_procedure_arity): Prefer stronger predicates like
12795 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12796
12797 * macros.c (macro_print): Extracted macro printing code from
12798 print.c and simplified it.
12799
12800 (scm_macro_type): Use SCM_MACRO_TYPE;
12801
12802 (scm_init_macros): Use macro_print for printing macros.
12803
12804 * print.c (scm_print_opts): Improved option documentation.
12805
12806 (scm_iprin1): Extracted printing of macros to macros.c.
12807 Simplified printing of ordinary closures.
12808
12809 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12810 Martin Grabmueller for the bug report.
12811
12812 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12813
12814 This patch eliminates some further applications of SCM_C[AD]R to
12815 non pair cells.
12816
12817 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12818 never been applied to real pairs.
12819
12820 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12821
12822 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
12823
12824 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
12825 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
12826 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
12827
12828 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
12829 Added.
12830
12831 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
12832 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
12833
12834 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
12835 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
12836 SCM_SET{AND,OR}_CAR.
12837
12838 2001-04-17 Gary Houston <ghouston@arglist.com>
12839
12840 * some initial support for IPv6:
12841
12842 * socket.c (scm_fill_sockaddr): improve the argument validation.
12843 don't allocate memory until all args are checked. instead of
12844 unconditional memset of soka, try setting sin_len to 0 if
12845 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
12846 (scm_socket, scm_connect): extend docstrings for IPv6.
12847 (scm_init_socket): intern AF_INET6 and PF_INET6.
12848
12849 2001-04-17 Niibe Yutaka <gniibe@m17n.org>
12850
12851 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
12852 matches SCM_DEFER_INTS at the beginning of the function.
12853
12854 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
12855
12856 * gc.c (scm_igc): Unconditionally call
12857 SCM_CRITICAL_SECTION_START/END.
12858
12859 * fluids.c (next_fluid_num): Unconditionally call
12860 SCM_CRITICAL_SECTION_START/END.
12861 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
12862
12863 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
12864 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
12865 Removed.
12866
12867 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
12868 Defined as nothing for the case of !defined(USE_THREADS).
12869 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
12870 Removed.
12871 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
12872 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
12873 LINE.
12874 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
12875 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
12876 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
12877 SCM_CRITICAL_SECTION_START/END.
12878 (SCM_REALLOW_INTS: Bug fix. Don't call
12879 SCM_THREAD_SWITCHING_CODE.
12880 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
12881 SCM_THREAD_SWITCHING_CODE directly.
12882 (SCM_ENTER_A_SECTION): Unconditionally use
12883 SCM_CRITICAL_SECTION_START/END. (was:
12884 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
12885
12886 2001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12887
12888 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
12889 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
12890 allowed to explicitly set this macro via the CFLAGS variable
12891 during make.
12892
12893 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
12894 (SCM_THREAD_CRITICAL_SECTION_START,
12895 SCM_THREAD_CRITICAL_SECTION_END): Renamed
12896 SCM_THREAD_CRITICAL_SECTION_START/END to
12897 SCM_CRITICAL_SECTION_START/END.
12898
12899 2001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
12900
12901 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
12902 instead of bzero.
12903
12904 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
12905 (MISSING_BZERO_DECL): Remove the declaration.
12906
12907 Thanks to NIIBE Yutaka.
12908
12909 2001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12910
12911 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
12912 goops module should be registered in order to work for an
12913 application which uses libguile statically linked.)
12914
12915 2001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
12916
12917 * numbers.[ch] (scm_num2long, scm_num2long_long,
12918 scm_num2ulong_long, scm_num2ulong): Argument position is an
12919 unsigned integer.
12920
12921 * environments.c (eval_environment_folder,
12922 import_environment_folder), gh_data.c (gh_scm2longs,
12923 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
12924 for integers and pointers, respectively.
12925
12926 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
12927 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
12928 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
12929 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
12930
12931 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
12932 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
12933 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
12934 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
12935 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
12936 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
12937
12938 2001-04-09 Neil Jerram <neil@ossau.uklinux.net>
12939
12940 * strings.c (scm_read_only_string_p): Update docstring to reflect
12941 current (non-)usage of "read only" strings.
12942 (scm_make_shared_substring): Clarify docstring by changing
12943 "semantics" to "arguments".
12944
12945 2001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12946
12947 * hooks.c (scm_make_hook, scm_make_hook_with_name),
12948 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
12949 improvements.
12950
12951 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12952
12953 The following changes make the documentation more consistent.
12954
12955 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
12956 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
12957 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
12958 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
12959 ... @end lisp.
12960
12961 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
12962 (scm_array_dimensions, scm_make_shared_array),
12963 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
12964 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
12965 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
12966 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
12967 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
12968 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
12969 macros.c (scm_makmmacro), list.c (scm_append), environments.c
12970 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
12971 @example ... @end example to @lisp ... @end lisp.
12972
12973 * weaks.c (scm_weak_vector): Corrected docstring.
12974
12975 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
12976 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
12977 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
12978 (scm_hashx_set_x, scm_hashx_get_handle),
12979 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
12980 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
12981 vectors.c (scm_vector_fill_x), strings.c
12982 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
12983 objprop.c (scm_set_object_properties_x):
12984 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
12985 strports.c (scm_call_with_input_string), ports.c
12986 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
12987 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
12988 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
12989 (scm_make_weak_vector,scm_weak_vector_p),
12990 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
12991 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
12992 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12993 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
12994 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
12995 Made parameter names match documentation by renaming parameters
12996 and/or fixing docstrings.
12997
12998 * numbers.c (scm_ash): Corrected Texinfo markup.
12999
13000 * strop.c (scm_string_index, scm_string_rindex),
13001 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
13002
13003 * vports.c (scm_make_soft_port), unif.c
13004 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
13005 (scm_dimensions_to_uniform_array, scm_transpose_array),
13006 (scm_array_in_bounds_p, scm_uniform_vector_ref),
13007 (scm_bit_count, scm_bit_position, scm_bit_count_star),
13008 (scm_array_to_list, scm_list_to_uniform_array),
13009 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
13010 (scm_open_input_string, scm_open_output_string),
13011 (scm_get_output_string), strop.c (scm_string_copy),
13012 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
13013 (scm_get_internal_real_time, scm_times),
13014 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
13015 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
13016 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
13017 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
13018 simpos.c (scm_system), random.c (scm_random_uniform),
13019 (scm_random_normal, scm_random_exp), ramap.c
13020 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
13021 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
13022 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
13023 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
13024 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
13025 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
13026 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
13027 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
13028 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
13029 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
13030 (scm_logand, scm_logior, scm_logxor, scm_lognot),
13031 (scm_integer_expt, scm_bit_extract, scm_logcount),
13032 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
13033 net_db.c (scm_inet_netof, scm_lnaof), modules.c
13034 (scm_interaction_environment), macros.c (scm_makacro),
13035 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
13036 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
13037 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
13038 (scm_fluid_ref), filesys.c (scm_open_fdes),
13039 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
13040 Docstring correction: `Returns' -> `Return'
13041
13042 * gc.c (scm_set_debug_cell_accesses_x):
13043 (s_scm_gc_set_debug_check_freelist_x):
13044 * fluids.c (scm_fluid_p): Added texinfo markup.
13045
13046 * error.c (scm_strerror): Made docstring more precise.
13047
13048 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
13049 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
13050 (scm_symbol_p, scm_symbol_to_string), strorder.c
13051 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
13052 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
13053 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
13054 (scm_string_ci_geq_p), strop.c (scm_string_copy),
13055 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
13056
13057 2001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
13058
13059 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
13060 mode, as suggested by Michael Livshin.
13061
13062 2001-03-31 Michael Livshin <mlivshin@bigfoot.com>
13063
13064 * backtrace.c (display_backtrace_body): since the `print_state'
13065 variable is not used (instead its data field is used directly as
13066 `pstate'), protect it from the hungry compiler optimizations.
13067 thanks to Bill Schottstaedt for the report.
13068
13069 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13070
13071 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
13072 It is only defined and used if guile is compiled with
13073 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
13074 let cells with a free_cell type tag be visible outside of the
13075 garbage collector when in debug mode.
13076
13077 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
13078
13079 (scm_assert_cell_valid): Use a local static variable to avoid
13080 recursion.
13081
13082 (MARK): Only check for rogue cell pointers in debug mode. Use
13083 scm_cellp for this purpose and place all checks for rogue pointers
13084 into that function. Further, since due to conservative scanning
13085 we may encounter free cells during marking, don't use the standard
13086 cell type accessor macro to determine the cell type.
13087
13088 (scm_cellp): Check if the cell pointer actually points into a
13089 card header.
13090
13091 (scm_init_gc): Initalize scm_tc16_allocated.
13092
13093 * gc.h (GCH): Renamed to SCM_GC_H.
13094
13095 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
13096 might be unnecessary, but I feel better this way :-)
13097
13098 (SCM_GC_CELL_TYPE): New macro.
13099
13100 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
13101 in guile, and it is unlikely that they will be applied to real
13102 pairs anyway.
13103
13104 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
13105
13106 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
13107 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
13108
13109 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
13110 make sure that in debug mode no free cell will ever be visible
13111 outside of the garbage collector.
13112
13113 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13114
13115 * async.c (scm_asyncs_pending): Don't use != to compare SCM
13116 values.
13117
13118 * async.c (scm_system_async), variable.c (scm_make_variable,
13119 scm_make_undefined_variable): Use scm_cons to create a pair.
13120
13121 * debug.c (scm_reverse_lookup): Perform proper type checking.
13122 Remove suspicious use of SCM_SLOPPY_CONSP.
13123
13124 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
13125 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
13126 the corresponding optimization.
13127
13128 * eval.c (iqq): Use proper type check.
13129
13130 (scm_m_expand_body): Remove redundant type checks.
13131
13132 (promise_print): Don't access promise cells as pairs.
13133
13134 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
13135 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
13136 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
13137 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
13138 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
13139
13140 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
13141 (scm_iprin1): Use new macro predicate and accessors.
13142
13143 * eval.h (scm_tc16_macro): Removed declaration. It is declared
13144 in macros.h.
13145
13146 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
13147 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
13148 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
13149 SCM_VARIABLE_H. Even the macros that are used to inhibit
13150 including a header file twice should be in the SCM_ namespace.
13151
13152 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
13153 properties.c (scm_primitive_property_ref,
13154 scm_primitive_property_del_x): Prefer stronger predicates like
13155 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13156
13157 * gc.c (MARK): Use proper macros to access procedure-with-setter
13158 cell elements and closure cell elements.
13159
13160 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
13161 access free cells as pairs.
13162
13163 (scm_unprotect_object): scm_hashq_get_handle returns #f if
13164 no hashtab entry is found.
13165
13166 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
13167 SCM_CLR_PORT_OPEN_FLAG.
13168
13169 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
13170 use SCM_SET_C[AD]R for uninitialized cells.
13171
13172 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
13173 If the hashtable has no slots, return #f instead of '(). This
13174 unifies the return value with most assoc-functions.
13175
13176 (scm_hash_fn_ref): Use proper type check.
13177
13178 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
13179 Removed references to non-existing functions from documentation.
13180
13181 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
13182 access keyword cell elements.
13183
13184 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
13185 macros.
13186
13187 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
13188
13189 * print.c (scm_iprlist): Added comment. Improved loop
13190 conditions.
13191
13192 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
13193 pairs.
13194
13195 * smob.c (scm_markcdr): Don't access smob cells as pairs.
13196
13197 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
13198
13199 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
13200 cells as pairs.
13201
13202 * variable.c (variable_print, variable_equalp, scm_variable_ref,
13203 scm_variable_set_x): Use proper macros to access variable cell
13204 elements.
13205
13206 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
13207
13208 * variable.h (SCM_VARVCELL): Don't access variable cells as
13209 pairs.
13210
13211 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
13212 added FIXME comment, removed register specifier.
13213
13214 2001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
13215
13216 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
13217 * init.c (scm_init_guile_1): Don't init goopscore module.
13218
13219 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13220
13221 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
13222
13223 2001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13224
13225 * strop.c (scm_string_to_list): Fixed docstring markup.
13226 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
13227 (scm_string_downcase, scm_string_capitalize_x),
13228 (scm_string_capitalize): Rewrote and corrected docstrings.
13229 (scm_string_ci_to_symbol): Made docstring more explicit.
13230
13231 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13232
13233 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
13234 eval.c can use it.
13235 (scm_call_with_values): Removed.
13236 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
13237 so that it can be exported.
13238 (scm_call_with_values): Removed.
13239
13240 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
13241 * eval.c: Include "libguile/values.h"
13242 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
13243 New.
13244 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
13245 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
13246 New delcarations to support above change.
13247
13248 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
13249 errors with last change.
13250
13251 2001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
13252
13253 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
13254 scm_i_eval): Moved the application of the system transformer from
13255 scm_i_eval to scm_primitive_eval.
13256
13257 2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
13258
13259 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
13260
13261 * strop.c (scm_string_index): Fix docstring line break
13262 regression.
13263
13264 * list.c (scm_cons_star): Fix docstring typo.
13265
13266 2001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13267
13268 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
13269 (big2str), ports.c (scm_drain_input), read.c (scm_read,
13270 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
13271 scm_make_string, scm_string_append), strports.c (st_resize_port,
13272 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
13273 scm_makstr with calls to scm_allocate_string.
13274
13275 * strings.[ch] (scm_allocate_string): New function.
13276
13277 * strings.[ch] (scm_makstr): Deprecated.
13278
13279 2001-03-18 Gary Houston <ghouston@arglist.com>
13280
13281 * posix.c (scm_tmpnam): check that return value from tmpnam is not
13282 NULL. rewrote the docstring.
13283 (scm_mkstemp): new procedure implementing "mkstemp!".
13284 * posix.h: declare scm_mkstemp.
13285
13286 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
13287 normally it would be found in netdb.h.
13288
13289 2001-03-17 Gary Houston <ghouston@arglist.com>
13290
13291 * sort.c (scm_sort): move sortvec variable to avoid a compiler
13292 warning when HAVE_ARRAYS is not defined. move len too.
13293
13294 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
13295 (EXTRA_DOT_X_FILES): let configure set the value.
13296 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
13297
13298 * gc.c (scm_must_malloc): changed the comment explaining when
13299 scm_must variants of malloc/free etc., should be used, based on
13300 explanation from Dirk Herrmann.
13301 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
13302 string with procedure name. use scm_must_malloc instead of malloc.
13303 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
13304 of malloc/free.
13305 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
13306 scm_ungetc): use scm_must variants of malloc/realloc/free.
13307 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
13308
13309 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13310
13311 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13312 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
13313 scm_wrong_type_arg instead.
13314
13315 (SCM_WNA): Deprecated.
13316
13317 * error.[ch] (scm_wta): Deprecated.
13318
13319 * numbers.c (s_i_log): Minor comment fix.
13320
13321 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
13322 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
13323 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
13324 wrong-num-args or misc errors.
13325
13326 * unif.c (scm_make_shared_array, scm_transpose_array,
13327 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
13328 Validate the rest argument (note: this is only done when guile is
13329 built with SCM_DEBUG_REST_ARGUMENT=1)
13330
13331 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
13332 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
13333
13334 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
13335 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
13336
13337 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13338
13339 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
13340 instead of scm_wrong_num_args.
13341
13342 * coop-threads.c: Don't include libguile/strings.h. (Was only
13343 needed for former implementation of SCM_WRONG_NUM_ARGS.)
13344
13345 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
13346 wrong-num-args errors.
13347
13348 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13349
13350 * error.[ch] (scm_error_num_args_subr): New function.
13351
13352 2001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13353
13354 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
13355 (scm_length, scm_append, scm_reverse, scm_list_ref),
13356 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
13357 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
13358 (scm_delete1_x), gc.c (scm_map_free_list),
13359 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
13360 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
13361 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
13362 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
13363 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
13364 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
13365 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
13366
13367 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
13368 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13369 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
13370 symbols.c (scm_symbol_interned_p), numbers.c
13371 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
13372 markup.
13373
13374 2001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
13375
13376 * snarf.h (SCM_CONST_LONG): Deprecated.
13377 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
13378
13379 2001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13380
13381 * numbers.c (scm_num2ulong): Check that a bignum is positive
13382 before looking at the magnitude. Correctly check for overflow
13383 during conversion.
13384 (scm_num2long_long): Likewise.
13385 (scm_num2ulong_long): New.
13386 (ULONG_LONG_MAX): Define if not already defined.
13387 * numbers.h: (scm_num2ulong_long): New prototype.
13388
13389 2001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13390
13391 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
13392
13393 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
13394 (SCM_OPOUTSTRPORTP): New predicate macros.
13395 (scm_open_input_string, scm_open_output_string),
13396 (scm_get_output_string): New prototypes.
13397
13398 * strports.c (scm_open_input_string, scm_open_output_string),
13399 (scm_get_output_string): New procedures (SRFI-6 compliant).
13400 Made scm_tc16_strport non-static.
13401
13402 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13403
13404 * macros.h (SCM_ASSYNT): Removed unused object argument from
13405 signature.
13406
13407 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
13408 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
13409 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
13410 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
13411 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
13412 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
13413 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
13414 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13415 scm_m_atdispatch): Removed unused object argument from call to
13416 SCM_ASSYNT.
13417
13418 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13419
13420 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
13421 const int* to reflect that the input array of integers remains
13422 unchanged. Thanks to Brett Viren for the hint.
13423
13424 2001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13425
13426 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
13427 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
13428 in various places.
13429 (gh_scm2newstr, gh_symbol2newstr): Change call to
13430 scm_must_malloc() to malloc(), because user-free()able memory is
13431 allocated.
13432
13433 * gc.c: Added declaration of `scm_debug_check_freelist'.
13434
13435 2001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13436
13437 * ports.c (scm_port_mode): Changed `mode' array size to 4.
13438
13439 2001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
13440
13441 * strports.c (scm_object_to_string): New procedure.
13442 (scm_strprint_obj): Deprecated.
13443 * strports.h: Reflect the changes.
13444
13445 2001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
13446
13447 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
13448
13449 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13450 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
13451 SCM_ASSYNT to check for correct argument types. Either use some
13452 SCM_VALIDATE_* macro or an explicit test.
13453
13454 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
13455 misc-errors.
13456
13457 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
13458 instead of calling scm_wta.
13459
13460 2001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13461
13462 * load.c (scm_primitive_load, scm_primitive_load_path),
13463 (scm_sys_search_load_path): Corrected docstrings (file ->
13464 filename).
13465
13466 * eval.c (scm_force): Added texinfo markup to docstring.
13467 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13468
13469 * debug-malloc.c: Reinserted #include <stdio.h>.
13470
13471 2001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13472
13473 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13474
13475 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13476 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13477 Use SCM_LISTn instead of scm_listify.
13478
13479 2001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13480
13481 * _scm.h: Removed #include <errno.h>.
13482
13483 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13484 errno variable (can be a macro on some systems, for example when
13485 using linux libc with threads).
13486
13487 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13488 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13489 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13490 #include <errno.h> in these 20 out of 100 files.
13491
13492 2001-03-10 Gary Houston <ghouston@arglist.com>
13493
13494 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13495 not already defined.
13496
13497 2001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13498
13499 * coop.c: Inserted #include <stdio.h>.
13500
13501 * iselect.c: Reinserted #include <stdio.h>.
13502
13503 2001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13504
13505 * posix.c: Replaced `#define' of __USE_XOPEN right before
13506 including unistd.h with a define of _GNU_SOURCE at the very top of
13507 the file.
13508
13509 2001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13510
13511 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13512 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13513 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13514 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13515 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13516 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13517 print.c, procprop.c, procs.c, properties.c, ramap.c,
13518 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13519 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13520 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
13521 Remove #include <stdio.h>
13522 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13523
13524 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13525
13526 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13527
13528 * posix.c (scm_gethostname): Set initial name length to 256 for
13529 Solaris.
13530
13531 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13532
13533 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13534 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13535 (scm_sethostname, scm_gethostname): New prototypes.
13536
13537 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13538 <sys/file.h>, if present.
13539 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13540 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13541 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13542 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13543 (scm_sethostname, scm_gethostname): New procedures.
13544
13545 2001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13546
13547 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13548 not optional (ii) "recommend" spelling correction.
13549
13550 2001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13551
13552 * ramap.c (racp): Removed optimization which caused array copying
13553 to fail if the two arrays shared storage. Re-inserted the IVDEP
13554 macros removed in the change of 2000-03-09. (Don't really have a
13555 complete grasp of what they are for, but they seem to be necessary
13556 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13557
13558 * hash.c (scm_string_hash): Don't downcase characters.
13559
13560 2001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13561
13562 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
13563 size from 277 --> 1009.
13564
13565 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13566 function.
13567
13568 * coop-threads.c: Fixed change of 2001-03-06.
13569
13570 * validate.h: Code formatting.
13571
13572 2001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13573
13574 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13575 (*.doc): Add dependency on guile-snarf.awk.in.
13576
13577 * guile-snarf.awk.in: Neglect spaces at the end of
13578 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13579 middle of docstrings. (To avoid the problem with gcc-2.96.)
13580
13581 2001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13582
13583 * coop-threads.c (scm_call_with_new_thread), load.c
13584 (scm_primitive_load, scm_sys_search_load_path), random.c
13585 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13586 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13587 (potentially) issue a scm-misc-error or wrong-num-args error
13588 message.
13589
13590 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13591 about the expected type with the wrong-type-arg error message.
13592
13593 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13594 a C level bug that can't be fixed from scheme anyway.
13595
13596 2001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13597
13598 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13599 Duplicate bindings are OK in a let* since a let* is semantically
13600 equivalent to a nested set of let:s.
13601
13602 2001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13603
13604 * print.c (scm_print_options): Fixed texinfo in docstring.
13605
13606 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13607 the underlying functions getservent, getprotoent or getnetent
13608 return NULL instead of signalling an error.
13609
13610 2001-03-04 Gary Houston <ghouston@arglist.com>
13611
13612 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13613 taking an unexpectedly large filename for an AF_UNIX socket from
13614 bind/connect/sendto (thanks to Martin Grabmueller).
13615
13616 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13617 former and adjusted the latter.
13618 (scm_socket, scm_socketpair): cosmetic changes.
13619 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13620 size_t as socklen_t substitute. don't restrict args/return values
13621 to INUM: allow full range of int or size_t.
13622 (scm_fill_sockaddr): check arguments before allocating memory, to
13623 avoid leakage. use malloc, not scm_must_malloc.
13624 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13625 substitute. free the sockaddr structure before throwing an error.
13626 (scm_init_add_buffer): procedure removed, together with its static
13627 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13628 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13629 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13630 scm_sendto): use a local buffer instead of scm_addr_buffer.
13631 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13632 not size_t.
13633 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13634 call to detect whether recvfrom could be bothered to set the address.
13635 (scm_init_socket): don't call scm_init_addr_buffer.
13636
13637 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13638
13639 * debug.c (scm_procedure_source, scm_procedure_environment),
13640 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13641 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13642 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13643 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13644 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13645 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13646 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13647 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13648 scm_array_to_list, scm_array_prototype), validate.h
13649 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13650 scm_misc_error or scm_wrong_type_arg instead.
13651
13652 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13653
13654 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13655
13656 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13657 (scm_sys_tag_body): Added.
13658
13659 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13660
13661 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13662 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13663 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13664 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13665 options.c (scm_options), ports.c (scm_remove_from_port_table),
13666 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13667 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13668 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13669 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13670 instead.
13671
13672 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13673
13674 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13675
13676 2001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13677
13678 * eval.c (scm_s_duplicate_bindings): New error message.
13679 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13680
13681 2001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13682
13683 * eval.h (SCM_EVALIM2): New macro. Use it when a
13684 immediate, literal constant should be evaluated.
13685 * eval.c (scm_s_duplicate_formals): New error message string.
13686 (scm_c_improper_memq): New function.
13687 (scm_m_lambda): Check for duplicate arguments.
13688 (scm_ceval, scm_deval): When executing a body: only cons a new
13689 toplevel environment frame when it is different from the
13690 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13691 check for empty combinations; use SCM_EVALIM2 for the same reason
13692 in the non-toplevel loop.
13693 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13694 New labels with the meaning of their non-"nontoplevel" partners,
13695 but they are used when it is known that the body is not evaluated at
13696 top-level.
13697 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13698 reporting for empty combinations.
13699
13700 2001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13701
13702 * Remove dump facilities.
13703 * dump.c, dump.h: Removed.
13704 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13705 * init.c: Remove #include "libguile/dump.h".
13706 (scm_init_guile_1): Remove scm_init_dump.
13707 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13708 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13709 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13710 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13711
13712 * keywords.c: Remove #include "libguile/dump.h".
13713 (keyword_dump, keyword_undump): Removed.
13714 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13715
13716 2001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13717
13718 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13719 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13720 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13721 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13722 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13723 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13724 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13725 to @code{} as the texinfo manual recommends, converted the
13726 examples to use a @lisp{}-environment.
13727
13728 * strports.c (scm_eval_string): Cleaned up the docstring.
13729
13730 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13731 markup.
13732
13733 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13734 (scm_number_to_string, scm_string_to_number, scm_number_p)
13735 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13736 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13737 (scm_ash): Added texinfo markup and removed obsolete @refill.
13738 (scm_gr_p): Corrected comment.
13739 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13740 docstring) comments.
13741 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13742 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13743 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13744 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13745 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13746 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13747 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13748 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13749
13750 2001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13751
13752 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13753 (Obviously nobody compiles with SCM_RECKLESS defined...)
13754
13755 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13756
13757 2001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13758
13759 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13760
13761 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13762
13763 2001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13764
13765 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13766 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13767 since use of `z' suggests that the arguments may be complex.
13768
13769 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13770 typos.
13771
13772 2001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13773
13774 * dump.c (scm_binary_write, scm_binary_read), eval.c
13775 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13776 scm_guardian_greedy_p, scm_make_guardian), fports.c
13777 (scm_file_port_p): Minor docstring fixes.
13778
13779 2001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13780
13781 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
13782
13783 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13784 scm_i_eval.
13785 (make_class_from_template): Do not bother to set the current
13786 module around the call to DEFVAR, scm_eval takes care of that.
13787 (scm_init_goops): Make scm_module_goops and
13788 scm_goops_lookup_closure permanent objects.
13789
13790 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13791 top level, create a fresh top-level environment for each
13792 expression instead of mutating the exisint frame. This is
13793 important when that frame is closed over.
13794
13795 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13796 SCM_DIGSPERLONG instead of DIGSPERLONG.
13797
13798 2001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13799
13800 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13801 before applying arrow procedure in `cond' and before applying
13802 receiver procedure in call-with-current-continuation.
13803 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13804 macro. The argument is expanded more than one time.
13805
13806 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13807 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13808
13809 2001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13810
13811 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13812 notice and license.
13813
13814 2001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13815
13816 * variable.c (scm_make_variable, scm_make_undefined_variable)
13817 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13818 (scm_variable_bound_p), values.c (scm_values)
13819 (scm_call_with_values), unif.c (scm_bit_count)
13820 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13821 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13822 (scm_read_only_string_p, scm_string_length, scm_string_ref)
13823 (scm_string_set_x, scm_substring, scm_string_append), stime.c
13824 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
13825 (scm_copy_random_state, scm_random), print.c (scm_newline)
13826 (scm_write_char, scm_simple_format), debug-malloc.c
13827 (scm_malloc_stats), environments.c (scm_environment_p)
13828 (scm_environment_bound_p, scm_environment_ref)
13829 (scm_environment_fold, scm_environment_define)
13830 (scm_environment_undefine, scm_environment_set_x)
13831 (scm_environment_cell, scm_environment_observe)
13832 (scm_environment_observe_weak, scm_environment_unobserve)
13833 (scm_make_eval_environment, scm_eval_environment_p)
13834 (scm_eval_environment_set_local_x, scm_eval_environment_local)
13835 (scm_eval_environment_imported)
13836 (scm_eval_environment_set_imported_x, scm_make_import_environment)
13837 (scm_import_environment_p, scm_import_environment_imports)
13838 (scm_import_environment_set_imports_x, scm_make_export_environment)
13839 (scm_export_environment_p, scm_export_environment_private)
13840 (scm_export_environment_set_private_x)
13841 (scm_export_environment_signature)
13842 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
13843 Added texinfo markup.
13844
13845 * ports.c (scm_drain_input): Lowercased argument to @var.
13846 (scm_current_input_port, scm_current_output_port): Filled in
13847 missing explanation.
13848 (scm_current_load_port, scm_set_current_output_port)
13849 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
13850 Added texinfo markup.
13851
13852 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
13853 (scm_release_arbiter): Added texinfo markup to docstrings.
13854 Changed `Returns' to `Return'.
13855 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
13856
13857 2001-02-16 Neil Jerram <neil@ossau.uklinux.net>
13858
13859 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
13860 by doubling them to `@@'.
13861
13862 2001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13863
13864 * numbers.c (scm_lognot), random.c (scm_random,
13865 scm_random_normal, scm_random_solid_sphere_x,
13866 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
13867 scm_random_exp), dynwind.c
13868 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
13869
13870 * goops.c (scm_sys_initialize_object, scm_instance_p,
13871 scm_class_name, scm_class_precedence_list, scm_class_slots,
13872 scm_class_environment, scm_generic_function_name,
13873 scm_generic_function_methods, scm_method_generic_function,
13874 scm_method_specializers, scm_method_procedure, scm_make_unbound,
13875 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
13876 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
13877 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
13878 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
13879 scm_class_direct_supers, scm_class_direct_slots,
13880 scm_class_direct_subclasses, scm_class_direct_methods,
13881 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
13882 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
13883 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
13884 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
13885 scm_memoized_environment, scm_procedure_name,
13886 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
13887 objects.c
13888 (scm_class_of, scm_entity_p, scm_operator_p,
13889 scm_set_object_procedure_x, scm_object_procedure,
13890 scm_make_class_object), hooks.c (scm_make_hook_with_name,
13891 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
13892 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
13893 scm_hook_to_list), lang.c
13894 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
13895 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
13896 (scm_print_options, scm_port_with_print_state,
13897 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
13898 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
13899 scm_make_procedure_with_setter, scm_procedure), throw.c
13900 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
13901 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
13902 scm_stack_ref, scm_stack_length, scm_frame_p,
13903 scm_last_stack_frame, scm_frame_number, scm_frame_source,
13904 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
13905 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
13906 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
13907 (scm_dirname, scm_basename), dynwind.c
13908 (scm_wind_chain), read.c (scm_read_options, scm_read,
13909 scm_read_hash_extend), gc.c
13910 (scm_unhash_name), eval.c (scm_eval_options_interface,
13911 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
13912 (scm_display_error, scm_set_print_params_x,
13913 scm_display_application, scm_display_backtrace, scm_backtrace),
13914 async.c (scm_async, scm_system_async, scm_async_mark,
13915 scm_system_async_mark, scm_run_asyncs, scm_noop,
13916 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
13917 scm_mask_signals): Added docstrings.
13918
13919 2001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
13920
13921 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
13922 address of car/cdr. (Thanks to Dirk Herrmann)
13923 Use scm_sizet to obtain the length of strings.
13924 (Thanks to Matthias Koeppe)
13925
13926 2001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
13927
13928 * symbols.c (scm_mem2symbol): Put a empty statement after the
13929 next_symbol label. This is mandated by ANSI, appearantly.
13930
13931 2001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13932
13933 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
13934 sense to compile for a specific kernel version. Do not include
13935 <asm/signal.h> while defining __KERNEL__. This hack should no
13936 longer be needed and caused problems.
13937
13938 2001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
13939
13940 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
13941 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
13942 can not deal with immediates.
13943
13944 2001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
13945
13946 * list.c (scm_list_copy): Validate the first argument.
13947
13948 2001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
13949
13950 Fix evaluator so that top-level expressions are correctly
13951 evaluated with respect to the module system.
13952
13953 * modules.h. modules.c (scm_current_module_lookup_closure): New
13954 function.
13955
13956 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
13957 prototypes.
13958 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
13959 names to better reflect their meaning.
13960
13961 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
13962 evaluated at top-level and synronize lookup closure before
13963 executing every subform.
13964 (scm_primitve_eval_x, scm_primitive_eval): New functions.
13965 (scm_eval_x, scm_eval): Reimplement in terms of
13966 scm_primitive_eval_x and scm_primitive_eval, respectively.
13967
13968 2001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
13969
13970 * macros.c (scm_macro_name, scm_macro_transformer): Use
13971 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
13972 Thanks!
13973
13974 2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
13975
13976 * dump.c (scm_store_bytes): Store data size before data.
13977 (scm_restore_bytes): Restore data size. Takes a pointer to size.
13978 * dump.h (scm_restore_bytes): Updated.
13979
13980 2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
13981
13982 * dump.c: Use double cells for update schedule.
13983
13984 2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
13985
13986 * ports.c (scm_unread_char): Take an optional argument.
13987
13988 2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13989
13990 * modules.h (scm_selected_module, scm_current_module): Renamed
13991 scm_selected_module to scm_current_module to synchronize Scheme
13992 and C names.
13993 (scm_select_module, scm_set_current_module): Likewise. Changed
13994 all uses.
13995
13996 * ports.c (scm_port_for_each): Make a snapshot of the port table
13997 before iterating over it. The table might change while the user
13998 code is running. With the snapshot, the user can depend on the
13999 fact that each port that existed at the start of the iteration is
14000 encountered exactly once. (ice-9 popen) depends on this.
14001
14002 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14003
14004 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
14005
14006 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
14007 range checking for the size parameter. Thanks to Martin
14008 Grabmueller for the hint.
14009
14010 (scm_makstr): Reordered string initialization to make interrupt
14011 deferring unnecessary.
14012
14013 * vectors.c (scm_make_vector): Fixed range checking.
14014
14015 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14016
14017 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
14018
14019 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
14020 checking of the size parameter for type correctness and valid
14021 range. Thanks to Rob Browning for reporting the problem. Instead
14022 of deferring interrupts, scm_remember_upto_here_1 is used.
14023
14024 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14025
14026 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
14027 (scm_dump_cell_update): Removed.
14028 (scm_dump_update): Renamed from scm_dump_object_update.
14029 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
14030 a pointer instead of returning a value.
14031 * keywords.c (keyword_undump): Updated.
14032
14033 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14034
14035 * dump.c, dump.h: Modified a lot.
14036 (SCM_DUMP_COOKIE): Version 0.1
14037 (scm_dump_mark): Removed.
14038 (scm_restore_cell_object, scm_store_cell_object): New functions.
14039
14040 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
14041 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
14042 New slots: dump, undump.
14043 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
14044 Updated.
14045
14046 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
14047 (keyword_undump): Renamed from keyword_alloc.
14048 (scm_init_keywords): Set keyword_dump and keyword_undump.
14049
14050 2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
14051
14052 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
14053 the deprecated SCM_DOUBLE_CELLP.
14054
14055 * tags.h (SCM_DOUBLE_CELLP): deprecated.
14056
14057 2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
14058
14059 * dump.c, dump.h: New files.
14060 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
14061 * init.c: #include "libguile/dump.h".
14062 (scm_init_guile_1): Call scm_init_dump.
14063 * smob.h (scm_smob_descriptor): New slots: dump_mark,
14064 dump_dealloc, dump_store, undump_alloc, undump_restore,
14065 undump_init.
14066 * smob.c (scm_make_smob_type): Init the new slots.
14067 (scm_set_smob_dump, scm_set_smob_undump): New functions.
14068 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
14069
14070 * keywords.c: #include "libguile/dump.h".
14071 (keyword_dealloc, keyword_alloc): New functions.
14072 (scm_init_keywords): Set smob_dump and smob_undump.
14073
14074 2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
14075
14076 * vectors.c (scm_c_make_vector): New function.
14077 * vectors.h (scm_c_make_vector): Declared.
14078 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
14079 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
14080 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
14081 (scm_make_method_cache, scm_i_vector2list,
14082 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
14083 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
14084 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
14085 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
14086 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
14087 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
14088 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
14089 (scm_vector, scm_make_vector): Use scm_c_make_vector.
14090
14091 * hashtab.c (scm_c_make_hash_table): New function.
14092 * hashtab.h (scm_c_make_hash_table): Declared.
14093 * environments.c (scm_make_leaf_environment,
14094 scm_make_eval_environment), gc.c (scm_init_storage),
14095 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
14096 Use scm_c_make_hash_table.
14097
14098 2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14099
14100 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
14101
14102 2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14103
14104 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
14105 end of docstring.
14106
14107 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
14108 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
14109 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
14110 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
14111 srcprop.c (scm_source_properties, scm_set_source_properties_x,
14112 scm_source_property, scm_set_source_property_x), sort.c
14113 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
14114 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
14115 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
14116 docstrings.
14117
14118 2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14119
14120 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
14121 really get that arg.
14122
14123 2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
14124
14125 * goops.c (s_scm_get_keyword): Bug fix.
14126
14127 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14128
14129 The following patch was sent by Martin Grabmueller. It makes sure
14130 that in case of parameter errors the correct function name is
14131 shown, and that parameter types are only checked once.
14132
14133 * strop.c (string_copy, string_upcase_x, string_downcase_x,
14134 string_capitalize_x): New functions. Each one performs the core
14135 functionality of the corresponding scm_* function.
14136
14137 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
14138 scm_string_downcase_x, scm_string_downcase,
14139 scm_string_capitalize_x, scm_string_capitalize): Reduced to
14140 parameter checking wrappers of the above functions.
14141
14142 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14143
14144 * continuations.c, dynl.c, keywords.c, load.c: Include
14145 strings.h. Thanks to Bill Schottstaedt for the bug report.
14146
14147 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14148
14149 * backtrace.c (display_header): Make sure that line and column
14150 information is shown independent of whether the port the code was
14151 read from had an associated filename. Thanks to Martin
14152 Grabmueller for providing this patch.
14153
14154 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14155
14156 * fports.[ch] (scm_file_port_p): New primitive.
14157
14158 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14159
14160 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
14161 These are now defined in fports.c, strports.c and vports.c.
14162
14163 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
14164 vports.c (scm_tc16_sfport): Made variables (were macros defined in
14165 tags.h).
14166
14167 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
14168 (scm_make_sfptob): Made static. These return a type code now.
14169
14170 fports.c (scm_init_fports), strports.c (scm_init_strports),
14171 vports.c (scm_init_vports): Create the corresponding port types.
14172
14173 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
14174 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
14175
14176 * init.c (scm_init_guile_1): Make sure strports are initialized
14177 before gdbint.
14178
14179 * ports.[ch] (scm_make_port_type): Changed the return type to
14180 scm_bits_t.
14181
14182 * ports.c (scm_ports_prehistory): Don't create any port types
14183 here.
14184
14185 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
14186 against scm_tc16_fport directly.
14187
14188 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14189
14190 * srcprop.c (scm_set_source_property_x): Fix to handle
14191 (set-source-property! <obj> 'copy <datum>) correctly.
14192
14193 2001-01-24 Gary Houston <ghouston@arglist.com>
14194
14195 * filesys.c (scm_link): docstring fix.
14196 * fports.h (scm_setfileno): obsolete declaration removed.
14197 * posix.c: bogus popen declaration removed.
14198
14199 * rdelim.c: new file, split from ioext.c.
14200 * rdelim.h: new file, split from ioext.h
14201 * Makefile.am: add rdelim.c and related files.
14202 * init.c: call scm_init_rdelim. include rdelim.h.
14203
14204 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14205
14206 This patch was sent by Martin Grabmueller and makes sure that
14207 parameter errors are reported correctly by the lexicographic
14208 ordering predicates.
14209
14210 * strorder.c (string_less_p, string_ci_less_p): New functions.
14211
14212 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
14213 functionality into string_less_p, string_ci_less_p respectively.
14214 The remaining code is just a wrapper to do the parameter
14215 checking.
14216
14217 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
14218 parameters and call string_less_p instead of scm_string_less_p.
14219
14220 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
14221 Check the parameters and call string_less_ci_p instead of
14222 scm_string_ci_less_p.
14223
14224 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14225
14226 This patch modifies scm_display_error to perform parameter
14227 checking. Thanks to Neil Jerram for the bug report.
14228
14229 * backtrace.[ch] (scm_i_display_error): New function.
14230
14231 * backtrace.c (scm_display_error): Added parameter check and
14232 extracted the core functionality into function
14233 scm_i_display_error.
14234
14235 * throw.c (handler_message): Call scm_i_display_error to display
14236 the error message.
14237
14238 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14239
14240 * eval.c (SCM_APPLY): Added # args check for application of
14241 procedures with arity 3. (Thanks to Anders Holst.)
14242
14243 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14244
14245 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
14246
14247 (SCM_OPDIRP): Deprecated.
14248
14249 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
14250 SCM_OPN.
14251
14252 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
14253 Instead, give an explicit error message in case the directory is
14254 closed.
14255
14256 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
14257 instead of SCM_OPENP and SCM_CLOSEDP.
14258
14259 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
14260
14261 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
14262
14263 * eval.c (inner_eval, scm_eval): Move all real functionality into
14264 inner_eval. Avoid to copy the expression twice by inlining some
14265 code from scm_i_eval.
14266
14267 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
14268
14269 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
14270 now has to be the last clause, as required by R5RS. Thanks to
14271 Martin Grabmueller for the patch.
14272
14273 2001-01-18 Gary Houston <ghouston@arglist.com>
14274
14275 * ioext.c: further simplify scm_read_string_x_partial by defining
14276 a macro SCM_EBLOCK.
14277
14278 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14279
14280 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
14281
14282 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14283
14284 * __scm.h: Added comment about architecture and compiler
14285 properties that are required by guile.
14286
14287 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14288 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
14289
14290 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
14291
14292 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
14293
14294 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14295 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
14296
14297 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
14298
14299 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
14300 to the names in limits.h.
14301
14302 * numbers.c (abs_most_negative_fixnum): Added.
14303
14304 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
14305 fixnum-min) special case.
14306
14307 (scm_big_and): Fix for negative first parameter.
14308
14309 (scm_bit_extract): Fix for fixnum paramters.
14310 Thanks to Rob Browning for the bug report.
14311
14312 (scm_init_numbers): Initialize abs_most_negative_fixnum.
14313
14314 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
14315
14316 * symbols.c (scm_symbol_bound_p): Fixed comment.
14317 Thanks to Chris Cramer.
14318
14319 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
14320
14321 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
14322 Thanks to Bill Schottstaedt.
14323
14324 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
14325
14326 from Matthias Köppe:
14327
14328 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
14329 casts its result, so doesn't yield an lvalue per ANSI C.
14330
14331 * goops.c (s_scm_sys_set_object_setter_x): use
14332 SCM_SET_ENTITY_SETTER.
14333 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
14334
14335 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
14336 its result, so doesn't yield an lvalue per ANSI C.
14337 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
14338 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
14339 SCM_GC_SET_CARD_FLAGS.
14340 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
14341
14342 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
14343
14344 2001-01-08 Gary Houston <ghouston@arglist.com>
14345
14346 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
14347 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
14348 socket.c (scm_recvfrom): use the new macro, plus minor docstring
14349 changes.
14350 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
14351 for fdes. if current input port is used, check that it's a file
14352 port.
14353
14354 2001-01-06 Gary Houston <ghouston@arglist.com>
14355
14356 * ioext.c (scm_read_string_x_partial): new procedure, implements
14357 read-string!/partial.
14358 * ports.c (scm_take_from_input_buffers): new procedure used by
14359 scm_read_string_x_partial.
14360 (scm_drain_input): use scm_take_from_input_buffers.
14361
14362 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
14363
14364 * validate.h (SCM_VALIDATE_NUMBER): New.
14365
14366 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
14367
14368 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
14369 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
14370 SET_DESTROYED): new defines/macros.
14371 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
14372 (add_to_live_list): takes a `guardian_t *' now, not SCM.
14373 (guardian_print): print more info.
14374 (guardian_apply): check if the guardian is destroyed, and throw an
14375 error if so. take one more optional argument `throw_p'.
14376 (scm_guard): depending on the value of `throw_p', return a boolean
14377 result.
14378 (scm_get_one_zombie): remove redundant property test.
14379 (guardian_t): represent the various (currently 3, I hope nothing
14380 more gets added) boolean fields as bit flags.
14381 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
14382 (scm_destroy_guardian_x): new procedure.
14383
14384 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
14385 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
14386
14387 2001-01-01 Gary Houston <ghouston@arglist.com>
14388
14389 * fports.c (fport_write): bugfix: handle short writes for
14390 unbuffered ports too. optimize the buffered case by minimizing
14391 the number of write/flush calls.
14392 (write_all): new helper procedure.
14393
14394 The ChangeLog continues in the file: "ChangeLog-2000"
14395
14396 ;; Local Variables:
14397 ;; coding: utf-8
14398 ;; End: