doc: Correct the default value of `%load-path'.
[bpt/guile.git] / libguile / ChangeLog
1 2008-08-29 Julian Graham <joolean@gmail.com>
2
3 * threads.c (fat_mutex_lock): Resolve a deadlock caused by not
4 checking mutex state after calling `SCM_TICK'.
5
6 2008-08-27 Ludovic Courtès <ludo@gnu.org>
7
8 Fix builds `--without-threads'. Reported by Han-Wen Nienhuys
9 <hanwen@xs4all.nl>.
10
11 * scmsigs.c (scm_i_close_signal_pipe): Don't refer to
12 `signal_pipe' unless `SCM_USE_PTHREAD_THREADS' is true.
13 * threads.c (scm_leave_guile_cleanup): Mark as `SCM_UNUSED'.
14
15 2008-08-25 Ludovic Courtès <ludo@gnu.org>
16
17 * Makefile.am (AM_CFLAGS): New.
18 (guile_CFLAGS, libguile_la_CFLAGS): Use it.
19
20 2008-08-20 Ludovic Courtès <ludo@gnu.org>
21
22 * eval.c, filesys.c, gc.c, numbers.c, stime.c, threads.c: Don't
23 define `_GNU_SOURCE' explicitly as it's now defined in
24 <config.h> thanks to `AC_USE_SYSTEM_EXTENSIONS'.
25
26 2008-08-19 Han-Wen Nienhuys <hanwen@lilypond.org>
27 Ludovic Courtès <ludo@gnu.org>
28
29 * goops.c (scm_init_goops_builtins, go_to_hell): Fix allocation
30 of `hell' by passing "hell_size * sizeof (*hell)" instead of
31 "hell_size" to `scm_malloc ()' and `scm_realloc ()'.
32
33 2008-08-02 Neil Jerram <neil@ossau.uklinux.net>
34
35 * numbers.c (scm_rationalize): Update docstring to match the
36 manual (which is more correct). Change argument "err" to "eps",
37 also to match the manual.
38
39 2008-07-17 Neil Jerram <neil@ossau.uklinux.net>
40
41 From Thiemo Seufer <ths@networkno.de>:
42
43 * gc_os_dep.c (CPP_WORDSZ, ALIGN_DOUBLE, DATAEND,
44 DYNAMIC_LOADING): Added #defines.
45 (_fdata, _end): Added declarations.
46 (DATASTART): Use _fdata instead of __data_start.
47 (STACKBOTTOM): Changed from 0x80000000 to 0x7fff8000.
48
49 2008-07-16 Ludovic Courtès <ludo@gnu.org>
50
51 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_STRUCT_DIRENT64): New.
52 * gen-scmconfig.c (main): Produce definitions of
53 `SCM_HAVE_STRUCT_DIRENT64' and `SCM_HAVE_READDIR64_R'.
54 * _scm.h (dirent_or_dirent64): Depend on
55 `SCM_HAVE_STRUCT_DIRENT64', for the sake of HP-UX 11.11.
56 (readdir_r_or_readdir64_r): Depend on `SCM_HAVE_READDIR64_R',
57 for HP-UX 11.11.
58
59 2008-07-05 Ludovic Courtès <ludo@gnu.org>
60
61 * strings.c (scm_c_symbol_length): New function.
62 * strings.h (scm_c_symbol_length): New declaration.
63
64 2008-07-04 Ludovic Courtès <ludo@gnu.org>
65
66 * posix.h (scm_i_locale_mutex): Don't declare as `SCM_INTERNAL'
67 since it's needed by `libguile-i18n'. Reported by Patrick
68 Horgan <phorgan1@gmail.com>.
69
70 * __scm.h (SCM_INTERNAL): Add `extern' so that these symbols are
71 not considered as "common" by GCC 4.3. Reported by Patrick
72 Horgan <phorgan1@gmail.com>.
73
74 2008-06-28 Ludovic Courtès <ludo@gnu.org>
75
76 * Makefile.am (INCLUDES): Renamed to...
77 (AM_CPPFLAGS): this, to match current Automake conventions.
78 Users updated.
79
80 * tags.h (SCM_UNPACK): Disable type-checking for `__DECC' and
81 `__HP_cc'. Reported by Peter O'Gorman <pogma@thewrittenword.com>.
82
83 2008-06-02 Ludovic Courtès <ludo@gnu.org>
84
85 * deprecated.c (maybe_close_port): Rename EXCEPT to EXCEPT_SET
86 to workaround `#define except' on Tru64. Reported by Peter
87 O'Gorman <pogma@thewrittenword.com>.
88
89 2008-05-31 Ludovic Courtès <ludo@gnu.org>
90
91 * __scm.h (SCM_INTERNAL): New macro.
92 * *.h: Use it to mark as internal `scm_i_' and `scm_init_'
93 functions that are not used by public macros or inline
94 functions.
95
96 2008-05-14 Julian Graham <joolean@gmail.com>
97
98 * threads.c (fat_mutex)[recursive]: New field.
99 (make_fat_mutex): Adjust initialization to reflect changes to
100 mutex lock level semantics.
101 (fat_mutex_lock, fat_mutex_unlock): Add support for unowned
102 mutexes and locking mutexes on behalf of other threads.
103 (scm_lock_mutex, scm_lock_mutex_timed): Update to reflect
104 signature change to fat_mutex_lock.
105 (scm_mutex_owner, scm_mutex_level, scm_mutex_locked_p): New /
106 re-enabled functions.
107 * threads.h (scm_mutex_owner, scm_mutex_level,
108 scm_mutex_locked_p): Prototypes for new functions.
109
110 2008-05-12 Neil Jerram <neil@ossau.uklinux.net>
111
112 * discouraged.c: Expand DEFFROM and DEFTO macros, to avoid
113 compiler warnings about excess semicolons. (Reported by Didier
114 Godefroy.)
115
116 2008-05-08 Neil Jerram <neil@ossau.uklinux.net>
117
118 * throw.c (scm_ithrow): For IA64 add a return statement, to
119 appease GCC.
120
121 * threads.h (scm_i_thread): New IA64 fields:
122 register_backing_store_base and pending_rbs_continuation.
123
124 * threads.c (guilify_self_1): For IA64: cap RBS base address at
125 the current value of scm_ia64_ar_bsp, and store the capped value
126 in thread state.
127 (SCM_MARK_BACKING_STORE): Use thread->register_backing_store_base
128 instead of scm_ia64_register_backing_store_base().
129 (scm_threads_mark_stacks): Add "&" in "&t->regs", so that the code
130 works both for jmp_buf defined as an array, and jmp_buf defined as
131 a struct.
132
133 * continuations.h (scm_t_contregs): Remove `fresh' and `ctx'
134 fields; these are now inside the IA64 definition of `jmp_buf'.
135
136 * continuations.c (scm_make_continuation): Simplify, by moving
137 some of the IA64 code inside the definition of "setjmp", and by
138 some obvious commonizations. For IA64 register backing store
139 (RBS) stack base, use thread->register_backing_store_base instead
140 of scm_ia64_register_backing_store_base().
141 (copy_stack): For IA64, store pointer to continuation being
142 invoked in thread state, so we can restore the continuation's RBS
143 stack just before the next setcontext call.
144 (copy_stack_and_call): Don't restore RBS stack explicitly here.
145 It will be restored, if appropriate, inside the longjmp call.
146 (scm_ia64_longjmp): New function.
147
148 * __scm.h (setjmp, longjmp, jmp_buf): For IA64, implement using
149 getcontext and setcontext.
150
151 2008-05-07 Ludovic Courtès <ludo@gnu.org>
152
153 * numbers.c (scm_from_complex_double): Mark as `SCM_UNUSED'.
154 This fixes compilation with `-Werror' on FreeBSD 6.2 (i386).
155
156 2008-05-05 Neil Jerram <neil@ossau.uklinux.net>
157
158 * c-tokenize.lex: #define YY_NO_INPUT.
159
160 2008-04-26 Ludovic Courtès <ludo@gnu.org>
161
162 * read.c (scm_read_sexp): Remove extraneous semi-colon at
163 end-of-line, which broke compilation with GCC 2.7. Reported by
164 Alain Guibert <alguibert+bts@free.fr>.
165
166 2008-04-24 Ludovic Courtès <ludo@gnu.org>
167
168 * Makefile.am (DEFAULT_INCLUDES): New. Fixes compilation on
169 Tru64 where our "random.h" would shadown libc's one.
170 (INCLUDES): Add "-I$(top_buildir)", which is normally in
171 `DEFAULT_INCLUDES'.
172 * gen-scmconfig.c: Include <libguile/gen-scmconfig.h>, not
173 "gen-scmconfig.h" since that file is under `$(builddir)'.
174
175 2008-04-16 Ludovic Courtès <ludo@gnu.org>
176
177 * ports.c (scm_getc, scm_putc, scm_puts): Moved...
178 * inline.h: ... here. Noticeably improves `read' performance.
179
180 2008-04-15 Ludovic Courtès <ludo@gnu.org>
181 Julian Graham <joolean@gmail.com>
182
183 * read.c (scm_keyword_postfix): New.
184 (scm_read_opts): Update docstring for `keywords'.
185 (scm_read_mixed_case_symbol): Add support for postfix keywords.
186
187 2008-04-13 Ludovic Courtès <ludo@gnu.org>
188
189 * inline.h (SCM_C_USE_EXTERN_INLINE): New macro. Use it to make
190 sure "extern" declarations are produced when "extern inline" is
191 used. Simplify macrology around inline definitions.
192
193 2008-04-10 Ludovic Courtès <ludo@gnu.org>
194
195 * inline.h (SCM_C_EXTERN_INLINE): Special-case Apple's GCC
196 4.0-based compiler, which doesn't support GNU inline semantics
197 at all in C99 mode but doesn't define `__GNUC_STDC_INLINE__'.
198 See http://thread.gmane.org/gmane.network.gnutls.general/1135 .
199
200 2008-04-10 Andy Wingo <wingo@pobox.com>
201
202 * struct.c (scm_struct_ref, scm_struct_set_x): "Light" structs
203 have no hidden words (members of the SCM_STRUCT_DATA(x) array
204 accessed with negative indices). In that case, determine the
205 number of fields from the length of the struct layout
206 descriptor. (Most GOOPS instances are light structs.)
207
208 * goops.c (wrap_init): Initialize 'u' slots to 0, not some random
209 SCM value.
210
211 * goops.c (get_slot_value, set_slot_value): In the struct
212 allocation case, don't poke the slots array directly -- we should
213 go through struct-ref/struct-set! code so that we get the
214 permissions and allocation ('u' versus 'p') correct.
215
216 2008-04-03 Ludovic Courtès <ludo@gnu.org>
217
218 * inline.h (SCM_C_EXTERN_INLINE): New macro, addresses the
219 "extern inline" semantic change in C99 mode with GCC 4.3 and
220 later and the warning in C99 mode with GCC 4.2. Use it in the
221 inline function definitions.
222
223 2008-03-24 Neil Jerram <neil@ossau.uklinux.net>
224
225 Applying patch from Julian Graham, containing minor fixes to his
226 thread enhancements:
227
228 * threads.c (to_timespec): Change 1000000 multiplier to
229 1000000000.
230 (unchecked_unlock_sym, allow_external_unlock_sym,
231 recursive_sym): Use SCM_SYMBOL.
232 (scm_make_mutex_with_flags): When raising unsupported option
233 error, report what the unsupported option was.
234 (fat_mutex_unlock): When raising errors, unlock m->lock first.
235 (fat_cond_timedwait): Removed.
236 (scm_timed_wait_condition_variable): Call fat_mutex_unlock
237 directly instead of via fat_cond_timedwait.
238
239 2008-03-10 Ludovic Courtès <ludo@gnu.org>
240
241 * eval.c, filesys.c: Enclose `alloca' blob in `#ifndef alloca',
242 as per Gnulib's `alloca'. This should fix compilation on
243 FreeBSD 6.
244
245 2008-03-09 Neil Jerram <neil@ossau.uklinux.net>
246
247 * numbers.c: Only define scm_from_complex_double if it will
248 actually be used.
249
250 2008-03-08 Julian Graham <joolean@gmail.com>
251
252 * threads.c (scm_join_thread_timed, scm_thread_p,
253 scm_make_mutex_with_flags, scm_lock_mutex_timed,
254 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p): New
255 functions.
256 (thread_mark): Updated to mark new struct field `mutexes'.
257 (do_thread_exit): Notify threads waiting on mutexes locked by exiting
258 thread.
259 (scm_join_thread, scm_make_mutex, scm_make_recursive_mutex,
260 scm_mutex_lock): Reimplement in terms of their newer
261 counterparts.
262 (scm_abandoned_mutex_error_key): New symbol.
263 (fat_mutex)[unchecked_unlock, allow_external_unlock]: New fields.
264 (fat_mutex_lock): Reimplement to support timeouts and abandonment.
265 (fat_mutex_trylock, scm_try_mutex): Remove fat_mutex_trylock and
266 reimplement scm_try_mutex as a lock attempt with a timeout of zero.
267 (fat_mutex_unlock): Allow unlocking from other threads and unchecked
268 unlocking; implement in terms of condition variable wait.
269 (scm_timed_wait_condition_variable): Reimplement in terms of
270 fat_mutex_unlock.
271 * threads.h (scm_i_thread)[mutexes]: New field.
272 (scm_join_thread_timed, scm_thread_p, scm_lock_mutex_timed,
273 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p):
274 Prototypes for new functions.
275
276 2008-03-06 Ludovic Courtès <ludo@gnu.org>
277
278 * eval.c (scm_eval): If MODULE_OR_STATE is not a dynamic state,
279 make sure it's a module. Reported by David I. Lehn.
280
281 2008-03-02 Ludovic Courtès <ludo@gnu.org>
282
283 * pairs.h (scm_is_pair): Moved declaration to `inline.h'.
284 * inline.h: Make sure `extern' declarations are not produced
285 when `inline' is supported but GCC is not used. This
286 fixes "mixed linkage" errors with compilers such as
287 DEC/Compaq/HP CC.
288
289 2008-02-27 Neil Jerram <neil@ossau.uklinux.net>
290
291 * _scm.h (errno): Remove declarations that have been there
292 forever, and are known to conflict on some platforms with that
293 provided by <errno.h>, which we include unconditionally. If
294 <errno.h> doesn't provide a errno declaration, what is the point
295 of it?
296
297 2008-02-23 Ludovic Courtès <ludo@gnu.org>
298
299 * numbers.c (scm_make_rectangular): Rename argument to
300 `real_part' and `imaginary_part' to work around Solaris 2.10
301 headers which define `imaginary' as a macro. Patch by Tim
302 Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
303
304 2008-02-22 Ludovic Courtès <ludo@gnu.org>
305
306 * read.c (strncasecmp): Add declaration when
307 `HAVE_DECL_STRNCASECMP' is undefined. Fixes compilation on
308 NetBSD 1.6.
309
310 * gc.c (scm_ia64_ar_bsp)[linux]: Don't discard `const' qualifier
311 of OPAQUE.
312
313 2008-02-21 Ludovic Courtès <ludo@gnu.org>
314
315 Fix bug #22369.
316
317 * goops.c (scm_add_slot): Add `SCM_UNDEFINED' as last argument
318 to `scm_list_n ()'. Thanks to René Köcher
319 <shirk87@googlemail.com>.
320
321 2008-02-17 Ludovic Courtès <ludo@gnu.org>
322
323 * script.c (scm_compile_shell_switches): Update copyright year.
324
325 2008-02-16 Ludovic Courtès <ludo@gnu.org>
326
327 * gc_os_dep.c: Add NetBSD/alpha support. Patch by Greg Troxel
328 <gdt@ir.bbn.com>.
329
330 2008-02-12 Ludovic Courtès <ludo@gnu.org>
331
332 * guile-snarf.in (tempdir): Honor `$TMPDIR'.
333
334 2008-02-11 Neil Jerram <neil@ossau.uklinux.net>
335
336 * numbers.c (SCM_COMPLEX_VALUE): Use GUILE_I instead of _Complex_I
337 directly, and only if GUILE_I was defined by the configure step.
338 (scm_log, scm_log10, scm_exp, scm_sqrt): Use SCM_COMPLEX_VALUE
339 code only if SCM_COMPLEX_VALUE is defined.
340
341 2008-02-07 Ludovic Courtès <ludo@gnu.org>
342
343 Fix bug #21378.
344 Thanks to David Diffenbaugh <davediff@nbcs.rutgers.edu>.
345
346 * read.c (scm_read_quote): Don't use `__FUNCTION__' since it is
347 not supported by Sun CC on Solaris 9.
348 (scm_read_keyword): Likewise.
349 * strings.c (scm_take_locale_stringn): Remove
350 `SCM_C_INLINE_KEYWORD' to allow compilation with Sun CC.
351
352 2008-02-07 Julian Graham <joolean@gmail.com>
353
354 * threads.c (do_thread_exit, scm_cancel_thread,
355 scm_set_thread_cleanup_x, scm_thread_cleanup): Lock on thread-specific
356 admin mutex instead of `thread_admin_mutex'.
357 * threads.h (scm_i_thread)[admin_mutex]: New field.
358 * throw.c (make_jmpbuf): Don't enter critical section during thread
359 spawn -- there is a possibility of deadlock if other threads are
360 exiting.
361
362 2008-02-06 Neil Jerram <neil@ossau.uklinux.net>
363
364 * gc-malloc.c (scm_gc_malloc): Return NULL if requested size is 0.
365 (scm_gc_free): Don't call `free' if mem is NULL.
366
367 2008-02-06 Ludovic Courtès <ludo@gnu.org>
368
369 * numbers.c (scm_i_mkbig, scm_i_long2big, scm_i_ulong2big,
370 scm_i_clonebig, scm_i_bigcmp, scm_i_dbl2big, scm_i_dbl2num,
371 scm_i_normbig): Remove `SCM_C_INLINE_KEYWORD' since these are
372 declared as `extern' in `numbers.h'. This precluded compilation
373 on Solaris 9 with Sun CC (reported by David Halik
374 <dhalik@nbcs.rutgers.edu>).
375
376 2008-02-05 Neil Jerram <neil@ossau.uklinux.net>
377
378 * fports.c (fport_seek): Make dependent on GUILE_USE_64_CALLS.
379
380 * _scm.h: Make definition of CHOOSE_LARGEFILE depend on
381 GUILE_USE_64_CALLS.
382
383 2008-02-01 Neil Jerram <neil@ossau.uklinux.net>
384
385 * modules.c (the_root_module): Moved before scm_current_module.
386 (scm_current_module): Return the root module if `the-module' fluid
387 gives #f.
388
389 2008-01-22 Neil Jerram <neil@ossau.uklinux.net>
390
391 * COPYING: Removed.
392
393 * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL.
394
395 2008-01-18 Neil Jerram <neil@ossau.uklinux.net>
396
397 * hashtab.c (scm_hash_fn_create_handle_x): If supplied assoc_fn
398 returns neither a pair nor #f, signal a wrong-type-arg error.
399 (Thanks to Gregory Marton for reporting this.)
400
401 2007-12-29 Neil Jerram <neil@ossau.uklinux.net>
402
403 * gc.c (mark_gc_async): Change "func_data" to "fn_data", to avoid
404 clash with AIX header file.
405 * hooks.c (scm_c_hook_add, scm_c_hook_remove): Same again.
406 * hooks.h (scm_t_c_hook_function, scm_c_hook_add,
407 scm_c_hook_remove): Same again.
408
409 2007-12-08 Ludovic Courtès <ludo@gnu.org>
410
411 * __scm.h (SCM_EXPECT, SCM_LIKELY, SCM_UNLIKELY): New macros.
412 (SCM_ASSERT, SCM_ASSERT_TYPE, SCM_ASRTGO, SCM_GASSERT0,
413 SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Use them.
414 * eval.c (ASSERT_SYNTAX, ASSERT_SYNTAX_2): Likewise.
415 * eval.i.c (CEVAL): Use branch prediction hints for syntax
416 errors, wrong number of arguments and similar.
417 * numbers.c (scm_sum): Use `SCM_LIKELY' for the sum of two
418 immediate numbers.
419 (scm_difference, scm_product, scm_i_divide): Likewise.
420 * validate.h (SCM_ASSERT_RANGE): Use `SCM_UNLIKELY'.
421
422 2007-12-04 Ludovic Courtès <ludo@gnu.org>
423
424 * ports.c (scm_c_read): Validate PORT as an open input port.
425 (scm_c_write): Validate PORT as an open output port.
426
427 * socket.c (scm_accept): Leave guile mode using
428 `scm_std_select ()' before calling `accept(2)'. Reported by
429 dskr <dskr@mac.com>.
430
431 2007-10-27 Ludovic Courtès <ludo@gnu.org>
432
433 * fports.c (scm_i_evict_port): Expect a port, rather than a pair
434 containing the port. Fixes a bug in the new port table (2007-08-26).
435 (scm_evict_ports): Use `scm_c_port_for_each ()'.
436
437 2007-10-21 Neil Jerram <neil@ossau.uklinux.net>
438
439 * eval.c (unmemoize_delay): Extend the environment before
440 unmemoizing the promise thunk. This fixes a segmentation fault
441 reported by Frank Schwidom.
442
443 2007-10-20 Julian Graham <joolean@gmail.com>
444
445 Add support for thread cancellation and user-defined thread
446 cleanup handlers. Small rework by Ludovic Courtès.
447
448 * null-threads.h (scm_i_pthread_cancel,
449 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
450 * pthread-threads.h (scm_i_pthread_cancel,
451 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
452 * scmsigs.c (scm_i_signal_delivery_thread,
453 signal_delivery_thread_mutex): New.
454 (signal_delivery_thread): Leave when `read_without_guile ()'
455 returns zero.
456 (start_signal_delivery_thread): Acquire SIGNAL_DELIVERY_THREAD
457 before spawning the thread. Initialize
458 SCM_I_SIGNAL_DELIVERY_THREAD.
459 (ensure_signal_delivery_thread): Renamed to...
460 (scm_i_ensure_signal_delivery_thread): this.
461 (scm_i_close_signal_pipe): New.
462 * scmsigs.h: Updated.
463 * threads.c (thread_mark): Mark `t->cleanup_handler'.
464 (guilify_self_1): Initialize `t->cleanup_handler' and
465 `t->canceled'.
466 (do_thread_exit): Invoke `t->cleanup_handler'.
467 (on_thread_exit): Call `scm_i_ensure_signal_delivery_thread ()'.
468 Call `scm_i_close_signal_pipe ()' when the next-to-last thread
469 vanishes.
470 (scm_leave_guile_cleanup): New.
471 (scm_i_with_guile_and_parent): Use `scm_i_pthread_cleanup_push ()'
472 and `scm_leave_guile_cleanup ()' to leave guile mode, rather
473 than call `scm_leave_guile ()' after FUNC.
474 (scm_cancel_thread, scm_set_thread_cleanup_x,
475 scm_threads_cleanup): New.
476 (scm_all_threads): Remove SCM_I_SIGNAL_DELIVERY_THREAD from the
477 returned list.
478 * threads.h (scm_i_thread)[cleanup_handler, canceled]: New
479 fields.
480 Add declarations of new functions.
481
482 2007-10-17 Ludovic Courtès <ludo@gnu.org>
483
484 * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a
485 regression compared to 1.8.2. Reported by Puneet
486 <schemer@gmail.com>.
487
488 2007-10-10 Ludovic Courtès <ludo@gnu.org>
489
490 * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check
491 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
492 * gen-scmconfig.h.in
493 (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER): New.
494 * gen-scmconfig.c (main): Define
495 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
496
497 2007-10-04 Ludovic Courtès <ludo@gnu.org>
498
499 * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
500 `leave_locale_section ()' on failure of
501 `enter_locale_section ()' since the mutex is not held and locale
502 settings are unchanged.
503 (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
504 `restore_locale_settings ()' instead of `leave_locale_section ()'
505 since the mutex is not held.
506
507 2007-10-02 Ludovic Courtès <ludo@gnu.org>
508
509 * threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
510 since we're already in non-guile mode. Reported by Greg Toxel
511 for NetBSD.
512
513 2007-10-01 Ludovic Courtès <ludo@gnu.org>
514
515 * ports.c (flush_output_port): Expect directly a port instead of
516 a pair. Fixes a bug in the new port table (2007-08-26).
517
518 2007-09-11 Kevin Ryde <user42@zip.com.au>
519
520 * posix.c (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
521 putenv("NAME") as the fallback everywhere else. In particular this is
522 needed for solaris 9. Reported by Frank Storbeck.
523
524 2007-09-03 Ludovic Courtès <ludo@gnu.org>
525
526 * read.c (flush_ws): Handle SCSH block comments.
527
528 2007-09-03 Ludovic Courtès <ludo@gnu.org>
529
530 Fix alignment issues which showed up at least on SPARC.
531
532 * socket.c (scm_t_max_sockaddr, scm_t_getsockopt_result): New.
533 (scm_inet_pton): Change DST to `scm_t_uint32' for correct
534 alignment.
535 (scm_getsockopt): Change OPTVAL to `scm_t_getsockopt_result' for
536 correct alignment.
537 (_scm_from_sockaddr): Change ADDRESS to `scm_t_max_sockaddr *'.
538 (scm_from_sockaddr): Cast ADDRESS to `scm_t_max_sockaddr *'.
539 (MAX_SIZE_UN, MAX_SIZE_IN6): Removed.
540 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
541 Use `scm_t_max_sockaddr' instead of "char max_addr[MAX_ADDR_SIZE]".
542
543 2007-09-03 Kevin Ryde <user42@zip.com.au>
544
545 * numbers.c (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
546 before using clog(). It's possible for gcc to provide the "complex
547 double" type, but for the system not to have the complex funcs.
548 (scm_exp): Ditto HAVE_CEXP for cexp().
549 (clog, cexp, carg): Remove fallback definitions. These only
550 duplicated the code within scm_log and scm_exp, and the latter have to
551 exist for the case when there's no "complex double". So better just
552 fix up the conditionals selecting between the complex funcs and plain
553 doubles than worry about fallbacks.
554
555 2007-09-02 Ludovic Courtès <ludo@gnu.org>
556
557 * socket.c (scm_make_socket_address): Free C_ADDRESS after use.
558 This fixes a memory leak.
559
560 2007-08-26 Han-Wen Nienhuys <hanwen@lilypond.org>
561
562 * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
563 gc.c: replace port table with weak hash table. This simplifies
564 memory management, and fixes freed cells appearing in
565 port-for-each output.
566
567 * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
568 held.
569
570 2007-08-23 Ludovic Courtès <ludo@gnu.org>
571
572 * read.c (scm_read_quote): Record position and copy source
573 expression when asked to. Reported by Kevin.
574
575 * stime.c: Define `_REENTRANT' only if not already defined.
576
577 2007-08-21 Kevin Ryde <user42@zip.com.au>
578
579 * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
580 tc16 values so big, real, complex and fraction can be distinguished.
581
582 (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL. NULL
583 was making numbers come out as "type 23" in gc-live-object-stats.
584 Fix tests of the tc16 number types, they were checked under
585 scm_tc7_number, but the values went down the tag>=255 smob case.
586 Put smob case under scm_tc7_smob instead of using tag>=255, per
587 recommendation in comments with scm_tc7_smob to use symbolic values.
588 Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
589 code. Lose some unnecessary "break" statements.
590
591 (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
592 element returned, rather than two lookups scm_hashq_ref and
593 scm_hashq_set_x.
594
595 2007-08-17 Kevin Ryde <user42@zip.com.au>
596
597 * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
598 solaris 2.6. Reported by anirkko.
599
600 2007-07-29 Ludovic Courtès <ludo@gnu.org>
601
602 * Makefile.am (INCLUDES): Added Gnulib includes.
603 (gnulib_library): New.
604 (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
605 `$(gnulib_library)'.
606 (libguile_la_LIBADD): Likewise.
607
608 * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
609 to define it when available.
610 * srfi-14.c: Likewise.
611 * i18n.c: Likewise. Include Gnulib's <alloca.h>
612 * eval.c: Include Gnulib's <alloca.h>.
613 * filesys.c: Likewise.
614 * read.c: Don't include <strings.h> and don't provide an
615 `strncasecmp ()' replacement; use Gnulib's <string.h> and
616 `strncasecmp ()' instead.
617
618 2007-07-25 Ludovic Courtès <ludo@gnu.org>
619
620 * eval.c (macroexp): When `scm_ilength (res) <= 0', return
621 immediately. This used to produce a circular memoized
622 expression, e.g., for `(set (quote x) #t)'.
623
624 2007-07-22 Ludovic Courtès <ludo@gnu.org>
625
626 Overhauled the reader, making it faster.
627
628 * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
629 (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
630 of `scm_lreadr ()'.
631
632 * read.c: Overhauled. No longer use a token buffer. Use a
633 on-stack C buffer in the common case and use Scheme strings when
634 larger buffers are needed.
635 * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
636 scm_lreadr, scm_lreadrecparen): Removed.
637 (scm_i_input_error): Marked as `SCM_NORETURN'.
638
639 2007-07-15 Ludovic Courtès <ludo@gnu.org>
640
641 * script.c (scm_compile_shell_switches): Updated copyright year.
642
643 2007-07-11 Ludovic Courtès <ludo@gnu.org>
644
645 * goops.c (scm_sys_method_more_specific_p): Added docstring.
646 Make sure LEN is greater than or equal to the minimum length of
647 specializers of M1 and M2. This fixes a segfault later on in
648 `more_specificp ()' if TARGS is too small. Reported by Marco
649 Maggi <marco.maggi-ipsu@poste.it>.
650
651 2007-06-26 Ludovic Courtès <ludo@gnu.org>
652
653 * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
654 sure to free the previous array after the new one has been
655 installed. This leak is made visible by running
656 "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
657 from the REPL within Valgrind.
658
659 2007-06-12 Ludovic Courtès <ludo@chbouib.org>
660
661 * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
662 as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
663 bus error on SPARC (and possibly others) due to unaligned access.
664
665 2007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
666
667 * posix.c (scm_ttyname): Check whether RESULT is NULL before
668 making a string from it (reported by Dan McMahill). Don't call
669 `scm_from_locale_string ()' before the mutex is released.
670
671 2007-05-26 Ludovic Courtès <ludo@chbouib.org>
672
673 * eval.c (scm_m_define): Updated comment. Changed order for value
674 evaluation and `scm_sym2var ()' call, which is perfectly valid per
675 R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
676
677 2007-05-05 Ludovic Courtès <ludo@chbouib.org>
678
679 Implemented lazy duplicate binding handling.
680
681 * modules.c (scm_export): Renamed to...
682 (scm_module_export): This. Now public.
683 (module_variable): Removed.
684 (default_duplicate_binding_procedures_var): New variable.
685 (default_duplicate_binding_handlers, resolve_duplicate_binding,
686 module_imported_variable, scm_module_local_variable,
687 scm_module_variable): New functions.
688 (scm_module_import_interface): Rewritten.
689 (scm_module_reverse_lookup): Exported as a Scheme function.
690 * modules.h (scm_module_index_duplicate_handlers,
691 scm_module_index_import_obarray): New macros.
692 (scm_module_variable, scm_module_local_variable,
693 scm_module_export): New declarations.
694
695 2007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
696
697 * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
698 `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
699
700 2007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
701
702 * numbers.c (carg): provide carg, cexp, clog in case they are
703 missing.
704
705 2007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
706
707 * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
708 `FRAC_DIGITS', etc., which are GNU extensions. Reported by
709 Steven Wu.
710
711 2007-03-08 Kevin Ryde <user42@zip.com.au>
712
713 * struct.c, struct.h (scm_make_vtable): New function, providing
714 `make-vtable'.
715 * stacks.c (scm_init_stacks): Use it.
716
717 2007-03-06 Kevin Ryde <user42@zip.com.au>
718
719 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
720 allocating a tail array. If there's no such then those tail fields
721 are uninitialized and garbage SCMs there can cause a segv if printed
722 (after fetching with struct-ref).
723
724 2007-02-22 Kevin Ryde <user42@zip.com.au>
725
726 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
727 (scm_usleep): Update docstring per manual, cross reference sleep.
728
729 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
730 scm_struct_init is not within that section. scm_struct_init can
731 thrown an error, which within a critical section results in an
732 abort().
733
734 2007-02-19 Neil Jerram <neil@ossau.uklinux.net>
735
736 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
737 is included in the distribution.
738 (noinst_HEADERS): And the same for eval.i.c.
739
740 2007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
741
742 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
743 unconditionally. Include <langinfo.h> and <nl_types.h> when
744 available.
745 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
746 SCM_LIST_OR_INTEGER_P): New macros.
747 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
748 as powers of two instead of `(1 << LC_*)'.
749 (scm_i_locale_free): New function/macro.
750 (scm_global_locale): New global variable.
751 (smob_locale_free): Use `scm_i_locale_free ()'.
752 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
753 (get_current_locale_settings): Return `EINVAL' instead of `errno'
754 when `setlocale' fails.
755 (restore_locale_settings): Likewise.
756 (install_locale_categories): Likewise.
757 (install_locale): Likewise. Stop the locale stack traversal when
758 all categories have been handled.
759 (get_current_locale, category_to_category_mask,
760 category_list_to_category_mask): New function.
761 (scm_make_locale): Use them. Accept both lists of `LC_*' values
762 and single `LC_*' values as the first argument. Handle the case
763 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
764 duplicate C_BASE_LOCALE before using it.
765 (scm_nl_langinfo, define_langinfo_items): New functions.
766 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
767 `nl-langinfo' and invoke `define_langinfo_items ()'.
768 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
769 * posix.c: Include <xlocale.h> when available.
770 (scm_i_locale_mutex): Always define it. Statically initialized.
771 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
772 acquiring the locale mutex.
773 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
774
775 2007-01-27 Kevin Ryde <user42@zip.com.au>
776
777 * ports.c (scm_port_line, scm_set_port_line_x), read.c
778 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
779 port line number type, should be "long" not "int", as per line_number
780 field of scm_t_port. (Makes a difference only on 64-bit systems, and
781 only then for a linenum above 2Gig.)
782
783 2007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
784
785 * vector.c: remove comment as per kryde's request.
786
787 2007-01-25 Kevin Ryde <user42@zip.com.au>
788
789 * sort.c (scm_stable_sort): Return empty list for input empty list, as
790 done in guile 1.6 and as always done by plain `sort'. Was falling
791 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
792
793 2007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
794
795 * vectors.c (s_scm_vector_move_right_x): complain about naming.
796
797 * srcprop.c: regularize comments.
798
799 * eval.c: remove superfluous ifndef DEVAL.
800
801 * private-options.h: idem.
802
803 * eval.i.c: copyright nitpicking.
804
805 * eval.c: distangle. move duplicate code to eval.i.c and include
806 twice.
807
808 * eval.i.c: new file.
809
810 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
811 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
812 read.h, stacks.c, symbols.c, throw.c: use private-options.h
813
814 * private-options.h: new file: contain hardcoded option
815 definitions.
816
817 * private-gc.h: add FSF header.
818
819 2007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
820
821 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
822 memoize-symbol is set.
823
824 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
825
826 * eval.c (CEVAL): add memoize_symbol trap.
827
828 * options.c (scm_options_try): new function. This allows error
829 reporting before changing options in a critical section.
830
831 * srcprop.c: use double cell for storing source-properties. Put
832 filename in the plist, and share between srcprops if possible.
833 Remove specialized storage.
834
835 * srcprop.h: remove macros without SCM_ prefix from
836 interface. Remove specialized storage/type definitions.
837
838 * read.c: idem.
839
840 * print.c: idem.
841
842 * eval.c: terminate option lists with 0.
843
844 * options.c: remove n (for length) from scm_option_X
845 functions. Detect option list length by looking for NULL name.
846
847 2007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
848
849 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
850 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
851 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
852 added by `make-vtable-vtable'. Reported by Marco Maggi.
853
854 2007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
855
856 * throw.c (scm_ithrow): more refined error message: print symbols
857 too.
858
859 2007-01-16 Kevin Ryde <user42@zip.com.au>
860
861 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
862 implementing `set-program-arguments'.
863
864 * filesys.c (scm_init_filesys): Use scm_from_int rather than
865 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
866 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
867 O_LARGEFILE. These are all int not long, per arg to open().
868 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
869 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
870 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
871 an int arg to fcntl.
872
873 * posix.c (scm_putenv): Correction to "len" variable, was defined only
874 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
875 Move it to where it's used. Reported by Hugh Sasse.
876
877 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
878 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
879 meant #\nul in the input (detected by scm_to_locale_string) and a bad
880 flags arg (detected by scm_to_int) would throw from a critical
881 section, causing an abort().
882
883 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
884 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
885 REG_NOTEOL; they're all ints not longs (per args to regcomp and
886 regexec).
887
888 2007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
889
890 * throw.c (scm_ithrow): print out key symbol and string arguments
891 when error happens inside a critical section, and document why.
892
893 2007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
894
895 * read.c (s_scm_read_hash_extend): document #f argument to
896 read-hash-extend.
897
898 2007-01-04 Kevin Ryde <user42@zip.com.au>
899
900 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
901 scm_minor_version, scm_micro_version, scm_effective_version,
902 scm_version, scm_init_version): Use SCM_API instead of just extern,
903 for the benefit of mingw. Reported by Cesar Strauss.
904
905 2007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
906
907 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
908 too.
909 (gc_update_stats): update scm_gc_cells_allocated_acc too.
910
911 2006-12-27 Kevin Ryde <user42@zip.com.au>
912
913 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
914 the basic scm_get_stack_base. As advised by Nils Durner.
915
916 * threads.c (get_thread_stack_base): Add a version using
917 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
918 As advised by Heikki Lindholm.
919
920 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
921 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
922 Durner.
923
924 2006-12-24 Kevin Ryde <user42@zip.com.au>
925
926 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
927 error if pid is not our own process, instead of silently doing nothing.
928
929 * print.c (scm_write, scm_display, scm_write_char): Disable port close
930 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
931 check in configure.in unintentionally enabled it. Believe that
932 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
933 can leave errno in that state. popen.test "no duplicates" output test
934 provoked that.
935
936 2006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
937
938 * numbers.c (scm_i_fraction_reduce): move logic into
939 scm_i_make_ratio(), so fractions are only read.
940 scm_i_fraction_reduce() modifies a fraction when reading it. A
941 race condition might lead to fractions being corrupted by reading
942 them concurrently.
943
944 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
945 comparisons between reduced and unreduced fractions go wrong.
946
947 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
948 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
949 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
950 SCM_FRACTION_REDUCED.
951
952 2006-12-16 Kevin Ryde <user42@zip.com.au>
953
954 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
955 more direct for a procedure called raise.
956 (kill): Remove mingw fake fallback.
957
958 2006-12-15 Kevin Ryde <user42@zip.com.au>
959
960 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
961 _pipe on mingw.
962
963 2006-12-14 Kevin Ryde <user42@zip.com.au>
964
965 * threads.c (thread_print): Cope with the case where pthread_t is a
966 struct, as found on mingw. Can't just cast to size_t for printing.
967 Reported by Nils Durner.
968
969 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
970 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
971
972 2006-12-13 Kevin Ryde <user42@zip.com.au>
973
974 * eval.c (scm_m_define): Set 'name procedure property on any
975 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
976 procedures with setters as used in srfi-17.
977
978 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
979 linux man page says is a possibility.
980
981 2006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
982
983 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
984 instead of RES (reported by Szavai Gyula). This allows the use of
985 negative lower bounds.
986 (scm_i_read_array): Make sure LEN is non-negative (reported by
987 Szavai Gyula).
988
989 (scm_array_in_bounds_p): Iterate over S instead of always
990 comparing indices with the bounds of S[0]. This fixes
991 `array-in-bounds?' for arrays with a rank greater than one and
992 with different lower bounds for each dimension.
993
994 2006-12-05 Kevin Ryde <user42@zip.com.au>
995
996 * numbers.c (scm_product): For flonum*inum and complex*inum, return
997 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
998 and as per R5RS section "Exactness".
999
1000 2006-12-03 Kevin Ryde <user42@zip.com.au>
1001
1002 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
1003 allow $AWK from the environment to override. It had syntax gremlins,
1004 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
1005 Makefile stopped it having any effect. Use just $(AWK), which can be
1006 overridden with "make AWK=xxx" in the usual way if desired.
1007
1008 2006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
1009
1010 * libguile/vectors.c (scm_vector_to_list): Fixed list
1011 construction: elements were not copied when INC is zero (see
1012 "shared array" example in `vectors.test'). Reported by
1013 Szavai Gyula.
1014
1015 2006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
1016
1017 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
1018 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
1019 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
1020 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
1021 (DOT_X_FILES): Added `gettext.x'.
1022 (DOT_DOC_FILES): Likewise.
1023 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
1024 (modinclude_HEADERS): Added `gettext.h'.
1025 (EXTRA_DIST): Added `libgettext.h'.
1026
1027 * gettext.h: Renamed to...
1028 * libgettext.h: New file.
1029
1030 * i18n.c: Renamed to...
1031 * gettext.c: New file.
1032
1033 * i18n.h: Renamed to...
1034 * gettext.h: New file.
1035
1036 * i18n.c, i18n.h, locale-categories.h: New files.
1037
1038 * init.c: Include "libguile/gettext.h" instead of
1039 "libguile/i18n.h".
1040 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
1041 `scm_init_i18n ()'.
1042
1043 * posix.c: Include "libguile/gettext.h" instead of
1044 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
1045 (USE_GNU_LOCALE_API): New macro.
1046 (scm_i_locale_mutex): New variable.
1047 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
1048
1049 * posix.h: Include "libguile/threads.h".
1050 (scm_i_locale_mutex): New declaration.
1051
1052 2006-11-17 Neil Jerram <neil@ossau.uklinux.net>
1053
1054 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
1055
1056 2006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
1057
1058 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
1059 "sweep_stats" arguments; use them instead of accessing the global
1060 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
1061
1062 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
1063 before each iteration of the loop.
1064 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
1065 (scm_i_get_new_heap_segment): Take an additional argument
1066 SWEEP_STATS. Compute MIN_CELLS as a function of it.
1067
1068 * libguile/gc.c (scm_gc_cells_collected,
1069 scm_gc_cells_collected_1): Removed.
1070 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
1071 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
1072 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
1073 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
1074 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
1075 `scm_gc_cells_(collected|swept)'.
1076 (gc_update_stats): New.
1077 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
1078 `scm_i_gc_sweep_stats_1' instead of the former globals.
1079 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
1080 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
1081 would keep allocating new segments instead of re-using collected
1082 cells (because `scm_gc_cells_collected' would remain zero).
1083
1084 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
1085 scm_gc_cell_yield_percentage): Removed.
1086
1087 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
1088 (scm_i_adjust_min_yield): Updated.
1089 (scm_i_get_new_heap_segment): Updated.
1090
1091 2006-11-02 Neil Jerram <neil@ossau.uklinux.net>
1092
1093 * modules.c: Correct comment saying that low-level environments
1094 will be used "in the next release".
1095
1096 * init.c: Comment out #include of environments.h.
1097 (scm_i_init_guile): Comment out scm_environments_prehistory() and
1098 scm_init_environments() calls.
1099
1100 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
1101 (DOT_X_FILES): Remove environments.x.
1102 (DOT_DOC_FILES): Remove environments.doc.
1103 (modinclude_HEADERS): Remove environments.h.
1104
1105 2006-10-25 Neil Jerram <neil@ossau.uklinux.net>
1106
1107 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
1108
1109 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
1110 scm_ia64_register_backing_store_base() instead of Linux-specific
1111 implementations.
1112
1113 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
1114 New declarations.
1115
1116 * gc.c (__libc_ia64_register_backing_store_base): Declaration
1117 removed.
1118 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
1119 implementations for Linux and HP-UX.
1120
1121 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
1122 and scm_ia64_register_backing_store_base() instead of
1123 Linux-specific implementations.
1124
1125 * continuations.h (__libc_ia64_register_backing_store_base):
1126 Declaration removed.
1127 (scm_t_contregs): New "fresh" field.
1128
1129 * continuations.c (ia64_getcontext): Removed.
1130 (scm_make_continuation): Use continuation fresh field instead of
1131 interpreting getcontext return values (which isn't portable). Use
1132 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
1133 instead of Linux-specific implementations.
1134 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
1135 instead of Linux-specific implementation.
1136
1137 * _scm.h (__ia64__): Also detect __ia64.
1138
1139 2006-10-03 Kevin Ryde <user42@zip.com.au>
1140
1141 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
1142 arguments or 3 or more arguments. Previously 0 called proc with
1143 SCM_UNDEFINED, and 3 or more silently used just the first 2.
1144
1145 2006-09-28 Kevin Ryde <user42@zip.com.au>
1146
1147 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
1148 for chsize fallback, instead of hard-coding mingw. Mingw in fact
1149 supplies ftruncate itself these days.
1150
1151 * ports.c (fcntl.h): Can include this unconditionally, no need for
1152 __MINGW32__.
1153
1154 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
1155 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
1156 "off_t" for parameters, per usual definition of this function, rather
1157 than "char *" and "int". Use ftruncate instead of chsize. Check for
1158 error on final close.
1159
1160 2006-09-27 Kevin Ryde <user42@zip.com.au>
1161
1162 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
1163 in mingw.
1164
1165 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
1166 const *" for mingw to suppress warnings from gcc (which are errors
1167 under the configure default -Werror). Reported by Nils Durner.
1168
1169 2006-09-26 Kevin Ryde <user42@zip.com.au>
1170
1171 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
1172 * fports.c (scm_open_file): Use open_or_open64.
1173 (fport_seek_or_seek64): New function, adapting fport_seek.
1174 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
1175 functions.
1176 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
1177 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
1178
1179 * ports.c (scm_truncate_file): Update docstring per manual.
1180
1181 2006-09-23 Kevin Ryde <user42@zip.com.au>
1182
1183 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
1184 functions.
1185
1186 2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
1187
1188 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
1189 (make_predset, define_predset, make_strset, define_strset, false,
1190 true): Removed.
1191 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
1192 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
1193 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
1194 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
1195 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
1196 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
1197 (define_charset, scm_srfi_14_compute_char_sets): New functions.
1198 (scm_init_srfi_14): Use `define_charset ()' instead of
1199 `define_predset ()' and `define_strset ()'.
1200
1201 * srfi-14.h (scm_c_init_srfi_14): Removed.
1202 (scm_srfi_14_compute_char_sets): New declaration.
1203
1204 * posix.h: Include "srfi-14.h".
1205 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
1206 successful `setlocale ()' call.
1207
1208 2006-09-08 Kevin Ryde <user42@zip.com.au>
1209
1210 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
1211 (scm_recvfrom): Update docstring from manual.
1212
1213 2006-08-31 Rob Browning <rlb@defaultvalue.org>
1214
1215 * ports.c (scm_c_port_for_each): Add a
1216 scm_remember_upto_here_1(ports) at the end of the function to fix
1217 a GC bug.
1218
1219 2006-08-28 Neil Jerram <neil@ossau.uklinux.net>
1220
1221 * backtrace.c (scm_display_backtrace_with_highlights): Minor
1222 improvements to docstring.
1223 (scm_backtrace_with_highlights): Analogous improvements.
1224
1225 2006-08-12 Kevin Ryde <user42@zip.com.au>
1226
1227 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
1228 New, set from configure.
1229 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
1230 to scmconfig.h.
1231 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
1232 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
1233 Reported by Claes Wallin.
1234
1235 2006-08-11 Neil Jerram <neil@ossau.uklinux.net>
1236
1237 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
1238 frame, not a stack).
1239
1240 2006-07-25 Kevin Ryde <user42@zip.com.au>
1241
1242 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
1243 on pthreads version, since pthread_getattr_np not available on solaris
1244 and macos. Reported by Claes Wallin.
1245
1246 2006-07-24 Kevin Ryde <user42@zip.com.au>
1247
1248 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
1249 it's a macro on MacOS X. Reported by Claes Wallin.
1250
1251 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
1252 for the benefit of Solaris 10. Reported by Claes Wallin.
1253
1254 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
1255 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
1256
1257 2006-07-21 Kevin Ryde <user42@zip.com.au>
1258
1259 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
1260 autoconf recommendation. Should fix Solaris 10 reported by Claes
1261 Wallin.
1262
1263 * threads.c: Include <string.h>, needed for memset() which is used by
1264 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
1265
1266 2006-07-18 Rob Browning <rlb@defaultvalue.org>
1267
1268 * continuations.c: Add __attribute__ ((returns_twice)) to the
1269 ia64_getcontext prototype so that gcc will make the right
1270 arrangements and avoid an illegal instruction during
1271 call-with-current-continuation.
1272
1273 2006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
1274
1275 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
1276 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
1277
1278 2006-07-08 Kevin Ryde <user42@zip.com.au>
1279
1280 * environments.c (core_environments_unobserve): Use if/else rather
1281 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
1282 about them not being rvalues. Reported by Mike Gran.
1283
1284 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
1285 portable and in particular fails on OpenBSD and AIX (see autoconf
1286 manual too). Reported by Mike Gran.
1287
1288 2006-06-25 Kevin Ryde <user42@zip.com.au>
1289
1290 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
1291 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
1292 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
1293 HAVE_TM_ZONE.
1294 (scm_strptime): Use tm_gmtoff from the strptime result when that field
1295 exists, it's set by glibc strptime "%s".
1296
1297 2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
1298
1299 * eq.c: Include "struct.h", "goops.h" and "objects.h".
1300 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
1301 are not GOOPS instances.
1302 * struct.c: Include "eq.h".
1303 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
1304 hand-written code.
1305 (scm_i_struct_equalp): New.
1306 * struct.h (scm_i_struct_equalp): New declaration.
1307
1308 2006-06-06 Kevin Ryde <user42@zip.com.au>
1309
1310 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
1311 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
1312 reported by Mattias Holm.
1313
1314 2006-06-03 Kevin Ryde <user42@zip.com.au>
1315
1316 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
1317 unused variable warning when elisp disabled. Reported by Ryan
1318 VanderBijl.
1319
1320 * throw.c (scm_handle_by_message): Add dummy return value to avoid
1321 compiler warning on cygwin. Reported by Ryan VanderBijl.
1322
1323 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
1324 duplicate of EXTRA_DOT_DOC_FILES.
1325 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
1326 Add scmconfig.h to dependencies, since these all run cpp. Helps a
1327 parallel "make -j2". Reported by Mattias Holm.
1328
1329 2006-05-30 Kevin Ryde <user42@zip.com.au>
1330
1331 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
1332 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
1333 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
1334 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
1335 port type descriptor, same as scm_make_port_type return value.
1336
1337 2006-05-30 Marius Vollmer <mvo@zagadka.de>
1338
1339 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
1340 of the arguments is a array. This allows vectors to be equal to
1341 one-dimensional arrays.
1342
1343 2006-05-29 Marius Vollmer <mvo@zagadka.de>
1344
1345 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
1346 that we have a pair before accessing its cdr. Thanks to Bill
1347 Schottstaedt!
1348
1349 2006-05-28 Kevin Ryde <user42@zip.com.au>
1350
1351 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
1352 by "The Senator".
1353
1354 2006-05-27 Marius Vollmer <mvo@zagadka.de>
1355
1356 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
1357 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
1358
1359 2006-05-26 Kevin Ryde <user42@zip.com.au>
1360
1361 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
1362 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
1363 Reported by "The Senator".
1364 For select and ioctl, move fdes into those conditionals, to avoid
1365 unused variable warning when neither of those used.
1366
1367 2006-05-23 Kevin Ryde <user42@zip.com.au>
1368
1369 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
1370 It's unused and will be in stdio.h anyway (if it's anywhere).
1371
1372 2006-05-20 Kevin Ryde <user42@zip.com.au>
1373
1374 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
1375 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
1376
1377 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
1378 symlink). Probably can't create symlinks with mknod anyway though.
1379
1380 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
1381 generation.
1382
1383 2006-05-15 Kevin Ryde <user42@zip.com.au>
1384
1385 * simpos.c, simpos.h (scm_primitive__exit): New function.
1386 (scm_primitive_exit): Update docstring, no longer the best exit after
1387 a fork.
1388
1389 2006-05-09 Kevin Ryde <user42@zip.com.au>
1390
1391 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
1392 rather than converting to doubles, to avoid inf or nan when the inputs
1393 are too big for a double but the quotient does fit. This affects
1394 conversions exact->inexact of big fractions.
1395
1396 * filesys.c (scm_open_fdes): Use open64.
1397 (scm_init_filesys): Add O_LARGEFILE.
1398
1399 * ports.c (scm_seek): Use lseek64.
1400 (scm_truncate_file): Use ftruncate64.
1401
1402 2006-05-08 Marius Vollmer <mvo@zagadka.de>
1403
1404 * private-gc.h (CELL_P): Also check that the potential pointer is
1405 correctly aligned for a cell. Thanks to Miroslav Lichvar!
1406
1407 2006-04-18 Rob Browning <rlb@defaultvalue.org>
1408
1409 * _scm.h: Add back error if the size of off_t is unknown. The bug
1410 was actually in guile-readline's configuration.
1411
1412 2006-04-18 Kevin Ryde <user42@zip.com.au>
1413
1414 * posix.c (scm_mkstemp): Update docstring from the manual, in
1415 particular file mode 0600 is not guaranteed.
1416
1417 2006-04-17 Kevin Ryde <user42@zip.com.au>
1418
1419 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
1420 size, to help the guile-readline build where off_t is unused.
1421
1422 2006-04-16 Kevin Ryde <user42@zip.com.au>
1423
1424 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
1425 (scm_readdir): Use readdir64.
1426 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
1427 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
1428 and ftruncate take off_t not size_t.
1429 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
1430 available.
1431
1432 2006-04-06 Kevin Ryde <user42@zip.com.au>
1433
1434 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
1435 instead of toggling it. Reported by Ludovic Courtès.
1436
1437 2006-03-26 Marius Vollmer <mvo@zagadka.de>
1438
1439 * threads.c (get_thread_stack_base): Use scm_get_stack_base
1440 instead of accessing __libc_stack_end directly, and only do this
1441 when pthread_attr_getstack is known not to work for the main
1442 thread or when not using pthreads at all.
1443
1444 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
1445 unknown instead of returning NULL.
1446
1447 2006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
1448
1449 * numbers.c (scm_i_mem2number): Renamed to
1450 scm_c_locale_stringn_to_number.
1451 * numbers.c, print.c, read.c: Updated callers.
1452 * numbers.h: Update function declaration.
1453
1454 2006-03-11 Neil Jerram <neil@ossau.uklinux.net>
1455
1456 * unif.c (string_set): Don't return in a void function. (Reported
1457 by Mike Gran.)
1458
1459 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
1460 rather than void*, so we can do pointer arithmetic on it.
1461 (Reported by Mike Gran.)
1462 (s_scm_uniform_vector_write): Ditto.
1463
1464 2006-03-10 Neil Jerram <neil@ossau.uklinux.net>
1465
1466 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
1467 oldra is not an array. (Reported by Steve Juranich.)
1468
1469 * threads.c (do_unlock): Renamed from "unlock", which is defined
1470 in unistd.h on QNX. (Reported by Matt Kraai.)
1471
1472 2006-03-04 Kevin Ryde <user42@zip.com.au>
1473
1474 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
1475 not SCM_CRITICAL_SECTION_START.
1476
1477 * eval.c, posix.c: Change comments from C++ to C style. Reported by
1478 Mike Gran.
1479
1480 2006-02-28 Kevin Ryde <user42@zip.com.au>
1481
1482 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
1483
1484 2006-02-26 Kevin Ryde <user42@zip.com.au>
1485
1486 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
1487 NAME_MAX is not available, which is so on Solaris 10. Report and help
1488 by Bill Schottstaedt.
1489
1490 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
1491 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
1492 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
1493 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
1494 use "unsigned char", not signed char. This ensures comparisons are
1495 the same as `char<?' etc, and is also the same as guile 1.6 did.
1496 Reported by Sven Hartrumpf.
1497
1498 2006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
1499
1500 * random.c: Test for SCM_HAVE_T_UINT64 instead of
1501 SCM_HAVE_T_INT64.
1502 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
1503 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
1504 scm_t_int32.
1505
1506 2006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
1507
1508 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
1509 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
1510 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
1511 Take into account SEG->SPAN when computing CELLS_SWEPT.
1512 (scm_i_sweep_segment): Take one more argument, similarly.
1513 (scm_i_sweep_all_segments): Likewise.
1514 (scm_i_sweep_some_segments): Likewise.
1515 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
1516 refer to SCM_GC_CELLS_COLLECTED.
1517
1518 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
1519 argument, an `scm_i_sweep_statistics' object.
1520 Change the way DELTA is collected: don't take into account
1521 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
1522
1523 * gc-malloc.c (scm_realloc): Pass an extra argument
1524 to `scm_i_sweep_all_segments ()'.
1525
1526 * gc.c (gc_start_stats): Updated accordingly.
1527 (gc_end_stats): Take an additional SWEEP_STATS argument.
1528 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
1529 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
1530 Decrement SCM_CELLS_ALLOCATED.
1531 (scm_i_gc): Likewise.
1532
1533 * private-gc.h (scm_i_sweep_*): Updated function
1534 prototypes accordingly.
1535 (scm_t_sweep_statistics): New type.
1536 (scm_i_sweep_statistics_init): New macro.
1537 (scm_i_sweep_statistics_sum): New macro
1538
1539 2006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
1540
1541 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
1542 LEN. Without this, too much collectable memory gets unregistered,
1543 which results in an underflow of SCM_MALLOCATED in
1544 `decrease_mtrigger()'.
1545
1546 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
1547 equal to SCM_MALLOCATED.
1548
1549 2006-02-13 Marius Vollmer <mvo@zagadka.de>
1550
1551 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
1552 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
1553 configured --without-threads.
1554 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
1555
1556 2006-02-12 Marius Vollmer <mvo@zagadka.de>
1557
1558 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
1559 filling when the fill parameter is omitted, as documented, but
1560 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
1561 can not store characters.
1562
1563 2006-02-09 Neil Jerram <neil@ossau.uklinux.net>
1564
1565 * socket.c (scm_c_make_socket_address): Pass address_size pointer
1566 on to scm_fill_sockaddr call.
1567
1568 2006-02-04 Neil Jerram <neil@ossau.uklinux.net>
1569
1570 * throw.h (scm_c_catch, scm_c_with_throw_handler,
1571 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
1572
1573 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
1574 (struct pre_unwind_data): New, replaces struct lazy_catch.
1575 (scm_c_catch): New, replaces scm_internal_catch as the primary
1576 catch API for C code; adds pre-unwind handler support.
1577 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
1578 compatibility.
1579 (tc16_pre_unwind_data, pre_unwind_data_print,
1580 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
1581 "lazy_catch" equivalents.
1582 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
1583 as the primary C API for a "lazy" catch.
1584 (scm_internal_lazy_catch): Now just a wrapper for
1585 scm_c_with_throw_handler, for back compatibility.
1586 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
1587 pre-unwind handler support.
1588 (scm_catch): Now just a wrapper for
1589 scm_catch_with_pre_unwind_handler, for back compatibility.
1590 (scm_with_throw_handler): New.
1591 (scm_lazy_catch): Update comment to say that the handler can
1592 return, and what happens if it does.
1593 (toggle_pre_unwind_running): New.
1594 (scm_ithrow): When identifying the throw target, take running
1595 flags into account. In general, change naming of things from
1596 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
1597 don't unwind the dynamic context first. Add dynwind framing to
1598 manage the running flag of a throw handler. If a lazy catch or
1599 throw handler returns, rethrow the same exception again. Add
1600 pre-unwind support to the normal catch case (SCM_JMPBUFP).
1601
1602 * root.c (scm_internal_cwdr): Add NULL args to
1603 scm_i_with_continuation_barrier call.
1604
1605 * dynwind.c: Change comment mentioning lazy-catch to mention
1606 pre-unwind data and throw handler also.
1607
1608 * continuations.h (scm_i_with_continuation_barrier): Add
1609 pre-unwind handler args.
1610
1611 * continuations.c (scm_i_with_continuation_barrier): Add
1612 pre-unwind handler args, and pass on to scm_c_catch (changed from
1613 scm_internal_catch).
1614 (c_handler): Remove scm_handle_by_message_noexit call.
1615 (scm_c_with_continuation_barrier): Call
1616 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1617 as the pre-unwind handler.
1618 (scm_handler): Remove scm_handle_by_message_noexit call.
1619 (s_scm_with_continuation_barrier): Call
1620 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1621 as the pre-unwind handler.
1622
1623 2006-02-04 Kevin Ryde <user42@zip.com.au>
1624
1625 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
1626
1627 2006-02-03 Kevin Ryde <user42@zip.com.au>
1628
1629 * list.c, list.h (scm_list): Restore this function for use from C.
1630 It's a complete no-op but in theory might used by someone.
1631
1632 2006-01-30 Marius Vollmer <mvo@zagadka.de>
1633
1634 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
1635 so that it gets unlocked in all cases.
1636 (SCM_APPLY, CEVAL): Likewise.
1637
1638 2006-01-29 Marius Vollmer <mvo@zagadka.de>
1639
1640 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
1641 scm_is_typed_array instead.
1642
1643 Renamed the "frames" that are related to dynamic-wind to "dynamic
1644 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
1645 Updated documentation.
1646
1647 Disabled "futures":
1648
1649 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
1650 * eval.c, init.c: Comment out all 'future' related things.
1651
1652 2006-01-28 Marius Vollmer <mvo@zagadka.de>
1653
1654 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
1655 to inline.h to make it inline.
1656
1657 2005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
1658
1659 * strings.c (scm_i_take_stringbufn): New.
1660 (scm_i_c_take_symbol): New.
1661 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
1662
1663 * strings.h (scm_i_c_take_symbol): New.
1664 (scm_i_take_stringbufn): New.
1665
1666 * symbols.c (lookup_interned_symbol): New function.
1667 (scm_i_c_mem2symbol): New function.
1668 (scm_i_mem2symbol): Use `lookup_symbol ()'.
1669 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
1670 creating a new Scheme string.
1671 (scm_from_locale_symboln): Likewise.
1672 (scm_take_locale_symbol): New.
1673 (scm_take_locale_symboln): New.
1674
1675 * symbols.h (scm_take_locale_symbol): New.
1676 (scm_take_locale_symboln): New.
1677
1678 2006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1679
1680 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
1681 free_count.
1682
1683 2005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
1684
1685 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
1686 upon error
1687
1688 2005-12-29 Neil Jerram <neil@ossau.uklinux.net>
1689
1690 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
1691 the GC when allocated_fluids_len is zero.
1692
1693 2005-12-14 Neil Jerram <neil@ossau.uklinux.net>
1694
1695 * load.c (the_reader, the_reader_fluid_num): New.
1696 (scm_primitive_load): Support custom reader.
1697 (scm_init_load): Init the_reader and the_reader_fluid_num; export
1698 the_reader as `current-reader'.
1699
1700 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
1701 (rather than an uninitialized pointer on the stack).
1702
1703 2005-12-07 Marius Vollmer <mvo@zagadka.de>
1704
1705 Reported by Bruce Korb:
1706
1707 * init.c (invoke_main_func): Don't call exit here. Throws that
1708 are only caught by scm_with_guile will bypass us and would cause
1709 scm_boot_guile to return erroneously.
1710 (scm_boot_guile): Expect scm_with_guile to return and call exit
1711 here, passing it an appropriate exit code.
1712
1713 From Andy Wingo:
1714
1715 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1716 unsigned char cast to an int, or -1 for EOS.
1717
1718 2005-12-06 Marius Vollmer <mvo@zagadka.de>
1719
1720 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1721 non-const.
1722 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
1723
1724 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1725 scm_enter_guile): Removed from public API. See comment at
1726 scm_without_guile for the rationale.
1727
1728 * scmsigs.c (read_without_guile): New.
1729 (signal_delivery_thread): Use it instead of
1730 scm_leave_guile/read/scm_enter_guile.
1731
1732 From Stephen Compall:
1733
1734 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1735 (CEVAL): Evaluate SRFI 61 cond clauses.
1736
1737 2005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
1738
1739 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1740 This was typically hit when running `gc-live-object-stats' right
1741 after starting Guile.
1742
1743 2005-11-30 Kevin Ryde <user42@zip.com.au>
1744
1745 * srfi-13.c (scm_string_append_shared): No copying if just one
1746 non-empty string in args.
1747
1748 2005-11-26 Kevin Ryde <user42@zip.com.au>
1749
1750 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
1751 by Ludovic Courtès.
1752
1753 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1754 "register".
1755
1756 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1757 scm_malloc returning NULL, it never does that.
1758 * putenv.c (putenv): Likewise.
1759
1760 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1761 much too big to want to inline.
1762
1763 2005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
1764
1765 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1766 the value at its top. This fixes a reference leak.
1767 (PUSH_REF): Perform `pstate->top++' after calling
1768 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1769 effects.
1770
1771 2005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
1772
1773 * gc.c (scm_weak_vectors): Removed.
1774
1775 2005-11-12 Kevin Ryde <user42@zip.com.au>
1776
1777 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
1778 by Ludovic Courtès.
1779
1780 2005-11-07 Marius Vollmer <mvo@zagadka.de>
1781
1782 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1783 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1784 section might exit non-locally.
1785
1786 2005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1787
1788 * eval.c (sym_instead): New symbol.
1789 (ENTER_APPLY): Remove optional use of a continuation when making
1790 trap call.
1791 (scm_debug_opts): Change doc for 'cheap option to make clear that
1792 it is now obsolete.
1793 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1794 making trap calls, and implement substitution of eval expressions
1795 and return values using the values that the trap call handlers
1796 return.
1797
1798 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1799
1800 2005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
1801
1802 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1803 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1804 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1805 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1806 scm_c_make_socket_address): New functions.
1807 * socket.h: Add prototypes.
1808
1809 2005-10-24 Kevin Ryde <user42@zip.com.au>
1810
1811 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1812 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1813 POSIX spec examples, the latter are not available on for instance
1814 NetBSD.
1815
1816 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1817 posix.texi.
1818
1819 * stime.c (scm_strftime): Update docstring from posix.texi.
1820
1821 2005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1822
1823 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
1824
1825 * null-threads.h, pthread-threads.h
1826 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1827 (scm_i_pthread_mutexattr_recursive): New.
1828
1829 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1830 (scm_i_critical_section_mutex): Do not initialize statically.
1831 (scm_threads_prehistory): Initialize
1832 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1833 here.
1834
1835 * eval.c (source_mutex): Do not initialiaze statically.
1836 (scm_init_eval): Do it here, using
1837 scm_i_pthread_mutexattr_recursive.
1838
1839 2005-09-05 Marius Vollmer <mvo@zagadka.de>
1840
1841 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1842 New.
1843 (sym_reader): New.
1844 (scm_print_opts): Added "quote-keywordish-symbols" option.
1845 (quote_keywordish_symbol): New, for evaluating the option.
1846 (scm_print_symbol_name): Use it.
1847 (scm_init_print): Initialize new option to sym_reader.
1848
1849 2005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1850
1851 * eval.c (eval_letrec_inits): New.
1852 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1853
1854 2005-08-12 Marius Vollmer <mvo@zagadka.de>
1855
1856 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1857 Peter Gavin!
1858
1859 2005-08-12 Kevin Ryde <user42@zip.com.au>
1860
1861 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1862
1863 2005-08-06 Kevin Ryde <user42@zip.com.au>
1864
1865 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1866 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1867 scm_string_index, scm_string_index_right, scm_string_skip,
1868 scm_string_skip_right, scm_string_count, scm_string_map,
1869 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1870 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1871 procedures called in loops.
1872
1873 2005-08-02 Kevin Ryde <user42@zip.com.au>
1874
1875 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1876 avoid lots of copying where previoulsy growing by only 80 bytes at a
1877 time.
1878
1879 2005-08-01 Marius Vollmer <mvo@zagadka.de>
1880
1881 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1882 already have scm_lookup_closure_module, which does the same thing.
1883
1884 2005-08-01 Marius Vollmer <mvo@zagadka.de>
1885
1886 New marking algorithm for weak hashtables that fixes the problem
1887 that references from the non-weak value to the associated weak
1888 key (for example) would prevent the entry from ever being dropped.
1889
1890 Guardians have been changed back to their original semantics and
1891 are no longer greedy and no longer drop cycles.
1892
1893 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1894 hashtable and guardian machinery but call the relevant functions
1895 directly.
1896
1897 * guardians.h, guardians.c, deprecated.h,
1898 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1899 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1900 Deprecated and moved into deprecated.[ch].
1901
1902 * guardians.h, guardians.c: Mostly rewritten.
1903 (scm_i_init_guardians_for_gc,
1904 scm_i_identify_inaccessible_guardeds,
1905 scm_i_mark_inaccessible_guardeds): New.
1906 (scm_make_guardian): Removed greedy_p argument.
1907
1908 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1909 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1910 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1911 (scm_weaks_prehistory): Removed.
1912 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1913 scm_i_mark_weak_vectors_non_weaks,
1914 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1915 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1916 scm_scan_weak_vectors): Removed.
1917
1918 * hashtab.h (scm_i_scan_weak_hashtables): New.
1919 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1920 SCM_WVECTF_NOSCAN.
1921 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1922 t->n_items.
1923 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1924 to latter. Do not scan the alists themselves, this is done by the
1925 weak vector code now. Just update the element count.
1926
1927 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1928 to latter. The type is now only part of the cell word.
1929 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1930
1931 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1932
1933 2005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1934
1935 Some changes towards making it possible to run Guile on the EM64T
1936 platform.
1937
1938 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1939 mallocating for (unsigned long *bounds).
1940
1941 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1942 scm_t_bits before storing them in the type word.
1943
1944 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1945 scm_t_bits to int.
1946
1947 2005-07-12 Kevin Ryde <user42@zip.com.au>
1948
1949 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1950 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1951 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1952 than scm_makfrom0str.
1953 Reported by Ken Raeburn.
1954
1955 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1956 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1957 returning SCM_GC_CARD_BVEC.
1958
1959 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1960 rather than latin-1 acute accent, the latter may not print on all
1961 terminals.
1962
1963 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1964 trailing deletions, so as to return a substring if those are the only
1965 changes.
1966
1967 2005-07-10 Kevin Ryde <user42@zip.com.au>
1968
1969 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1970 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1971 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1972 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1973
1974 2005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1975
1976 * gc-card.c (scm_i_card_statistics): init tag.
1977
1978 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1979
1980 2005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1981
1982 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1983 string.
1984
1985 2005-06-25 Kevin Ryde <user42@zip.com.au>
1986
1987 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1988 last change, use plain copy-on-write substrings, the individual
1989 descriptions in the srfi don't mention shared storage (only the
1990 introduction does).
1991
1992 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1993 null-terminator, rather than mallocing a whole new block.
1994 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1995
1996 2005-06-12 Marius Vollmer <mvo@zagadka.de>
1997
1998 * ramap.c (scm_array_index_map_x): First test for real arrays,
1999 then check for generalized vectors. This ensures that the
2000 generalized vector case need only work with zero-origin ranges.
2001 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
2002 to access the target array, making these functions work with all
2003 kinds of arrays, not just bit arrays.
2004
2005 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
2006 gh_list.c, gh_predicates.c: Deprecated everything.
2007
2008 * environments.c (environment_default_folder,
2009 environment_default_observer): Do not use gh_call3, gh_call1.
2010
2011 2005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
2012
2013 * modules.c (s_scm_eval_closure_module): new function. Return the
2014 module inside an eval-closure.
2015
2016 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
2017 table. This means that procedure properties are GC'd if the
2018 procedure dies.
2019
2020 2005-06-11 Kevin Ryde <user42@zip.com.au>
2021
2022 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
2023 charset cases, count chars kept and build a string in a second pass,
2024 rather than using a cons cell for every char kept. Use a shared
2025 substring when nothing removed (such sharing is allowed by the srfi).
2026
2027 2005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
2028
2029 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
2030 string, so live object stats can be sorted with string<?.
2031
2032 2005-06-06 Marius Vollmer <mvo@zagadka.de>
2033
2034 * print.c (iprin1): When writing a string, collect all characters
2035 that can be printed directly into one call to scm_lfwrite.
2036 Previously, every character was output with its own call to
2037 write(2) on unbuffered ports.
2038
2039 * eval.c (scm_eval_options_interface): Use
2040 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
2041 and SCM_CRITICAL_SECTION_END.
2042
2043 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
2044 check for generalized vectors. This ensures that the generalized
2045 vector case need only work with zero-origin ranges.
2046
2047 2005-06-06 Kevin Ryde <user42@zip.com.au>
2048
2049 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
2050 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
2051 matched.
2052
2053 2005-06-05 Marius Vollmer <mvo@zagadka.de>
2054
2055 * eval.c: Added comment on how to make case 1.1 of
2056 r5rs_pitfall.test succeed.
2057
2058 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
2059
2060 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
2061
2062 * socket.c: Remove obsolete comment about socklen_t.
2063 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
2064
2065 * numbers.h (isnan)[__MINGW32__]: Remove.
2066
2067 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
2068 DEFAULT_INCLUDES when cross compiling.
2069
2070 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
2071
2072 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
2073 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
2074 from Jan's patch.)
2075
2076 2005-05-22 Marius Vollmer <mvo@zagadka.de>
2077
2078 * unif.c (scm_make_shared_array): Add old base to new base since
2079 scm_array_handle_pos does not include the base.
2080 (scm_aind): Likewise.
2081
2082 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
2083 output port.
2084
2085 2005-05-12 Neil Jerram <neil@ossau.uklinux.net>
2086
2087 Mac OS X compile warning fixes, reported by Richard Todd.
2088
2089 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
2090 that it is signed.
2091
2092 * strports.c (st_resize_port): Add unsigned char cast.
2093 (scm_mkstrport): Make read/write_buf cast unsigned.
2094
2095 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
2096
2097 * rdelim.c (scm_read_line): Initialize slen.
2098
2099 * load.c (scm_search_path): Remove weird >=1, and add
2100 parentheses to clarify conditions.
2101
2102 * hash.c (scm_hasher): Add const unsigned char cast.
2103
2104 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
2105
2106 2005-05-11 Neil Jerram <neil@ossau.uklinux.net>
2107
2108 Fix C99isms reported by Ludovic Courtès:
2109
2110 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
2111 code.
2112
2113 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
2114 of code.
2115
2116 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
2117 of code.
2118 (scm_i_card_statistics): Add block for declarations of tag_as_scm
2119 and current.
2120
2121 2005-05-10 Neil Jerram <neil@ossau.uklinux.net>
2122
2123 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
2124 compile warning reported by Werner Scheinast.
2125
2126 2005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
2127
2128 * list.h: remove scm_list()
2129
2130 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
2131 SCM_DEBUG_CELL_ACCESSES
2132 (FLUID_NEXT_LOC): idem.
2133
2134 2005-04-30 Kevin Ryde <user42@zip.com.au>
2135
2136 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
2137 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
2138 zero when re==0 and im<0. Reported by Jean Crepeau.
2139
2140 2005-04-25 Kevin Ryde <user42@zip.com.au>
2141
2142 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
2143 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
2144 few sensible uses (like filling with a random number generator say),
2145 but has been allowed in the past and so should be kept.
2146
2147 2005-04-23 Kevin Ryde <user42@zip.com.au>
2148
2149 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
2150 scm_hash_fn_remove_x.
2151
2152 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
2153 the caller when cons* is reached through apply.
2154
2155 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
2156 list is called using apply, under the debugging evaluator.
2157 (scm_list): Remove.
2158
2159 * list.c, list.h (scm_make_list): New code, moving make-list from
2160 boot-9.scm.
2161
2162 2005-04-14 Kevin Ryde <user42@zip.com.au>
2163
2164 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
2165 converted from scheme code in boot-9.scm.
2166
2167 2005-04-11 Kevin Ryde <user42@zip.com.au>
2168
2169 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
2170 Validate list argument, scm_string_append and scm_string_append_shared
2171 don't do that to their rest argument (in a normal build).
2172
2173 2005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2174
2175 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
2176 closure can not be stored since it is no longer valid at GC time.
2177 (make_hash_table): Initialize 'hash_fn' field.
2178 (scm_i_rehash): Only store hash_fn in hash table when closre is
2179 NULL.
2180 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
2181 non-NULL. Always use a NULL closure.
2182 (scm_hash_fn_create_handle_x): Also rehash when table contains too
2183 few entries.
2184
2185 2005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2186
2187 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
2188 argument; always use scm_delq_x. The delete_fn function works on
2189 the handle, not the key, and it therefore makes no sense to make
2190 it configurable. Changed all callers.
2191 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
2192 (scm_hash_clear): Accept plain vectors as hashtables.
2193 (scm_delx_x): Removed.
2194
2195 2005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
2196
2197 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
2198 compatibility with gcc -std=c99.
2199
2200 2005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2201
2202 * async.h (scm_mask_ints): Removed left over reference to
2203 scm_root.
2204
2205 * threads.c: Removed fprintf debug statements.
2206
2207 2005-03-24 Neil Jerram <neil@ossau.uklinux.net>
2208
2209 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
2210
2211 2005-03-23 Neil Jerram <neil@ossau.uklinux.net>
2212
2213 * debug.c (scm_make_memoized): Remove unnecessary critical
2214 section, and simplify by using SCM_RETURN_NEWSMOB.
2215
2216 2005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2217
2218 * strings.h (SCM_STRING_UCHARS): Added missing argument.
2219
2220 2005-03-18 Kevin Ryde <user42@zip.com.au>
2221
2222 * arbiters.c (FETCH_STORE) [generic C]: Should be
2223 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
2224
2225 2005-03-13 Kevin Ryde <user42@zip.com.au>
2226
2227 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
2228 srfi-60.
2229
2230 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
2231 because OR-ing bits into a negative can reduce the value to an inum.
2232
2233 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
2234 casting inum to double since that can lose precision.
2235
2236 2005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2237
2238 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
2239 (guilify_self_1): Initialize it.
2240
2241 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
2242 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
2243 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
2244 field.
2245 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
2246 recursively.
2247 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
2248 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
2249 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
2250 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
2251 scm_after_gc_c_hook here.
2252 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
2253 scm_after_gc_c_hook when a full GC has in fact been performed.
2254 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
2255
2256 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
2257 scm_gc_heap_lock.
2258
2259 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
2260 scm_gc_running_p while the scm_i_sweep_mutex is locked.
2261
2262 * inline.h (scm_cell, scm_double_cell): Do not check
2263 scm_gc_running_p, allocation during sweeping is OK.
2264
2265 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
2266 not set scm_block_gc.
2267
2268 * init.c (scm_i_init_guile): Do not set scm_block_gc.
2269
2270 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
2271 instead of scm_malloc. The latter can not be used during GC.
2272
2273 2005-03-09 Marius Vollmer <mvo@zagadka.de>
2274
2275 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
2276 years.
2277
2278 2005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2279
2280 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
2281 scm_gc_running_p. Sweeping can happen in parallel with
2282 allocation.
2283
2284 * inline.h: Updated comments for current threading implementation.
2285
2286 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
2287 (scm_i_thread): Removed unused signal_asyncs field.
2288 (threads_mark): Do not mark it.
2289 (guilify_self_1): Do not initialize it. Do initialize
2290 continuation_root field.
2291 (do_thread_exit): Do not remove thread from all_threads list.
2292 (on_thread_exit): Do it here, after leaving guile mode.
2293 (sleep_level): Removed.
2294 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
2295 returning. Do not support recursive sleeps.
2296 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
2297 entry. Do not support recursive sleeps.
2298
2299 * fluids.c (ensure_state_size, ensure_all_state_sizes,
2300 resize_all_states): Collapsed ensure_state_size and
2301 ensure_all_state_sizes into one function named resize_all_states.
2302 Allocate new vectors outside of single threaded region. Do only
2303 simple things inside that region.
2304 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
2305 while adding to the global lists.
2306
2307
2308 2005-03-08 Marius Vollmer <mvo@zagadka.de>
2309
2310 libltdl is no longer distributed. We expect it to be installed
2311 already.
2312
2313 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
2314 (libguile_la_LIBADD): Removed @LIBLTDL@.
2315
2316 2005-03-07 Marius Vollmer <mvo@zagadka.de>
2317
2318 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
2319 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
2320 they also block/unblock execution of asyncs and call
2321 scm_async_click which is declared in async.h but threads.h can not
2322 include async.h since async.h already includes threads.h.
2323 (scm_i_critical_section_level): New, for checking mistakes in the
2324 use of the SCM_CRITICAL_SECTION_* macros.
2325 (scm_i_critical_section_mutex): Make it a recursive mutex so that
2326 critical sections can be nested.
2327
2328 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
2329 not zero.
2330
2331 * threads.h, threads.c (scm_frame_lock_mutex): New.
2332 (scm_frame_critical_section): Take mutex as argument.
2333 (framed_critical_section_mutex): New, used as default for above.
2334 (scm_init_threads): Initialize it.
2335 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
2336 scm_i_critical_section_mutex; both are initialized statically.
2337
2338 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
2339 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
2340 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
2341 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
2342
2343 * debug.c (scm_debug_options): Replace
2344 SCM_CRITICAL_SECTION_START/END with a frame and
2345 scm_frame_critical_section.
2346
2347 * continuations.c (scm_make_continuation): No longer a critical
2348 section.
2349 (scm_dynthrow): Abort when scm_i_critical_section_level is
2350 not zero.
2351
2352 2005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2353
2354 * threads.c (scm_try_mutex): Renamed argument for consistency.
2355
2356 * root.c (scm_call_with_dynamic_root): New docstring.
2357
2358 * eval.c: Define _GNU_SOURCE.
2359
2360 2005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2361
2362 Big merge from the mvo-thread-cleanup branch. The main changes
2363 are:
2364
2365 - The dynamic roots functionality has been split into dynamic
2366 states and continuations barriers. Fluids have been
2367 reimplemented and can now be garbage collected.
2368
2369 - Initialization of Guile now works in a multi-thread friendly
2370 manner. Threads can freely enter and leave guile mode.
2371
2372 - Blocking on mutexes or condition variables or while selecting
2373 can now be reliably interrupted via system asyncs.
2374
2375 - The low-level threading interface has been removed.
2376
2377 - Signals are delivered via a pipe to a dedicated 'signal delivery
2378 thread'.
2379
2380 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
2381
2382 * throw.c (scm_handle_by_message): Exit only the current thread,
2383 not the whole process.
2384 (scm_handle_by_message_noexit): Exit when catching 'quit.
2385
2386 * scmsigs.c (take_signal, signal_delivery_thread,
2387 start_signal_delivery_thread, ensure_signal_delivery_thread,
2388 install_handler): Reimplemented signal delivery as explained in
2389 the comments.
2390
2391 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
2392 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
2393 scm_i_sched_yield, scm_i_pthread_sigmask,
2394 SCM_I_PTHREAD_MUTEX_INITIALIZER,
2395 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
2396 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
2397 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
2398 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
2399 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
2400 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
2401 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
2402 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
2403 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
2404 scm_i_pthread_key_create, scm_i_pthread_setspecific,
2405 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
2406 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
2407 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
2408 when using pthreads.
2409 * null-threads.c, null-threads.h: Provide dummy definitions for
2410 the above symbols when not using pthreads.
2411
2412 * modules.h, modules.c (scm_frame_current_module): New.
2413
2414 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
2415 instead of scm_internal_dynamic_wind.
2416
2417 * init.h, init.c (restart_stack, start_stack): Removed.
2418 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
2419 (scm_boot_guile_1): Removed.
2420 (scm_i_init_mutex): New.
2421 (really_cleanup_for_exit, cleanup_for_exit): New.
2422 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
2423 Moved around some init funcs. Call
2424 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
2425 with atexit.
2426
2427 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
2428 Use "!scm_is_eq" instead of "!=".
2429
2430 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
2431 SCM_USE_COOP_THREADS): Removed.
2432
2433 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
2434 maintained. Unlock scm_i_sweep_mutex before running
2435 scm_after_gc_c_hook.
2436 (scm_permanent_object): Allocate outside of critical section.
2437 (cleanup): Removed.
2438
2439 * fluids.h, fluids.c: Reimplemented completely.
2440 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
2441 SCM_FAST_FLUID_SET): Reimplemented as functions.
2442 (scm_is_fluid): New.
2443 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
2444 (scm_make_dynamic_state, scm_dynamic_state_p,
2445 scm_is_dynamic_state, scm_current_dynamic_state,
2446 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
2447 scm_c_with_dynamic_state, scm_with_dynamic_state,
2448 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
2449
2450 * feature.c (progargs_fluid): New.
2451 (scm_program_arguments, scm_set_program_arguments): Use it instead
2452 of scm_progargs.
2453 (scm_init_feature): Allocate it. Also, only add "threads" feature
2454 when SCM_USE_PTHREAD_THREADS is true.
2455
2456 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
2457 scm_make_rec_mutex, with all the consequences.
2458 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
2459 scm_internal_dynamic_wind. Handle dynamic states as second
2460 argument.
2461
2462 * threads.h, threads.c (scm_internal_select): Renamed to
2463 scm_std_select and discouraged old name.
2464 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
2465 and scm_std_usleep.
2466 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
2467 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
2468 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
2469 SCM_THREAD_DATA): Removed.
2470 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
2471 (scm_i_thread): New.
2472 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2473 Use scm_assert_smob_type.
2474 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
2475 scm_thread_self, scm_thread_yield, scm_mutex_init,
2476 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
2477 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
2478 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
2479 scm_cond_init, scm_cond_destroy, scm_cond_wait,
2480 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
2481 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
2482 scm_thread_select): Removed. Replaced with scm_i_pthread
2483 functions as appropriate.
2484 (scm_in_guile, scm_outside_guile): Removed.
2485 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
2486 take a ticket.
2487 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
2488 New.
2489 (scm_i_frame_single_threaded): New.
2490 (scm_init_threads_default_dynamic_state): New.
2491 (scm_i_create_thread): Removed.
2492 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
2493 (scm_make_recursive_mutex): New.
2494 (scm_frame_critical_section): New.
2495 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
2496 latter, changed all uses.
2497 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
2498 scm_i_set_last_debug_frame): New, use them instead of scm_root
2499 stuff.
2500 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
2501 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
2502 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
2503 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
2504 (remqueue): Allow the removal of already removed cells. Indicate
2505 whether a real removal has happened.
2506 (scm_thread): Removed, replaced with scm_i_thread.
2507 (make_thread, init_thread_creatant): Removed.
2508 (cur_thread): Removed.
2509 (block_self, unblock_from_queue): New.
2510 (block, timed_block, unblock): Removed.
2511 (guilify_self_1, guilify_self_2, do_thread_exit,
2512 init_thread_key_once, init_thread_key,
2513 scm_i_init_thread_for_guile, get_thread_stack_base,
2514 scm_init_guile): New initialisation method.
2515 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
2516 thread creation.
2517 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
2518 "fair" to fat and implemented new semantics, including reliable
2519 interruption.
2520 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
2521 (scm_threads_mark_stacks): Explicitly mark handle.
2522 (scm_std_select): Allow interruption by also selecting on the
2523 sleep_pipe.
2524 (scm_i_thread_put_to_sleep): Handle recursive requests for
2525 single-threadedness.
2526 (scm_threads_prehistory, scm_init_threads): Put current thread
2527 into guile mode via guileify_self_1 and guileify_self_2,
2528 respectively.
2529
2530 * fluid.h (SCM_FLUIDP): Deprecated.
2531
2532 * coop-threads.c: Removed.
2533
2534 * continuations.h, continuations.c (scm_with_continuation_barrier,
2535 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
2536 New.
2537
2538 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
2539 (async_mutex): New.
2540 (scm_async_click): Protected with async_mutex. Do not deal with
2541 signal_asyncs, which are gone. Set cdr of handled async cell to
2542 #f.
2543 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
2544 current sleep.
2545 (scm_system_async_mark_for_thread): Do not use scm_current_thread
2546 since that might not work during early initialization.
2547
2548 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
2549 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
2550 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
2551 and SCM_CRITICAL_SECTION_END.
2552 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
2553 SCM_CRITICAL_SECTION_START/END.
2554
2555 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
2556 (libguile_la_SOURCES): Added null-threads.c
2557 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
2558 threads-plugin.c.
2559 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
2560
2561 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
2562 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
2563 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
2564 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
2565 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
2566 scm_make_root): Removed or deprecated. Replaced with references
2567 to the current thread, dynamic state, continuation barrier, or
2568 some fluid, as appropriate.
2569 (root_mark, root_print): Removed.
2570 (scm_internal_cwdr): Reimplemented guts with
2571 scm_frame_current_dynamic_state and
2572 scm_i_with_continuation_barrier.
2573 (scm_dynamic_root): Return current continuation barrier.
2574
2575
2576 2005-02-28 Marius Vollmer <mvo@zagadka.de>
2577
2578 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
2579 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
2580 cleanliness.
2581 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
2582 IP_DROP_MEMBERSHIP.
2583 Thanks to Greg Troxel!
2584
2585 2005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2586
2587 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
2588 block.
2589
2590 2005-02-25 Marius Vollmer <mvo@zagadka.de>
2591
2592 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
2593 so that no two weak alist vectors share a spine.
2594 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
2595 during GC before inserting the new alist cell.
2596
2597 2005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2598
2599 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
2600 the hashtable.
2601 (scm_hash_fn_create_handle_x): Likewise.
2602 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
2603
2604 2005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2605
2606 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
2607 the prototypical examples mentioned in the old reference manual.
2608 Instead keep the old semantics of dispatching on type. (Yes, this
2609 is extremely ugly, but the whole point of keeping the deprecated
2610 interface is not to break old code.)
2611
2612 2005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2613
2614 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
2615 scm_i_array_dims.
2616
2617 2005-01-28 Kevin Ryde <user42@zip.com.au>
2618
2619 * numbers.c (scm_ash): Rewrite using shifts, much faster than
2620 integer-expt and multiply/divide. Inexacts and fractions no longer
2621 supported (they happened to work before for left shifts, but not
2622 right). Don't really need inexacts and fractions, since ash is
2623 documented as a "bitwise operation", and all the rest of those only
2624 take exact integers.
2625
2626 2005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
2627
2628 * gc-card.c (scm_i_card_statistics): map structs, closures and
2629 subrs to one tag.
2630
2631 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
2632 (tag_table_to_type_alist): ignore unknown types.
2633
2634 * gc-segment.c (scm_i_all_segments_statistics): new function.
2635 (scm_i_heap_segment_statistics): new function
2636
2637 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
2638 statistics on the number of live objects of each type.
2639
2640 * gc-card.c (scm_i_tag_name): new function.
2641 (scm_i_card_statistics): new function.
2642
2643 2005-01-24 Kevin Ryde <user42@zip.com.au>
2644
2645 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
2646 POSIX and C99 don't document errno being set. Reported by Bruno
2647 Haible.
2648 (scm_flock): Update docstring from manual.
2649
2650 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
2651 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
2652 a 64-bit system.
2653
2654 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
2655 sa_handler, needs to be a long on 64-bit systems where int is only 32
2656 bits.
2657
2658 2005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2659
2660 * environments.c (obarray_enter, obarray_replace): Call
2661 SCM_HASHTABLE_INCREMENT when adding a new entry.
2662
2663 * objects.c: Include goops.h for the scm_class_of prototype.
2664
2665 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
2666 sizes to be smaller than the maximum lengths of vectors.
2667
2668 2005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2669
2670 * ports.c, smob.c: Include "libguile/goops.h".
2671
2672 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
2673 scm_class_char, scm_class_pair, scm_class_procedure,
2674 scm_class_string, scm_class_symbol,
2675 scm_class_procedure_with_setter, scm_class_primitive_generic,
2676 scm_class_vector, scm_class_null, scm_class_real,
2677 scm_class_complex, scm_class_integer, scm_class_fraction,
2678 scm_class_unknown, scm_port_class, scm_smob_class,
2679 scm_no_applicable_method, scm_class_of): Moved from objects to
2680 goops since they are only useable once goops has been loaded.
2681 (scm_classes_initialized): Removed.
2682 (scm_class_of): Do not check it.
2683 (create_standard_classes): Do not set it.
2684
2685 2005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2686
2687 * objects.h, objects.c (scm_classes_initialized): New.
2688 (scm_class_of): Signal error when scm_classes_initialized is zero.
2689 * goops.c (create_standard_classes): Set scm_classes_initialized
2690 to one.
2691
2692 * random.c (scm_random_solid_sphere_x): Use
2693 scm_c_generalized_vector_length instead of
2694 scm_uniform_vector_length.
2695
2696 2005-01-16 Marius Vollmer <mvo@zagadka.de>
2697
2698 * script.c (scm_compile_shell_switches): Removed debugging output.
2699
2700 2005-01-15 Kevin Ryde <user42@zip.com.au>
2701
2702 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
2703 docstrings from manual.
2704 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
2705
2706 2005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2707
2708 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
2709 its value.
2710
2711 Implement u64 and s64 uniform numeric vectors with bignums when
2712 scm_t_uint64 and scm_t_int64 are not available.
2713
2714 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2715 scm_array_handle_u64_elements,
2716 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2717 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2718 is not available.
2719 (scm_take_s64vector, scm_array_handle_s64_elements,
2720 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2721 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2722 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2723 scm_t_int64/scm_t_uint64 are not available.
2724 (uvec_mark): New, to mark the bignums.
2725 (alloc_uvec): Initialize bignums.
2726 (uvec_fast_ref): Return bignums directly.
2727 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2728 assert_exact_integer): New.
2729 (uvec_fast_set): Use them to validate the bignums.
2730 (scm_init_srfi_4): Set mark function of smob when needed.
2731 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2732 scm_int64_max.
2733
2734 Recognize 1.4 -e syntax.
2735
2736 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2737 (scm_compile_shell_switches): Use them to recognize and convert
2738 1.4 "-e" syntax.
2739
2740 2005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2741
2742 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2743 deprecated features that once were macros but are now functions
2744 back into macros.
2745
2746 2005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2747
2748 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2749 * deprecation.c (scm_issue_deprecation_warning,
2750 scm_c_issue_deprecation_warning_fmt): Use it.
2751 (mode): Removed.
2752 (print_summary): New.
2753 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2754 mode.
2755
2756 Deprecated SCM_ARRAY* macros.
2757
2758 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2759 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2760 version. Changed all uses.
2761 (scm_tc16_array, scm_i_tc16_array,
2762 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2763 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2764 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2765 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2766 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2767 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2768 SCM_ARRAY_V, SCM_I_ARRAY_V,
2769 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2770 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2771 scm_t_array, scm_i_t_array): Likewise.
2772 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2773 Moved from unif.h to unif.c.
2774 (scm_c_array_rank): New.
2775 (scm_array_rank): Reimplement using it.
2776
2777 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2778 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2779 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
2780
2781 2005-01-11 Marius Vollmer <mvo@zagadka.de>
2782
2783 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2784 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2785 scm_c_generalized_vector_ref and scm_cvref, and
2786 scm_c_generalized_vector_set_x, respectively.
2787 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2788 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2789
2790 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2791 former to latter and made public. Changed all uses.
2792 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2793 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2794 (scm_i_shap2ra): New internal version of scm_shap2ra.
2795 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2796 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2797 (scm_ra_set_contp): Deprecated, changed all uses to
2798 scm_i_ra_set_contp.
2799 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
2800
2801 2005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2802
2803 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2804 Trotts!
2805
2806 * unif.c (scm_list_to_typed_array): Allow the specification of the
2807 upper bound as well. This is needed for empty arrays.
2808 (l2ra): Give needed number of elements in error message.
2809 (scm_i_print_array): Print length information for arrays that need
2810 it.
2811 (scm_i_read_array): Parse it.
2812
2813 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2814 scm_i_object_chars, scm_i_object_length): Brought back from the
2815 dead.
2816
2817 2005-01-10 Marius Vollmer <mvo@zagadka.de>
2818
2819 * ramap.c: Replaced single-index uses of scm_array_set_x with
2820 scm_c_generalized_vector_set_x.
2821
2822 * unif.c (scm_array_rank, scm_array_dimensions,
2823 scm_shared_array_offset, scm_shared_array_increments,
2824 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2825 to simplify code and make it more general.
2826 (scm_shared_array_root): Work with all kinds of arrays, including
2827 naked vectors.
2828 (indices_to_pos): New.
2829 (scm_make_shared_array): Use it instead of scm_aind; use handle
2830 for oldra.
2831
2832 2005-01-10 Kevin Ryde <user42@zip.com.au>
2833
2834 * posix.c (scm_mkstemp): Update docstring from manual.
2835
2836 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2837
2838 2005-01-09 Marius Vollmer <mvo@zagadka.de>
2839
2840 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2841 scm_i_uniform_vector_set_proc): New.
2842 (u8ref, u8set, s8ref, s8set, etc): New.
2843 (uvec_reffers, uvec_setters): New.
2844 (uvec_to_list): Use generic scm_array_handle_ref instead of
2845 uvec_fast_ref since scm_array_handle_ref should be faster now.
2846 (coerce_to_uvec, scm_c_uniform_vector_ref,
2847 scm_c_uniform_vector_set_x): Likewise.
2848
2849 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2850 New.
2851 (scm_t_array_handle): Added ref, set, elements and
2852 writable_elements for fast inline operation of
2853 scm_array_handle_ref and scm_array_handle_set.
2854 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2855 and replaced with inline code that simply calls the ref/set
2856 members of the handle.
2857 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2858 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2859 New.
2860 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2861 and memoize_set.
2862 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2863 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2864 scm_bit_invert_x): Correctly multiply index with increment in the
2865 general case.
2866
2867 * unif.c (scm_array_handle_set): Correctly execute only one
2868 alternative. D'Oh!
2869 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2870 the array; this covers all cases with much simpler code.
2871
2872 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2873 as well.
2874
2875 2005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2876
2877 * srfi-4.c (uvec_type): New.
2878 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2879 scm_c_uniform_vector_x): Use it to get concrete type.
2880
2881 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2882 fit the docs.
2883
2884 * unif.c (ra2l): Handle zero rank arrays.
2885 (scm_i_print_array): Print zero rank arrays specially.
2886 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2887 (scm_i_read_array): Allow zero rank arrays.
2888
2889 2005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2890
2891 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2892 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2893 and SCM_SET_HASHTAB_BUCKET.
2894
2895 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2896 Removed ref_stack field.
2897 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2898 of a print state. Use them everywhere instead of ref_stack.
2899
2900 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
2901
2902 * srfi-4.c: Include deprecation.h.
2903
2904 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2905 deprecated.c, eq.c
2906 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2907 (scm_vector_elements, scm_vector_writable_elements,
2908 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2909 unif.[hc].
2910 (SCM_SIMPLE_VECTOR_LOC): Removed.
2911 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2912 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2913 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2914 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2915 latter. Changed use in eq.c.
2916
2917 2005-01-07 Marius Vollmer <mvo@zagadka.de>
2918
2919 Make the uniform vector routines also deal with one dimensional
2920 arrays.
2921
2922 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2923 SCM_SMOB_PREDICATE in this file.
2924 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2925 of the right type.
2926 (scm_is_uniform_vector): Likewise.
2927 (uvec_fast_ref): Made BASE param const.
2928 (uvec_writable_elements, uvec_elements): New.
2929 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2930 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2931 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2932 arrays.
2933 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2934 argument convention.
2935 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2936 checking.
2937 (scm_uniform_vector_length): Use uvec_length.
2938
2939 2005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2940
2941 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2942 scm_c_uniform_vector_size): Removed.
2943 (scm_array_handle_uniform_element_size): New.
2944
2945
2946 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2947 type of POS parameter to be signed, positions can be negative.
2948 (scm_array_handle_release): New, changed all uses of
2949 scm_t_array_handle to properly call it.
2950 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2951 Renamed former to latter, changed all uses.
2952
2953 2005-01-05 Marius Vollmer <mvo@zagadka.de>
2954
2955 Updated bitvector routines to also use scm_t_array_handles.
2956
2957 * unif.h (scm_bitvector_elements,
2958 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2959 deliver offset, length and increment to caller. Changed all uses.
2960 (scm_bitvector_release_elements,
2961 scm_frame_bitvector_release_elements,
2962 scm_bitvector_release_writable_elements,
2963 scm_frame_bitvector_release_writable_elements): Removed.
2964 (scm_array_handle_bit_elements,
2965 scm_array_handle_bit_writable_elements,
2966 scm_array_handle_bit_elements_offset): New.
2967 (scm_make_typed_array): The special value for non-initialized
2968 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2969 was a valid value to fill bitvectors with, so it can't really be
2970 specialed out.
2971
2972 2005-01-04 Kevin Ryde <user42@zip.com.au>
2973
2974 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2975 Reported by Bill Schottstaedt.
2976
2977 2005-01-02 Marius Vollmer <mvo@zagadka.de>
2978
2979 * sort.c (quicksort): Added INC parameter for non-contigous
2980 vectors.
2981 (quicksort1): New, for contigous vectors. Both functions are
2982 generated from the same code by including "quicksort.i.c".
2983 (scm_restricted_vector_sort_x): Call one of quicksort and
2984 quicksort1, depending on increment of vector.
2985 (scm_sort): Simply call scm_sort_x on a copy of the list or
2986 vector.
2987 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2988 size_t, added inc parameter.
2989 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2990 so that it doesn't leak.
2991 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2992 list or vector.
2993
2994 * ramap.c (scm_array_map_x): Do not try to convert fill value
2995 before filling, any necessary conversion is done while storing.
2996
2997 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2998 doing it inline.
2999
3000 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
3001 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
3002 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
3003
3004 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
3005 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
3006 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
3007 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
3008 objects.c, ports.c, posix.c, print.c, random.c, read.c,
3009 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
3010 vector elements API or simple vector API, as appropriate. Removed
3011 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
3012 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
3013
3014 * srfi-4.h, srfi-4.c,
3015 srfi-4.i.c (scm_array_handle_uniform_elements,
3016 scm_array_handle_uniform_writable_elements,
3017 scm_uniform_vector_elements,
3018 scm_uniform_vector_writable_elements):
3019 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
3020 scm_t_array_handle, deliver length and increment.
3021 (scm_array_handle_<foo>_elements,
3022 scm_array_handle_<foo>_writable_elements): New.
3023
3024 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
3025 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
3026
3027 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
3028 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
3029 scm_array_handle_set, scm_array_handle_elements
3030 scm_array_handle_writable_elements, scm_vector_get_handle): New.
3031 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
3032 scm_dimensions_to_uniform_array): Deprecated for real.
3033 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
3034 snarfing wont allow a mismatch between C and Scheme arglists.
3035 (scm_make_shared_array, scm_enclose_array): Correctly use
3036 scm_c_generalized_vector_length instead of
3037 scm_uniform_vector_length.
3038
3039 * validate.h (SCM_VALIDATE_VECTOR,
3040 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
3041 of SCM_VECTORP.
3042
3043 * weaks.h, weaks.c: Use new internal weak vector API from
3044 vectors.h.
3045
3046 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
3047 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
3048 'extra' to being regular sources.
3049 (noinst_HEADERS): Added quicksort.i.c.
3050 * quicksort.i.c: New file.
3051
3052 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
3053 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
3054 and reimplemented. Replaced all uses with scm_vector_elements,
3055 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
3056 appropriate.
3057 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
3058 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
3059 SCM_SIMPLE_VECTOR_LOC): New.
3060 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
3061 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
3062 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
3063 Removed.
3064 (scm_vector_copy): New.
3065 (scm_vector_elements, scm_vector_writable_elements): Use
3066 scm_t_array_handle, deliver length and increment. Moved to
3067 unif.h. Changed all uses.
3068 (scm_vector_release_elements,
3069 scm_vector_release_writable_elements,
3070 (scm_frame_vector_release_elements,
3071 scm_frame_vector_release_writable_elements): Removed.
3072 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
3073 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
3074 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
3075 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
3076 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
3077 weak vectors.
3078
3079 2004-12-29 Marius Vollmer <mvo@zagadka.de>
3080
3081 No longer use creators to specify the type of an array. Creators
3082 expose the fact that arrays are wrapped around vectors, but that
3083 might change.
3084
3085 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
3086 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
3087 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
3088 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
3089 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
3090 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
3091 uvec_proc_vars): Removed.
3092 (scm_i_generalized_vector_creator): Removed.
3093 (scm_i_generalized_vector_type): New.
3094
3095 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
3096 scm_make_typed_array, scm_array_type, scm_list_to_array,
3097 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
3098 (scm_array_creator): Removed.
3099 (scm_array_p): Deprecated second PROT argument.
3100 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
3101 Deprecated, reimplemented in terms of scm_make_typed_array and
3102 scm_list_to_typed_array.
3103 (scm_i_proc_make_vector, scm_i_proc_make_string,
3104 scm_i_proc_make_bitvector): Removed.
3105 (type_creator_table, init_type_creator_table, type_to_creator,
3106 make_typed_vector): New.
3107 (scm_i_convert_old_prototype): Removed.
3108 (prototype_to_type): New.
3109 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
3110 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
3111 minor added clarity.
3112 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
3113 instead of scm_make_uve.
3114 (tag_creator_table, scm_i_tag_to_creator): Removed.
3115 (tag_to_type): New.
3116 (scm_i_read_array): Use scm_list_to_typed_array instead of
3117 scm_list_to_uniform_array.
3118
3119 2004-12-27 Marius Vollmer <mvo@zagadka.de>
3120
3121 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
3122 (scm_bitvector_writable_elements): New.
3123 (scm_bitvector_release, scm_bitvector_release_elements):
3124 Renamed former to latter. Added explicit call to
3125 scm_remember_upto_here_1.
3126 (scm_frame_bitvector_release,
3127 scm_frame_bitvector_release_elements): Renamed former to latter.
3128 (scm_bitvector_release_writable_elements,
3129 scm_bitvector_release_writable_elements): New.
3130 Changed all uses as required by the changes above.
3131
3132 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
3133 scm_u8vector_elements, etc): Made return value "const".
3134 (scm_uniform_vector_writable_elements,
3135 scm_u8vector_writable_elements, etc): New.
3136 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
3137 Renamed former to latter. Added explicit call to
3138 scm_remember_upto_here_1.
3139 (scm_frame_uniform_vector_release,
3140 scm_frame_uniform_vector_release_elements): Renamed former to latter.
3141 (scm_uniform_vector_release_writable_elements,
3142 scm_frame_uniform_vector_release_writable_elements): New. Takes
3143 crown of longest identifier yet.
3144 Changed all uses as required by the changes above.
3145
3146 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
3147 void.
3148 (scm_is_vector, scm_vector_p, scm_vector_length,
3149 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
3150 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
3151 scm_vector_move_left_x, scm_vector_move_right_x,
3152 scm_vector_fill_x): handle one-dimensional arrays.
3153 (scm_vector_elements, scm_vector_release_elements,
3154 scm_vector_frame_release_elements, scm_vector_writable_elements,
3155 scm_vector_release_writable_elements,
3156 scm_vector_frame_release_writable_elements): New.
3157 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
3158 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
3159
3160 * ramap.c (scm_ramapc, scm_raeql): Use
3161 scm_c_generalized_vector_length instead of
3162 scm_uniform_vector_length.
3163 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
3164 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
3165
3166 2004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3167
3168 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
3169 member for relocating debug frames.
3170 (scm_make_continuation): Set it.
3171
3172 * stacks.c (read_frame, read_frames, scm_make_stack,
3173 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
3174 of continuations instead of calculating the offset ourselves.
3175 Relocate 'vect' member of scm_t_debug_frame.
3176
3177 2004-12-16 Kevin Ryde <user42@zip.com.au>
3178
3179 * ramap.c (scm_array_map_x): Check for at least one source argument.
3180
3181 2004-12-14 Kevin Ryde <user42@zip.com.au>
3182
3183 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
3184 the C code so for the final call to the predicate procedure is a tail
3185 call, per SRFI-13 spec.
3186
3187 2004-12-10 Kevin Ryde <user42@zip.com.au>
3188
3189 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
3190 recent revision to the reference manual.
3191
3192 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
3193 with "%", C99 says it's well-defined.
3194
3195 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
3196 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
3197 bother trying to fit scm_from_ulong, not really worth the trouble if
3198 addresses are more than 4 bytes usually.
3199
3200 2004-11-30 Kevin Ryde <user42@zip.com.au>
3201
3202 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
3203 arm32. Reported by Greg Troxel.
3204
3205 2004-11-14 mvo <mvo@zagadka.de>
3206
3207 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
3208
3209 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
3210
3211 2004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3212
3213 Enclosed arrays are now their own smob. This has been done to
3214 make the code more explicit about them and to prepare for the time
3215 when generalized vectors include arbitrary one-dimensional
3216 arrays. (Uptonow, enclosed arrays have been recognized by their
3217 use of an array as their storage 'vector'. When all generalized
3218 vectors are allowed as storage, including one-dimensional arrays,
3219 this will no longer work.)
3220
3221 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
3222 New.
3223 (exactly_one_third, singp): Removed.
3224 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
3225 scm_shared_array_offset, scm_shared_array_increments): Handle
3226 enclosed arrays explicitely.
3227 (scm_array_rank): Likewise. Also, do not return zero for
3228 non-arrays, signal an error instead since arrays with rank zero do
3229 exist.
3230 (scm_i_make_ra): New, for specifying the tag of the new array.
3231 (scm_make_enclosed_array): Use it.
3232 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
3233 (scm_make_shared_array): Use scm_c_generalized_vector_length
3234 instead of scm_uniform_vector_length.
3235 (scm_array_in_bounds_p): Rewritten to be much cleaner.
3236 (scm_i_cvref): New, doing the job of scm_cvref.
3237 (scm_cvref): Use scm_i_cvref.
3238 (scm_array_ref): Do not accept non-arrays when no indices are
3239 given. Use scm_i_cvref to do the actual access.
3240 ("uniform-array-set1"): Do not register.
3241 (scm_array_set_x, scm_uniform_array_read_x,
3242 scm_uniform_array_write): Handle enclosed arrays explicitly.
3243 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
3244 handle enclosed arrays.
3245 (scm_array_to_list): Handle enclosed arrays explicitly.
3246 (rapr1): Removed.
3247 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
3248 enclosed arrays.
3249 (scm_i_print_enclosed_array): New.
3250 (tag_proto_table, tag_creator_table): Renamed former to latter.
3251 Added "a" and "b" for strings and bitvectors, resp.
3252 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
3253 latter. Tag "a" is in the table now, no need to handle it as a
3254 legacy tag.
3255 (scm_raprin1): Just call scm_iprin1.
3256 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
3257 explicitly.
3258 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
3259 Use scm_i_print_array as printer for scm_tc16_array.
3260
3261 2004-11-10 Marius Vollmer <mvo@zagadka.de>
3262
3263 * ramap.c (cind): Changed second arg to be pointer to long instead
3264 of uniform vector.
3265 (scm_ramapc): Allocate index vector with scm_malloc and not as
3266 uniform vector. Wrap it in a frame so that it gets properly freed.
3267 (scm_array_index_map_x): Likewise.
3268
3269 * unif.c: Changed all uses of scm_array_prototype to
3270 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
3271 prototype is known.
3272 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
3273 in terms of scm_uniform_vector_read_x and
3274 scm_uniform_vector_write, respectively. Strings and
3275 bitvector support has been dropped.
3276
3277 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
3278 needed files directly. Include config.h, <unistd.h> and <io.h>
3279 when available.
3280 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
3281
3282 2004-11-09 Marius Vollmer <mvo@zagadka.de>
3283
3284 * gh_data.c (gh_uniform_vector_length): Properly use
3285 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
3286
3287 2004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3288
3289 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
3290 New.
3291 (scm_i_uniform_vector_creator): Removed.
3292 (scm_i_generalized_vector_creator): New.
3293 (scm_uniform_vector_length, scm_uniform_element_size): Do not
3294 handle generalized vectors, only uniform numeric vectors.
3295 (alloc_uvec): Do length check here...
3296 (make_uvec): ...but not here.
3297 (coerce_to_uvec): Use new generalized vector functions to handle
3298 all kinds of vectors in one go.
3299
3300 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
3301 remaining scm_tc7_unused tags to get a neatly ordered list.
3302
3303 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
3304 longer handle scm_tc7_bvect bitvectors.
3305
3306 * ramap.c: Use the new generalized vector functions to handle all
3307 vector like things.
3308
3309 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
3310 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
3311 scm_generalized_vector_length, scm_generalized_vector_ref,
3312 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
3313 scm_is_generalized_vector, scm_c_generalized_vector_length,
3314 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
3315 New.
3316
3317 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
3318 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
3319 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
3320 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
3321 scm_c_bitvector_length, scm_c_bitvector_ref,
3322 scm_c_bitvector_set_x, scm_bitvector_elements,
3323 scm_bitvector_release, scm_frame_bitvector_release,
3324 scm_tc16_bitvector, bitvector_free, bitvector_print,
3325 bitvector_equalp, count_ones, find_first_one): New.
3326 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
3327 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
3328 using the new C API for bitvectors and maybe count_ones or
3329 find_first_one, as appropriate.
3330 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
3331 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
3332 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
3333 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
3334 new functions from above.
3335 (scm_i_proc_make_vector, scm_i_proc_make_string,
3336 scm_i_proc_make_bitvector): Made non-static for use in
3337 scm_i_generalized_vector_creator.
3338 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
3339 (scm_make_uve): Validate that the created object is a generalized
3340 vector.
3341 (scm_i_legacy_tag): Removed.
3342 (scm_i_print_array): Do it here.
3343 (scm_raprin1): Only print enclosed arrays.
3344
3345 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
3346
3347 2004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3348
3349 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
3350 added portability.
3351
3352 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
3353 for "space". Thanks to Bruce Korb!
3354
3355 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
3356 only after dest has been set. Thanks to Hyper Division!
3357
3358 * gh_data.c (gh_uniform_vector_length): Use
3359 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
3360
3361 2004-11-03 Marius Vollmer <mvo@zagadka.de>
3362
3363 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
3364 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
3365 SCM_SET_UVECTOR_LENGTH): Removed.
3366
3367 2004-11-02 Marius Vollmer <mvo@zagadka.de>
3368
3369 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
3370 Thanks!
3371
3372 * backtrace.c (scm_display_backtrace_with_highlights): Join the
3373 first and the second line of the SCM_DEFINE macro call, since old
3374 preprocessors cannot handle definitions that are split into two
3375 lines.
3376
3377 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
3378 declarations.
3379
3380 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
3381 scm_t_uint32 to fix the mismatch between the function declaration
3382 and definition.
3383
3384 * sort.c (quicksort): Don't use C99 variable declarations.
3385
3386 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
3387 SCM_BOOL_F if no type matches.
3388
3389 * threads.c (thread_print): Cast a pointer to size_t when printing
3390 with scm_uintprint.
3391
3392 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
3393 defined.
3394 (scm_array_prototype): Deprecated.
3395
3396 2004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3397
3398 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
3399 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
3400 more efficient access to the u32vector.
3401
3402 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
3403 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
3404 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
3405
3406 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
3407 instead of the old-style dvectors.
3408
3409 * gh_data.c: Use new-style uniform arrays in place of old-style
3410 ones.
3411
3412 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
3413 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
3414
3415 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
3416 instead of old-sytle uvectors.
3417
3418 * convert.c, convert.i.c: Rewritten completely, using
3419 scm_any_to_u8vector, etc and other new-style uniform vector
3420 functions.
3421
3422 * random.c (scm_random_solid_sphere_x,
3423 scm_random_hollow_sphere_x): Do not validate vector argument, this
3424 is already done elsewhere.
3425
3426 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
3427 scm_any_to_u8vector, etc): New.
3428 (scm_uniform_element_size, scm_uniform_vector_length): Do no
3429 longer handle old-style uniform vectors.
3430
3431 * read.c (scm_lreadr): Bugfix: include the last bit in the
3432 bit vector.
3433
3434 2004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3435
3436 * unif.h, unif.c (scm_array_creator): New.
3437 (scm_i_get_old_prototype): New.
3438 (scm_array_prototype): use it to return old-style prototype, never
3439 return creators.
3440 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
3441 arg of SCM_UNDEFINED. The latter is wrong.
3442
3443 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
3444 (make_uve): Removed.
3445 (scm_i_proc_make_vector, scm_i_proc_make_string,
3446 scm_i_proc_make_u1vector): New.
3447 (scm_init_unif): Initialize them.
3448 (scm_i_convert_old_prototype): New.
3449 (scm_make_uve): Use it to get the creator procedure. Removed all
3450 old code that created old-style uniform vectors.
3451 (scm_array_p): Handle generic vectors.
3452 (scm_dimensions_to_uniform_array): Do not fill new array with
3453 prototype when that is a procedure.
3454 (scm_list_to_uniform_array): Also accept a list of lower bounds as
3455 the NDIM argument.
3456 (scm_i_print_array): Print rank for shared or non-zero-origin
3457 vectors.
3458 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
3459 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
3460 which I do not understand yet.
3461 (scm_array_prototype): Explicitely handle generic vectors.
3462
3463 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
3464 (iflo2str): Use icmplx2str for complex numbers.
3465
3466 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
3467 scm_i_uniform_vector_prototype): Removed.
3468 (scm_i_uniform_vector_creator): New.
3469 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
3470 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
3471 Updated all tables and generic functions to support them.
3472 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
3473 (scm_init_srfi_4): Initialize them.
3474
3475 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
3476 sizeof(CTYPE) as explained in the comment.
3477
3478 * read.c (scm_lreadr): Call scm_i_read_array for all characters
3479 following '#' that can start an array. Explicitely disambiguate
3480 'i' and 'e' between introducing numbers and uniform vectors. Do
3481 not call scm_i_read_homogenous_vector, since that is also handled
3482 by scm_i_read_array now.
3483
3484 2004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3485
3486 First cut at integrating uniform vectors from srfi-4 with the rest
3487 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
3488 vector. The plan is to gradually replace one type after the other
3489 until none is left and then to consider general cleanups and
3490 optimizations.
3491
3492 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
3493
3494 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
3495 scm_uniform_vector_ref, scm_uniform_vector_set_x,
3496 scm_uniform_vector_to_list, scm_is_uniform_vector,
3497 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
3498 scm_uniform_vector_elements, scm_uniform_vector_element_size,
3499 scm_uniform_vector_release): New.
3500 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
3501 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
3502 from unif.h, unif.c and extended to handle both the old and new
3503 uniform vectors.
3504
3505 * tags.h (scm_tc7_byvect): Commented out.
3506
3507 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
3508 the former to the latter.
3509 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
3510 srfi-4.h, srfi-4.c.
3511 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
3512 (scm_array_p, scm_array_rank, scm_array_dimensions,
3513 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
3514 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
3515 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
3516 vectors. Removed code for scm_tc7_byvect.
3517 (scm_dimensions_to_uniform_array): Fill array with 0 when
3518 prototype is #\nul.
3519 (scm_i_print_array_dimension, scm_i_legacy_tag,
3520 scm_i_print_array): New.
3521 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
3522 for scm_tc7_byvect.
3523
3524 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
3525 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
3526 uniform vectors. Removed code for scm_tc7_byvect
3527
3528 * print.c (iprin1): Removed code for scm_tc7_byvect.
3529 * objects.c (scm_class_of): Likewise.
3530 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
3531 * gc-card.c (scm_i_sweep_card): Likewise.
3532 * evalext.c (scm_self_evaluating_p): Likewise.
3533 * eq.c (scm_equal_p): Likewise.
3534
3535 * gh_data.c (gh_chars2byvect): Reimplemented with
3536 scm_make_s8vector.
3537 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
3538
3539 * srfi-4.c (take_uvec): New.
3540 (alloc_uvec): Use it.
3541 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
3542
3543 * random.c (vector_scale, vector_scale_x): Renamed former to the
3544 latter, since it modifies its argument.
3545 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
3546 Do not use scm_universal_vector_length for non-uniform vectors.
3547 Use scm_f64vector_elements to access innards of uniform vectors.
3548
3549 * convert.i.c: Convert srfi-4 style uniform vectors when
3550 requested.
3551 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
3552 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
3553
3554 2004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3555
3556 * numbers.h, numbers.c (scm_i_print_double): New.
3557
3558 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
3559 ../srfi/ but heavily modified.
3560 * Makefile.am: Add them in all the right places.
3561 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
3562 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
3563 '#u', and '#s'.
3564
3565 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
3566 and made non-static. Changed all uses.
3567
3568 2004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3569
3570 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
3571 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
3572 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
3573 scm_uintprint to print unsigned integers, raw heap words, and
3574 adresses, using a cast to scm_t_bits to turn pointers into
3575 integers.
3576
3577 * unif.c: Include "libguile/print.h".
3578
3579 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
3580 scm_t_intmax values.
3581 (scm_uint2str): New, for scm_t_uintmax.
3582 (scm_iint2str): Argument type changed to scm_t_intmax,
3583 reimplemented in terms of scm_uint2str.
3584
3585 * print.c, print.h (scm_uintprint): New, for printing
3586 scm_t_uintmax values.
3587 (scm_intprint): Argument type changed to scm_t_intmax.
3588
3589 * sort.c (quicksort, scm_merge, scm_merge_list_x,
3590 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
3591 strategic places so that the loops can be interrupted.
3592
3593 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
3594 "-I$(top_srcdir)/libguile-ltdl".
3595 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
3596 "../libguile-ltdl/libguile-ltdl.a".
3597
3598 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
3599 all references to scm_lt_* with just lt_*. Include <ltdl.h>
3600 instead of <libguile-ltdl.h>.
3601
3602 2004-10-20 Marius Vollmer <mvo@zagadka.de>
3603
3604 * sort.c (quicksort): Copy pivot out of the array while
3605 constructing the partitions; it could get overwritten otherwise.
3606 Because of the ultimate insertion sort, this bug did not cause
3607 quicksort to fail, it just put all the burdon on the insertion
3608 sort and was thus very slow. Thanks to Rolan Orre for reporting
3609 the slowness!
3610
3611 2004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3612
3613 * numbers.c (scm_i_range_error): New.
3614 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
3615 scm_out_of_range.
3616
3617 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
3618 endpos. State inclusiveness/exclusiveness of bounds in docstring.
3619
3620 * unif.c (scm_array_p): When no prototype is given, explicitely
3621 test for allowable types, do not simply return true. Thanks to
3622 Roland Orre for reporting this!
3623
3624 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
3625
3626 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
3627 segment to scm_max_segment_size.
3628
3629 2004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
3630
3631 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
3632
3633 * inline.h (scm_double_cell): abort if GC running.
3634 (scm_cell): idem.
3635
3636 2004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3637
3638 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
3639 pos == 0.
3640
3641 Keywords no longer store a 'dash symbol'. Instead, they store a
3642 symbol with their real name.
3643
3644 * keywords.h, keywords.c, deprecated.h, deprecated.c
3645 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
3646 terms of scm_is_keyword and scm_keyword_dash_symbol.
3647
3648 * keywords.h, keywords.c, discouraged.h, discouraged.c
3649 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
3650 scm_c_make_keyword): Discouraged.
3651
3652 * keywords.h, keywords.c (scm_symbol_to_keyword,
3653 scm_keyword_to_symbol): Implemented in C.
3654 (scm_is_keyword, scm_from_locale_keyword,
3655 scm_from_locale_keywordn): New.
3656
3657 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
3658
3659 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
3660 scm_from_locale_keyword instead of scm_c_make_keyword.
3661
3662 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
3663 better error message.
3664
3665 * deprecated.c: Include discouraged.h and keywords.h.
3666
3667 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
3668 reading '#:' or ':'. See NEWS for consequences.
3669
3670 2004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3671
3672 * read.c (scm_lreadr): Revert change from 2004-09-22: string
3673 literals are now read-write again (until SCM_STRING_CHARS is
3674 removed).
3675
3676 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
3677 strings with an error message that blames SCM_STRING_CHARS.
3678
3679 * options.c (change_option_setting): Use scm_car instead of
3680 explicit type check plus SCM_CAR.
3681
3682 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
3683 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
3684 (scm_iprin1): Use them instead of the previoulsy hardcoded
3685 strings.
3686 (scm_init_print): Initialize them.
3687
3688 * backtrace.c (display_frame_expr): Do not remove control
3689 characters from the final string. Print it directly using
3690 scm_display.
3691
3692 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
3693 Thanks to Roland Orre!
3694
3695 2004-09-29 Kevin Ryde <user42@zip.com.au>
3696
3697 * regex-posix.c (scm_regexp_exec): Correction to last change, should
3698 be whole original string in match struct, not offsetted substring.
3699
3700 2004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
3701
3702 * gc.c (scm_gc_unprotect_object): abort if called during GC.
3703
3704 2004-09-24 Marius Vollmer <mvo@zagadka.de>
3705
3706 * Makefile.am (EXTRA_DIST): Added gettext.h.
3707
3708 * smob.c, smob.h (scm_assert_smob_type): New.
3709
3710 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
3711 Include GUILE_CFLAGS.
3712 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3713 now.
3714 (libpath.h): Put GUILE_CFLAGS in the build-info.
3715
3716 2004-09-23 Marius Vollmer <mvo@zagadka.de>
3717
3718 * print.h (scm_print_state): Added highlight_objects.
3719 * print.c (make_print_state, scm_free_print_state): Initialize it
3720 to SCM_EOL.
3721 (scm_iprin1): Wrap output in '{...}' when object is contained in
3722 highlight_objects.
3723
3724 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3725 scm_backtrace_with_highlights): New. Set highlight_objects of
3726 printstate.
3727
3728 * error.c (scm_error_scm): Document new meaning of data/rest
3729 argument for out-of-range and wrong-type-arg errors.
3730 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3731 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3732 exception so that it gets highlighted in the backtrace.
3733 Don't talk about "argument" when not giving a position.
3734
3735 * throw.c (handler_message): The rest argument is the fourth
3736 argument, not everything after the third. Call
3737 scm_display_backtrace_with_highlights, passing the rest argument
3738 when appropriate.
3739
3740 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3741
3742 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3743 <bruno@clisp.org>:
3744
3745 * i18n.c: Handle --disable-nls (thanks Bruno).
3746
3747 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3748 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3749
3750 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3751 LC categories.
3752 * posix.c (scm_setlocale): Use it.
3753
3754 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3755 scm_bind_textdomain_codeset): Make wrappers similar to C function
3756 they wrap.
3757
3758 * i18n.h: New file.
3759 * i18n.c: New file.
3760 * gettext.h: New file, taken from GNU gettext.
3761 * init.c: Include libguile/i18n.h.
3762 (scm_init_guile_1): Add call to scm_init_i18n().
3763 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3764 (DOT_X_FILES): Add i18n.x.
3765 (DOT_DOC_FILES): Add i18n.doc.
3766 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3767 (modinclude_HEADERS): Add i18n.h.
3768
3769 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3770
3771 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3772
3773 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3774 discouraged.h. Replaced all uses with scm_is_pair.
3775 (SCM_I_CONSP): New name for SCM_CONSP.
3776
3777 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3778 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3779 scm_cadr, etc): New.
3780 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3781 uses with scm_is_null.
3782
3783 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3784 instead of explicit code.
3785
3786 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3787
3788 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3789 Reworded logic a bit so that #f is returned immediately when s1 is
3790 too short to contain s2.
3791
3792 * regex-posix.c (scm_regexp_exec): Convert string to
3793 zero-terminated locale string before matching against it.
3794
3795 * strings.h, strings.c (scm_substring_read_only,
3796 scm_c_substring_read_only, scm_i_substring_read_only): New.
3797 (RO_STRING_TAG, IS_RO_STRING): New.
3798 (scm_i_string_writable_chars): Bail on read-only strings.
3799
3800 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3801 literals, thus making them read-only as specified by R5RS.
3802
3803 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3804
3805 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3806 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3807
3808 2004-09-21 Marius Vollmer <mvo@zagadka.de>
3809
3810 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3811 numbers.c.
3812 (scm_to_mpz, scm_from_mpz): New.
3813 Thanks to Andreas Vögele!
3814
3815 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3816 just on a line of its own.
3817
3818 * srfi-13.c (scm_string_any, scm_string_every,
3819 scm_string_tabulate, string_upcase_x, string_down_case_x,
3820 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3821 size_t instead of int for indices into strings. Make sure that no
3822 over- or underflow occurs. Thanks to Andreas Vögele!
3823 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3824 indices, which can also be negative.
3825
3826 2004-09-20 Marius Vollmer <mvo@zagadka.de>
3827
3828 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3829
3830 * threads.c (scm_threads_mark_stacks): Call
3831 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3832 only used once.
3833
3834 2004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3835
3836 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3837 Bugfix: when subtracting unsigned values, make sure that result
3838 does not wrap.
3839
3840 2004-09-09 Kevin Ryde <user42@zip.com.au>
3841
3842 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3843 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
3844 by Andreas Vögele.
3845
3846 2004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3847
3848 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3849
3850 * eq.c (real_eqv): Pretend that all NaNs are equal.
3851
3852 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3853
3854 2004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3855
3856 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3857 use size_t for some locals instead of int.
3858
3859 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3860 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3861 (skip_scsh_block_comment): Use scm_input_error instead of
3862 scm_misc_error in case of EOF.
3863
3864 2004-09-07 Kevin Ryde <user42@zip.com.au>
3865
3866 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
3867 Bug report by Bill Schottstaedt.
3868
3869 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3870 column.
3871 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3872
3873 * posix.c (scm_access): Update docstring per manual.
3874
3875 * posix.c (scm_nice): Correction to error detection. Reported by
3876 Matthias Koeppe.
3877
3878 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3879 throw error before unlocking mutex with SCM_ALLOW_INTS.
3880
3881 2004-09-06 Kevin Ryde <user42@zip.com.au>
3882
3883 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3884 available. This also gets around CLK_TCK being absent when
3885 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3886
3887 2004-09-03 Stefan Jahn <stefan@lkcc.org>
3888
3889 * threads.c (scm_threads_mark_stacks): Fixed local variable
3890 definitions.
3891
3892 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
3893 local variable definitions.
3894
3895 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3896 MinGW32 because it conflicts with its pthread headers.
3897 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3898 (scm_strftime): Using scm_from_locale_string() instead of
3899 scm_makfrom0str().
3900
3901 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
3902 part.
3903
3904 * numbers.c (scm_init_numbers): Removed check_sanity() call
3905 inside GUILE_DEBUG. The function has been removed somewhen...
3906
3907 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3908 MinGW32 because it conflicts with its pthread headers.
3909
3910 2004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3911
3912 * strings.c (SCM_STRINGP): Accept all strings.
3913 (SCM_STRING_CHARS): Reject shared substrings here.
3914
3915 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3916 the Copyright years.
3917
3918 2004-08-27 Kevin Ryde <user42@zip.com.au>
3919
3920 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3921 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3922 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3923
3924 2004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3925
3926 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3927 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3928 scm_i_symbol_is_interned, scm_i_mem2symbol,
3929 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3930
3931 2004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3932
3933 * srfi-13.c: First cut at thread-safeness and proper use of
3934 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3935 been inserted. Made sure that no internal string pointer is used
3936 across a SCM_TICK or a possible GC.
3937
3938 * script.c (scm_compile_shell_switches): Use
3939 scm_from_locale_string instead of scm_makfrom0str.
3940
3941 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3942 always been.
3943
3944 2004-08-25 Marius Vollmer <mvo@zagadka.de>
3945
3946 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3947 strop.c.
3948
3949 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3950 * strop.h, strop.c: Removed, they are now empty.
3951 * Makefile.am: Updated for new and removed files.
3952
3953 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3954 to scm_string_to_symbol.
3955
3956 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3957 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3958 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3959 charset instead of libc functions.
3960
3961 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3962 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3963 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3964 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3965 instead of explicit code.
3966
3967 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3968 "srfi-13.h" instead of "strop.h".
3969
3970 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3971 scm_init_srfi_14. Do not call scm_init_strop.
3972
3973 2004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3974
3975 * numbers.c (scm_inf_p): Synced docstring back from manual.
3976
3977 2004-08-22 Marius Vollmer <mvo@zagadka.de>
3978
3979 * strings.c (get_str_buf_start): New helper function.
3980 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3981 scm_i_string_char, scm_i_string_writable_chars): Use it.
3982 (scm_i_substring_copy): Make START argument optional for C
3983 callers, for upcoming SRFI-13 integration.
3984
3985 2004-08-21 Marius Vollmer <mvo@zagadka.de>
3986
3987 From Richard Todd, Thanks!
3988
3989 * script.c (scm_compile_shell_switches): added '-L' switch to add
3990 to the %load-path.
3991
3992 2004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3993
3994 * eval.c (unmemoize_exprs): When dropping internal body markers
3995 from the output during unmemoization, also drop those that are not
3996 immediately at the beginning of a body.
3997
3998 2004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3999
4000 * eval.c (scm_lookupcar1): Report "Variable used before given a
4001 value" insetad of an "Unbound" one for variables that are found
4002 but still contain SCM_UNDEFINED.
4003
4004 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
4005 expects a null-terminated string in the locale encoding, but
4006 scm_i_string_writable_chars doesn't give that. Fixed by letting
4007 mkstemp modify a locale version of the tmpl argument and copying
4008 the result back into tmpl.
4009
4010 * strop.c (scm_substring_move_x): Store into str2, not str1.
4011
4012 2004-08-20 Kevin Ryde <user42@zip.com.au>
4013
4014 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
4015 to modify the input string.
4016
4017 2004-08-19 Marius Vollmer <mvo@zagadka.de>
4018
4019 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
4020 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
4021 scm_c_symbol_length.
4022
4023 2004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4024
4025 New string implementation, with copy-on-write strings and
4026 mutation-sharing substrings, and a new internal string API.
4027 Symbols can now share memory with strings.
4028
4029 * tags.h (scm_tc7_stringbuf): New tag.
4030
4031 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
4032 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
4033 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
4034 uses.
4035 (scm_i_make_string, scm_c_make_string): New, to replace
4036 scm_allocate_string. Updated all uses.
4037 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
4038 SCM_STRING_LENGTH): Deprecated.
4039 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
4040 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
4041 Discouraged. Replaced all uses with scm_from_locale_string or
4042 similar, as appropriate.
4043 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
4044 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
4045 scm_substring_shared, scm_substring_copy): New.
4046
4047 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
4048 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
4049 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
4050 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
4051 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
4052 Deprecated.
4053 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
4054 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
4055 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
4056 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
4057 Updated all uses.
4058 (scm_gensym): Generate only the number suffix in the buffer, just
4059 string-append the prefix.
4060
4061 * error.c (scm_memory_error): Do not try to throw, just abort.
4062 Throwing will not work anyway.
4063
4064 * gh.h, gh-data.c (gh_set_substr): Made src const.
4065
4066 * ports.c (scm_i_mode_bits_n): New, for counted strings.
4067 (scm_mode_bits): Use it.
4068 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
4069 a vector normally and fill that instead of consing a list with a
4070 blocked GC.
4071
4072 * read.c (scm_i_casei_streq): New, for counted strings.
4073
4074 * threads.c (gc_section_count): Removed, thread-sleeping can not
4075 be nested.
4076 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
4077 admin mutex so that we can be put to sleep by other threads while
4078 blocking on that mutex. Lock all the heap mutex of all threads,
4079 including ourselves.
4080 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
4081 call scm_i_enter_guile.
4082 (scm_thread_mark_stacks): Expect all threads to be suspended.
4083
4084 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
4085 scm_gc_mallocated, for now.
4086 (scm_init_storage): Initialize it.
4087 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
4088
4089 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
4090 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
4091 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
4092 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
4093
4094 * strop.c (scm_string_copy): Use scm_c_substring to get a
4095 copy-on-write string.
4096
4097 2004-08-18 Kevin Ryde <user42@zip.com.au>
4098
4099 * arbiters.c (FETCH_STORE): New macro.
4100 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
4101 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
4102 scm_try_arbiter and scm_release_arbiter.
4103 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
4104 for speed on i386, otherwise using mutex.
4105
4106 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
4107 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
4108 exact and inexact is #f.)
4109
4110 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
4111 to get thread safety of scm_ttyname.
4112
4113 * ports.c (ttyname): Remove prototype, unused.
4114
4115 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
4116 Reported by Michael Tuexen.
4117
4118 2004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4119
4120 * load.c (scm_init_load_path): Do not pass NULL to
4121 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
4122 not set. Thanks to Bill Schottstaedt.
4123
4124 2004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4125
4126 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
4127 locale strings instead of accessing their internals.
4128 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
4129 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
4130 SCM_STRING_CHARS and SCM_STRING_LENGTH.
4131
4132 * simpos.c (scm_system): Convert SCM strings to locale strings
4133 instead of accessing their internals.
4134
4135 * script.c (scm_compile_shell_switches): Convert version to locale
4136 string before printing it.
4137
4138 * rdelim.c (scm_read_delimited_x): Avoid
4139 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
4140 of scm_from_long for the returned number of read characters.
4141
4142 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
4143 scm_i_mode_bits to avoid accessing internals of SCM string from C.
4144
4145 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
4146 Use them instead of SCM_SYSCALL when one or two strings need to be
4147 converted into locale strings.
4148 (my_rename): New, gathers platform dependent code for renaming.
4149 (scm_rename): Use it.
4150 (scm_readlink, scm_copy_file): Convert SCM strings to locale
4151 strings instead of accessing their internals.
4152 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
4153 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
4154 SCM_STRING_LENGTH.
4155
4156 * extensions.c (load_extension): Convert lib and init to locale
4157 strings instead of accessing the internals directly.
4158 (scm_c_load_extension): Use scm_from_locale_string instead of
4159 scm_makfrom0str.
4160
4161 * fports.h, fports.c (scm_i_fdes_to_port): New, like
4162 scm_fdes_to_port, but take mode bits directly instead of as a C
4163 string.
4164 (scm_i_fdes_to_port): Implement using above.
4165 (scm_open_file): Use scm_i_fdes_to_port together with
4166 scm_i_mode_bits to avoid accessing internals of SCM string from C.
4167 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
4168 with scm_i_mode_bits to avoid accessing internals of SCM string
4169 from C.
4170
4171 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
4172 SCM string as argument.
4173
4174 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
4175 bits directly instead of C string.
4176 (scm_void_port): Implement using above.
4177 (scm_sys_make_void_port): Use scm_i_void_port together with
4178 scm_i_mode_bits to avoid accessing internals of SCM string.
4179
4180 * strings.h, strings.c (scm_i_get_substring_spec): New.
4181
4182 * socket.c, rw.c, deprecated.h, validate.h
4183 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
4184 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
4185 scm_to_locale_string, etc.
4186 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
4187 above, plus scm_i_get_substring_spec.
4188
4189 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
4190 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
4191 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
4192 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
4193 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
4194 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
4195 with more explicit scm_remember_upto_here_1, etc, or introduced
4196 them in the first place.
4197
4198 * posix.c (WITH_STRING): New helper macro. Use it where one
4199 locale string is needed for a short piece of code.
4200 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
4201 when one locale string is needed.
4202 (scm_mkstemp): Convert tmpl to a locale string.
4203 (scm_putenv): Rewritten to use only C strings.
4204 (scm_setlocale, scm_crpt): Convert argument strings to locale
4205 strings.
4206
4207 2004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4208
4209 * load.c (scm_primitive_load_path): Do not check for absolute
4210 filenames when scm_sys_search_load_path returns false, which will
4211 return absolute filenames unchanged.
4212
4213 2004-08-11 Marius Vollmer <mvo@zagadka.de>
4214
4215 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
4216 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
4217 of an alist. Thanks to Matthias Koeppe!
4218
4219 2004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4220
4221 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
4222 Moved from string.h to deprecated.h.
4223
4224 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
4225
4226 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
4227 SCM_I_MAKE_STRING_TAG, changed all uses.
4228 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
4229 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
4230 respectively. For a short time, the old names are still there as
4231 aliases. Not all uses have been changed yet, but the ones in
4232 strings.c have.
4233 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
4234 SCM_T_BITS_MAX.
4235 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
4236 scm_take_locale_string, scm_take_locale_stringn,
4237 scm_to_locale_string, scm_to_locale_stringn,
4238 scm_to_locale_stringbuf): New.
4239 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
4240 deprecated.[hc]. Implemented in terms of the new functions above.
4241 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
4242 scm_makfrom0str): Reimplemented in terms of the new functions from
4243 above. They will be discouraged shortly.
4244 (scm_substring): Do not use scm_mem2string.
4245 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
4246 to replace similar code from posix.c, simpos.c, and dynl.c.
4247 (scm_string_append): Use memcpy instead of explicit loop. Do not
4248 use register keyword. Use plain 'char' instead of 'unsigned
4249 char'.
4250
4251 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
4252 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
4253
4254 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
4255 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4256 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
4257 not as a pointer. Use scm_remember_upto_here_1 to protect it.
4258
4259 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
4260 string. This avoids a conversion round-trip.
4261
4262 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
4263 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4264 SCM_I_STRING_LENGTH, respectively.
4265 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
4266
4267 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
4268 of a string, call scm_display on the string itself.
4269
4270 * dynwind.c, dynwind.h (scm_frame_free): New.
4271
4272 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
4273 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
4274 Replaced uses of SCM_STRING_CHARS with proper uses of
4275 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
4276 Replaced scm_mem2string with scm_from_locale_string.
4277
4278 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
4279 Removed, replaced all uses with scm_i_allocate_string_pointers.
4280
4281 * load.h, load.c (scm_internal_parse_path): Removed.
4282 (scm_parse_path): Use scm_string_split to do the work.
4283 (scm_init_load_path): Use scm_parse_path instead of
4284 scm_internal_parse_path.
4285 (scm_search_path): Rewritten string handling part of the code in
4286 terms of scm_to_locale_stringbuf and so that it is thread safe.
4287
4288 * error.c (scm_error_scm): Throw directly instead of calling
4289 scm_error, this avoids the back and forth conversion of SUBR and
4290 MESSAGE and also plugs a memory leak.
4291 (scm_error): Call scm_error_scm.
4292
4293 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
4294 (display_header): Print FNAME when it is true, not
4295 merely when it is a string.
4296
4297 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
4298 unceremoniously. They were unused by Guile itself, and external
4299 use should stop immediately.
4300
4301
4302 2004-08-10 Marius Vollmer <mvo@zagadka.de>
4303
4304 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
4305 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
4306 deprecated versions installed in deprecated.h and deprecated.c.
4307 Changed all uses.
4308
4309 2004-08-06 Rob Browning <rlb@defaultvalue.org>
4310
4311 * net_db.c (scm_resolv_error): don't cause an exception while
4312 trying to throw an exception -- call scm_misc_error with correct
4313 arguments. The previous arguments needed a format escape that
4314 wasn't in any of the format strings.
4315
4316 2004-08-06 Kevin Ryde <user42@zip.com.au>
4317
4318 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
4319 so as not to depend on signedness of plain char. For byvect range
4320 check, throw out-of-range rather than wrong-type-arg.
4321
4322 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
4323 signed byte range checks by using scm_to_schar and scm_from_schar,
4324 don't want to depend on signedness of C char.
4325
4326 2004-08-05 Kevin Ryde <user42@zip.com.au>
4327
4328 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
4329 SCM_DEFER_INTS.
4330 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
4331 guaranteed if multiple threads compete to unlock.
4332 Update docstrings per doc/ref/api-scheduling.texi.
4333
4334 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
4335 stat on the filename, to be certain a file rename can't mean we get
4336 info on one filesystem object but open another. This fstat usage is
4337 similar to Emacs copy-file.
4338
4339 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
4340
4341 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
4342 SIGINT and SIGQUIT, since those values are ints.
4343
4344 2004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4345
4346 * num2integral.i.c, num2float.i.c: Removed.
4347 * Makefile.am (noinst_HEADERS): Updated.
4348
4349 * numbers.h. numbers.c (scm_make_ratio): Renamed to
4350 scm_i_make_ratio and made static, replaced uses with scm_divide.
4351 (scm_complex_p): New, export as "complex?" to Scheme.
4352 (scm_number_p): Export as "number?" to Scheme.
4353 (scm_is_complex, scm_is_number): New.
4354 (scm_c_make_rectangular, scm_c_make_polar): New.
4355 (scm_make_rectangular, scm_make_polar): Use above.
4356 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
4357 New.
4358 (scm_make_complex): Discouraged by moving to discouraged.h and
4359 discouraged.c. Replaced all uses with scm_c_make_rectangular.
4360
4361 * discouraged.h, discouraged.c, numbers.c, numbers.h
4362 (scm_is_rational): New.
4363 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
4364 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
4365 Removed prototypes.
4366 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
4367 Discouraged by moving to discouraged.h and discouraged.c.
4368 Replaced all uses with scm_from_double.
4369 (scm_num2float, scm_num2double): Discouraged by moving prototype
4370 to discouraged.h and rewriting in terms of scm_to_double.
4371 Replaced all uses with scm_to_double.
4372 (scm_to_double): Do not implement in terms of scm_num2dbl, use
4373 explicit code.
4374 (scm_from_double): Do not implement in terms of scm_make_real, use
4375 explicit code.
4376
4377 2004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4378
4379 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
4380
4381 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
4382 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
4383
4384 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
4385 Renamed to SCM_I_* in order to avoid collisions with the versions
4386 defined in deprecated.h.
4387
4388 * discouraged.h, discouraged.c: New files.
4389
4390 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
4391 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
4392 deprecated to being discouraged by moving to discouraged.h.
4393
4394 * numbers.h, numbers.c, discouraged.h, discouraged.c
4395 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
4396 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
4397 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
4398 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
4399 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
4400 scm_num2ulong_long): Discouraged by moving to discouraged.h and
4401 discouraged.c and reimplementing in terms of scm_from_* and
4402 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
4403 functions.
4404
4405 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
4406 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
4407 scm_i_size2big, scm_i_ptrdiff2big): Removed.
4408 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
4409 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
4410 explicit code.
4411
4412 2004-08-02 Kevin Ryde <user42@zip.com.au>
4413
4414 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
4415 and current usage and migration.
4416
4417 2004-07-31 Kevin Ryde <user42@zip.com.au>
4418
4419 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
4420 it's not thread safe.
4421 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
4422 advantage of this.
4423 * fports.c (scm_open_file): Use scm_strerror likewise.
4424 * filesys.c (scm_stat, scm_lstat): Ditto.
4425
4426 * filesys.c (scm_copy_file): Avoid fd leak when destination file
4427 cannot be opened.
4428
4429 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
4430 update, for thread safety.
4431 (gensym_counter): Move into scm_gensym which is its only user.
4432 (scm_init_symbols): No need to explicitly initialize gensym_counter.
4433
4434 2004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4435
4436 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
4437 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
4438 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
4439 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
4440 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
4441 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
4442 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
4443 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
4444 defined in terms of scm_to_signed_integer, etc, but in terms of
4445 scm_to_int8, etc.
4446
4447 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
4448
4449 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
4450 no longer used.
4451
4452 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
4453 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
4454
4455 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
4456 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
4457 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
4458 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
4459 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
4460 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
4461 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
4462
4463 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
4464 the functions below.
4465
4466 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
4467 conv-uinteger.i.c.
4468
4469 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
4470 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
4471 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
4472 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
4473 scm_from_uint64): Turned from macros into proper functions.
4474 (scm_to_signed_integer, scm_to_unsigned_integer,
4475 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
4476 conv-integer.i.c and conv-uinteger.i.c, as well.
4477
4478 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
4479 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
4480 the limits. Those are always defined.
4481
4482 2004-07-29 Kevin Ryde <user42@zip.com.au>
4483
4484 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
4485
4486 2004-07-28 Kevin Ryde <user42@zip.com.au>
4487
4488 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
4489 safety.
4490
4491 * unif.c (scm_array_set_x): For svect, use scm_num2short for
4492 consistency with other vector types and to get arg and func name into
4493 error message.
4494
4495 2004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4496
4497 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
4498 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
4499 scm_from_bool, respectively.
4500 (SCM_NINUMP): Added.
4501
4502 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
4503 deprecated.h. Replaced all uses with scm_is_eq.
4504
4505 2004-07-24 Kevin Ryde <user42@zip.com.au>
4506
4507 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
4508 * posix.c (scm_crypt): Use it to protect static data in crypt().
4509
4510 2004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4511
4512 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
4513 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
4514 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
4515 versions to deprecated.h and deprecated.c. Changed all uses to
4516 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
4517 scm_from_*, as appropriate.
4518
4519 * dynwind.c (scm_i_dowinds): Removed unused code that would call
4520 the unexisting scm_cross_dynwind_binding_scope for inums on the
4521 windlist.
4522
4523 2004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4524
4525 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
4526 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
4527 byte-wise address to a SCM integer. Changed all uses.
4528 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
4529 scm_to_ipv6 and added type and range checking, for converting from
4530 an IPv& byte-wise address to a SCM integer. Changed all uses.
4531 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
4532 is now done by scm_to_ipv6.
4533
4534 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
4535 not accept inexact integers.
4536
4537 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
4538 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
4539 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
4540 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
4541 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
4542 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
4543 fixnum/bignum distinction visible. Changed all uses to
4544 scm_to_size_t or similar.
4545
4546 2004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4547
4548 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
4549
4550 2004-07-10 Kevin Ryde <user42@zip.com.au>
4551
4552 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
4553 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
4554 such a size causes divide-by-zeros in scm_hasher.
4555
4556 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
4557 leak.
4558
4559 2004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4560
4561 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
4562 Rewritten using the same logic as scm_to_signed_integer and
4563 scm_to_unsigned_integer, respectively, which is better(tm). Also,
4564 use CHAR_BIT instead of hardcoding 8.
4565 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
4566 SCM_I_LLONG_MIN etc. instead.
4567
4568 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
4569 SCM_I_MAKINUM and changed all uses.
4570 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
4571
4572 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
4573 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
4574 them by assuming twos-complement.
4575
4576 2004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4577
4578 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
4579 configure now produces.
4580 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
4581 definitions, giving the limits of the integer types defined by
4582 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
4583 LLONG_MIN or LONG_LONG_MIN is hard to get at.
4584
4585 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
4586 SHORT_MIN.
4587 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
4588 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
4589 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
4590 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
4591 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
4592 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
4593 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
4594 scm_from_uintmax): New.
4595
4596 2004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4597
4598 * tags.h (scm_is_eq): New.
4599
4600 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
4601 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
4602 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
4603 scm_from_bool, and scm_is_bool, respectively.
4604
4605 * boolean.h (scm_is_bool): Fix bug in prototype.
4606 (scm_from_bool): The argument is "x" not "f", stupid.
4607
4608 * boolean.c (scm_is_bool): Fix typo.
4609
4610 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
4611 scm_is_unsigned_integer, scm_to_signed_integer,
4612 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
4613 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
4614 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
4615 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
4616 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
4617 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
4618 New.
4619
4620 2004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4621
4622 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
4623 scm_to_bool): New.
4624
4625 2004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4626
4627 * backtrace.c (display_expression, display_frame): Call
4628 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
4629 single memoized expression.
4630
4631 * debug.c (memoized_print): Don't try to unmemoize the memoized
4632 object, since we can't know whether it holds a single expression
4633 or a body.
4634
4635 (scm_mem_to_proc): Removed check for lambda expression, since it
4636 was moot anyway. Whoever uses these functions for debugging
4637 purposes should know what they do: Creating invalid memoized code
4638 will cause crashes, independent of whether this check is present
4639 or not.
4640
4641 (scm_proc_to_mem): Take the closure's code as it is and don't
4642 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
4643 memoized code should not be modified.
4644
4645 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
4646 scm_unmemoize from public use, but made scm_i_unmemoize_expr
4647 available as a guile internal function instead. However,
4648 scm_i_unmemoize_expr will only work on memoized objects that hold
4649 a single memoized expression. It won't work with bodies.
4650
4651 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
4652 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
4653 i. e. a list of expressions.
4654
4655 * eval.c (unmemoize_exprs): Drop internal body markers from the
4656 output during unmemoization.
4657
4658 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
4659 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
4660 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
4661 as guile internal functions instead. scm_i_unmemoize_expr will
4662 only work on a single memoized expression, while
4663 scm_i_unmemocopy_body will only work on bodies.
4664
4665 2004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4666
4667 * eval.c (unmemoize_exprs): Handle semi-memoized code.
4668
4669 (scm_cons_source, scm_primitive_eval): Prefer higher level
4670 predicate SCM_FALSEP over SCM_IMP.
4671
4672 2004-06-15 Rob Browning <rlb@defaultvalue.org>
4673
4674 * script.c (scm_shell_usage): minor phrasing change.
4675
4676 * gc_os_dep.c: update ifdefery for macosx.
4677 (scm_get_stack_base): separate result initialization from
4678 declaration to slience warnings with macosx and hp-ux using gcc
4679 3.3. Thanks to Andreas Vögele.
4680
4681 2004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
4682
4683 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
4684
4685 2004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4686
4687 * list.[ch] (scm_i_finite_list_copy): New internal function to
4688 copy lists that are known to be finite (though not necessarily
4689 proper).
4690
4691 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
4692 a closure's argument list like an expression of a body.
4693
4694 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
4695 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
4696 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
4697 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
4698 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
4699 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
4700 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
4701 unmemoize_builtin_macro): New static functions and symbols.
4702
4703 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
4704 now has a slightly different meaning: The memoized form that is
4705 receives as its argument is now interpreted as a sequence of
4706 expressions from a body.
4707
4708 (unmemocar, scm_unmemocar): Since the whole functionality of
4709 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4710 has its old content back and is deprecated, while unmemocar has
4711 been removed.
4712
4713 (SCM_BIT7): Removed.
4714
4715 (CEVAL): For unmemoizing a single expression, call
4716 unmemoize_expression instead of scm_unmemocopy, which now expects
4717 a sequence of body expressions. Eliminated unnecessary empty
4718 environment frame when executing let* forms. Eliminated
4719 unmemoization step from evaluator.
4720
4721 2004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4722
4723 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4724 macroexp and made static. Added new version of scm_macroexp that
4725 emits a deprecation warning and then calls macroexp.
4726 (scm_m_undefine): Issue deprecation warning.
4727
4728 2004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4729
4730 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4731 Modified to make set! work on symbols that represent syntactic
4732 keywords.
4733
4734 2004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4735
4736 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4737 compound expression as lvalue errors.
4738
4739 2004-05-24 Marius Vollmer <mvo@zagadka.de>
4740
4741 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4742 WINDER_DATA to a SCM.
4743
4744 2004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4745
4746 * goops.c (compute_getters_n_setters, create_standard_classes,
4747 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4748 lambda expression rather than creating them with scm_closure.
4749
4750 2004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4751
4752 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4753 misplaced syntactic keywords. This will not work unless guile's
4754 defmacro feature is deprecated.
4755
4756 (scm_m_case): Fixed a bug that caused the list of labels to grow
4757 with every case form.
4758
4759 2004-05-19 Kevin Ryde <user42@zip.com.au>
4760
4761 * numbers.c (scm_round_number): For inum and big, just return x. For
4762 real, use scm_round for 2^54-1 etc problems covered there.
4763
4764 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4765 doesn't provide trunc. This was for when `truncate' was done as a
4766 scm_tc7_dsubr, no longer required.
4767
4768 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4769 to stack marking call, two parameters and no cast on t->base.
4770
4771 2004-05-18 Marius Vollmer <mvo@zagadka.de>
4772
4773 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4774 processed hashtables back into the weak_hashtables list. Thanks
4775 to Bill Schottstaedt!
4776
4777 2004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4778
4779 * eval.c (unmemoize_quote): New static function.
4780
4781 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4782 representation of 'quote' and '@slot-ref' to an improper list.
4783 This reduces execution time, the number of cells used to hold the
4784 memoized code, and thus also reduces garbage collection time.
4785
4786 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4787
4788 (SCM_CEVAL): Changed macro handling to also work with macros that
4789 return improper lists. Added an assertion, that the code returned
4790 by a macro transformer will not lead to cycles in the memoized
4791 code.
4792
4793 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4794
4795 No functional change, just rearrangements of functions within the
4796 file.
4797
4798 * eval.c (scm_ilookup, scm_unbound_variable_key,
4799 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4800 the definitions used for execution, since that's where they will
4801 belong to later.
4802
4803 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4804
4805 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4806 throughout guile, has not been part of an official release yet,
4807 and the concept of sloppy predicates has never been a good idea.
4808
4809 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4810 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4811 Simplified.
4812
4813 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4814
4815 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4816 to make explicit what happens.
4817
4818 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4819
4820 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4821 explicit what happens.
4822
4823 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4824 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4825
4826 2004-05-11 Marius Vollmer <mvo@zagadka.de>
4827
4828 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4829 is indeed a procedure when it isn't a number.
4830
4831 2004-05-10 Marius Vollmer <mvo@zagadka.de>
4832
4833 Convert floating point numbers into strings with an arbitrary
4834 radix. Thanks to Richard Todd!
4835
4836 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4837 fit.
4838 (fx): Removed.
4839 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4840 number_chars): New, to support variable radices.
4841 (idbl2str): Use above instead of the old base-10 only tables.
4842 (iflo2str): Pass on new RADIX argument to idbl2str.
4843 (scm_number_to_string): Pass radix to iflo2str.
4844 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4845 iflo2str.
4846 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4847 possible radices.
4848
4849 2004-05-10 Kevin Ryde <user42@zip.com.au>
4850
4851 * numbers.c (scm_logbit_p): Correction to test above the end of an
4852 inum. Reported by Jan Konecny.
4853
4854 2004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4855
4856 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4857 scm_t_bits. Updated all users.
4858 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4859 duplicating the code.
4860 (SCM_CELL_OBJECT_LOC): New.
4861 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4862 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4863
4864 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4865 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4866 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4867 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4868 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4869 SCM_SMOB_OBJECT_3_LOC): New.
4870 * smob.c (scm_i_set_smob_flags): New function.
4871
4872 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4873 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4874 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4875 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4876 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4877 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4878
4879 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4880 taking the address of SCM_CELL_WORD_1, the latter being no longer
4881 an lvalue.
4882
4883 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4884 of casting SCM_CELL_WORD_LOC.
4885
4886 2004-05-02 Kevin Ryde <user42@zip.com.au>
4887
4888 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
4889 --disable-deprecated. Reported by Andreas Vögele.
4890
4891 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
4892 particular on HP-UX). Reported by Andreas Vögele.
4893
4894 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4895 code has support for. Fixes building with AIX cc, which is ansi but
4896 doesn't define __STDC__. Reported by Keith Crane.
4897 (var_start): Remove macro, this variation no longer required.
4898 (scm_list_n): Use va_start directly.
4899
4900 2004-05-01 Kevin Ryde <user42@zip.com.au>
4901
4902 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
4903 is now gone. Reported by Andreas Vögele.
4904
4905 2004-04-28 Kevin Ryde <user42@zip.com.au>
4906
4907 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4908 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4909 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
4910 subscript. Reported by Andreas Vögele.
4911 Also cast through unsigned char to avoid passing negatives to those
4912 macros if input contains 8-bit values.
4913
4914 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4915 corrections to range check for signed numbers. Remove
4916 scm_remember_upto_here_1(num) from these checks, since num is used
4917 subsequently anyway.
4918
4919 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4920 avoid warning from gcc 3.4. Reported by Hyperdivision.
4921
4922 * numbers.c (scm_bit_extract): Use min instead of MIN.
4923 (MIN): Remove, this conflicts with similar macro defined by limits.h
4924 on HP-UX. Reported by Andreas Vögele.
4925
4926 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
4927 particular on HP-UX). Reported by Andreas Vögele.
4928
4929 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
4930 Reported by Andreas Vögele.
4931
4932 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4933 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
4934 by Andreas Vögele.
4935
4936 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4937
4938 * eval.c (s_macro_keyword): New static identifier.
4939
4940 (scm_m_define): Change order to first create binding and
4941 evaluating the expression afterwards.
4942
4943 (scm_m_set_x): Memoize complete set! expression. Only leave
4944 symbols if no binding exists at memoization time. Throw error if
4945 assigning to a syntactic keyword.
4946
4947 (lazy_memoize_variable): New function.
4948
4949 (CEVAL): When execution set!, perform lazy memoization if
4950 unmemoized symbol is detected.
4951
4952 * modules.c (module_variable): Return variables with unbound
4953 value.
4954
4955 * tags.h: Fix comment.
4956
4957 2004-04-25 Kevin Ryde <user42@zip.com.au>
4958
4959 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4960 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4961 in 8-bit locales, and ensures consistency with char-upper-case? and
4962 char-lower-case? which already use ctype.h.
4963 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4964 Remove.
4965 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4966
4967 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4968 call. Reported by Hyperdivision.
4969
4970 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4971 Reported by Hyperdivision.
4972
4973 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4974 Hyperdivision.
4975
4976 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4977
4978 Hide the implementation of ilocs and isyms in eval.c.
4979
4980 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4981 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4982 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4983 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4984 eval.h to eval.c.
4985
4986 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4987 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4988 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4989 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4990 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4991 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4992 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4993 renamed to ISYMNUM.
4994
4995 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4996 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4997 Extracted printing of ilocs and isyms to guile internal functions
4998 scm_i_print_iloc, scm_i_print_isym of eval.c.
4999
5000 2004-04-22 Kevin Ryde <user42@zip.com.au>
5001
5002 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
5003
5004 * numbers.c (scm_round): Test for x already an integer, to avoid bad
5005 rounding in x+0.5 when x is a big value already an integer. In
5006 certain hardware rounding cases x+0.5 can give an adjacent integer,
5007 leading to that as the result, when we really just wanted x itself.
5008
5009 2004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5010
5011 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
5012
5013 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
5014 added const qualifiers, cast intentionally unused expressions to
5015 void for emphasis, improved comment.
5016
5017 2004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5018
5019 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
5020 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
5021 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
5022 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
5023 Defined the tc8-tag for flags to be 0x04, which will mean that
5024 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
5025 to the reduced number of bits and the simpler bit pattern for
5026 SCM_BOOL_F, certain machines may be able to use more efficient
5027 processor instructions to deal with SCM_BOOL_F.
5028
5029 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
5030 never been defined in a released version, thus no need to
5031 deprecate them.
5032
5033 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
5034 instead of tc9 tags.
5035
5036 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
5037 of tc9 tags.
5038
5039 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
5040 could have used this definition.
5041
5042 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
5043 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
5044 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
5045 as isyms, as special isyms don't exist any more.
5046
5047 2004-04-18 Kevin Ryde <user42@zip.com.au>
5048
5049 * filesys.c (scm_readdir): Use readdir_r when available, for thread
5050 safety.
5051
5052 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
5053 explicit swapping code.
5054
5055 2004-04-15 Kevin Ryde <user42@zip.com.au>
5056
5057 * cpp_sig_symbols.in: Add SIGSYS.
5058
5059 * list.c (scm_append_x): Use iterative style, to avoid non-tail
5060 recursion.
5061
5062 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
5063 frac/big and frac/frac, use scm_less_p for exact comparison.
5064
5065 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
5066 with big/inum.
5067
5068 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
5069
5070 2004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
5071
5072 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
5073
5074 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
5075 scm_c_{up,down}case.
5076 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
5077 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
5078
5079 2004-04-06 Kevin Ryde <user42@zip.com.au>
5080
5081 * numbers.c (scm_ash): Remove stray "}" in docstring.
5082
5083 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
5084 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
5085 calling mpz_cmp_ui in most cases.
5086
5087 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
5088 for big == abs(most-negative-fixnum) special case.
5089 (abs_most_negative_fixnum): Remove, no longer used.
5090
5091 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
5092 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
5093 calling (sigaction NSIG).
5094
5095 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
5096 and fork error cases to do this.
5097
5098 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5099
5100 * eval.c (CEVAL): Don't distinguish between short and long
5101 instructions when dispatching - just always dispatch on the
5102 instruction code, which is common for short and long instructions.
5103 Further, removed unnecessary goto statements and added comment.
5104
5105 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5106
5107 * eval.c (scm_unmemocopy): Don't distinguish between short and
5108 long instructions when dispatching - just always dispatch on the
5109 instruction code, which is common for short and long instructions.
5110 Further, removed unnecessary goto statements, fixed indentation
5111 and replaced SCM_IMP predicates by SCM_NULLP.
5112
5113 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5114
5115 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
5116 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
5117 'checkmacro'.
5118
5119 2004-03-31 Kevin Ryde <user42@zip.com.au>
5120
5121 * simpos.c: Include <signal.h> for SIG_IGN and friends.
5122
5123 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5124
5125 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
5126 SCM_DEBUGGINGP:
5127
5128 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
5129 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
5130 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
5131 single interface that also matches the naming conventions.
5132 Probably scm_debug_mode_p should be part of the private interface
5133 anyway.
5134
5135 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
5136 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
5137 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
5138 to scm_debug_mode_p.
5139
5140
5141 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
5142
5143 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
5144 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
5145 from debug.h to eval.h.
5146
5147 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
5148 more, just leave it with setting scm_debug_mode_p, which is
5149 equivalent for practical purposes.
5150
5151 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
5152 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
5153
5154 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
5155
5156 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
5157 static and renamed it to ceval throughout. Provide a new exported
5158 but deprecated function scm_ceval as a wrapper for backwards
5159 compatibility. The same is done for the deval/scm_deval pair of
5160 functions.
5161
5162 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
5163 throughout. Defined CEVAL to ceval or deval, based on compilation
5164 phase.
5165
5166 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
5167 to ceval and deval instead of calling *scm_ceval_ptr.
5168
5169 * eval.c (dispatching_eval): New deprecated static function.
5170
5171 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
5172 to emulate its old behaviour as closely as possible.
5173
5174
5175 Change the evaluator such that only expressions for which pair? is
5176 true are passed to CEVAL, and such that all other expressions are
5177 evaluated outside of CEVAL:
5178
5179 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
5180 expression that is assumed to be memoized already. All but
5181 expressions of the form '(<form> <form> ...)' are evaluated inline
5182 without calling an evaluator.
5183
5184 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
5185 expressions of the form '(<form> <form> ...)' inline without
5186 calling an evaluator.
5187
5188 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
5189 the special case of unmemoized symbols passed on the top level.
5190
5191 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
5192 is known that the expression passed to CEVAL is of the form
5193 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
5194 now it is known that the input expression of CEVAL is a pair.
5195
5196 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5197
5198 * eval.c (is_self_quoting_p): New static function.
5199
5200 (scm_m_quote): Use is_self_quoting_p.
5201
5202 (copy_tree): Corrected typo in comment.
5203
5204 2004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
5205
5206 * eval.c (s_scm_copy_tree): idem.
5207
5208 * list.c (s_scm_filter): remove "pointer" from doc string.
5209
5210 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
5211
5212 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
5213
5214 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
5215 (display_frame): idem.
5216 (display_backtrace_file_and_line): idem.
5217
5218 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
5219 arguments.
5220
5221 2004-03-26 Kevin Ryde <user42@zip.com.au>
5222
5223 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
5224
5225 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
5226 big==0 since that never occurs.
5227
5228 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
5229 scm_modular_expt, matching scheme level name `modulo-expt'.
5230
5231 * numbers.c (scm_modular_expt): Return a negative remainder for a
5232 negative divisor, the same as `modulo' does.
5233
5234 2004-03-26 Eric Hanchrow <offby1@blarg.net>
5235
5236 * numbers.c, numbers.h (scm_modular_expt): New function.
5237
5238 2004-03-25 Kevin Ryde <user42@zip.com.au>
5239
5240 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
5241 return inexact as required by r5rs.
5242
5243 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5244
5245 * eval.c: Separated some definitions relevant for execution from
5246 the memoization part of the file.
5247
5248 (copy_tree): New static function
5249
5250 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
5251 structures are detected now and will lead to an exception instead
5252 of forcing guile to run in an endless loop, using up all the
5253 system's memory. Second, arrays in the cdr of an improper list
5254 are now copied. See the new test cases in eval.test.
5255
5256 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5257
5258 * posix.c (scm_gethostname): Make sure len is initialised before
5259 it is used. Restructured to (hopefully) represent possible
5260 configurations more clearly in the code. Added unwind handler.
5261
5262 2004-03-23 Kevin Ryde <user42@zip.com.au>
5263
5264 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
5265 MAXHOSTNAMELEN when available.
5266
5267 2004-03-21 Marius Vollmer <mvo@zagadka.de>
5268
5269 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
5270 terminator. Rewritten the logic as a state machine, I must have
5271 been doing too much VHDL lately...
5272
5273 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
5274 themselves. Thanks to Han-Wen Nienhuys!
5275
5276 * list.c: Changed docstrings so that they no longer talk about
5277 returning 'pointers' to something.
5278
5279 2004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5280
5281 * gc.c: remove set_debug_cell_accesses! when
5282 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
5283 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
5284 debugging conditionally.
5285
5286 2004-03-21 Kevin Ryde <user42@zip.com.au>
5287
5288 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
5289
5290 2004-03-20 Kevin Ryde <user42@zip.com.au>
5291
5292 * posix.c (scm_gethostname): Preserve errno across free() call.
5293
5294 2004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
5295
5296 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
5297 free cells.
5298
5299 2004-03-14 Kevin Ryde <user42@zip.com.au>
5300
5301 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
5302 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
5303
5304 2004-03-07 Kevin Ryde <user42@zip.com.au>
5305
5306 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
5307 than "GMT" always.
5308 (filltime): Make zname parameter "const".
5309
5310 2004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
5311
5312 * threads.c, threads.h (scm_c_scm2thread): New function.
5313
5314 2004-02-29 Kevin Ryde <user42@zip.com.au>
5315
5316 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
5317 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
5318 particular don't assume "defined (__alpha__) && ! defined (linux)"
5319 means OSF. Remove "SCO" code, which was not really SCO specific and
5320 which John W. Eaton advises should be long past being needed.
5321
5322 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
5323 error throw.
5324
5325 2004-02-24 Kevin Ryde <user42@zip.com.au>
5326
5327 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
5328
5329 2004-02-22 Kevin Ryde <user42@zip.com.au>
5330
5331 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
5332 complex, same as for two args. (Handle only inum, big, real, frac).
5333
5334 2004-02-21 Kevin Ryde <user42@zip.com.au>
5335
5336 * posix.c (scm_crypt): Use new HAVE_CRYPT.
5337 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
5338 Reported by Andreas Voegele.
5339
5340 2004-02-20 Neil Jerram <neil@ossau.uklinux.net>
5341
5342 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
5343 validation.
5344
5345 * read.c (scm_lreadparen): Removed.
5346 (scm_lreadparen1): Renamed scm_i_lreadparen.
5347
5348 2004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5349
5350 * list.c (scm_list_n): validate non-immediate arguments;
5351 this will catch forgotten a SCM_UNDEFINED.
5352
5353 2004-02-18 Marius Vollmer <mvo@zagadka.de>
5354
5355 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
5356 Thanks to Bill Schottstaedt!
5357
5358 * socket.h (scm_gethost): Removed prototype it is already in
5359 "net_db.h". Thanks to Bill Schottstaedt!
5360
5361 2004-02-18 Kevin Ryde <user42@zip.com.au>
5362
5363 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
5364 order parameter to mpz_import, in fact with just one word there's no
5365 order to worry about at all.
5366
5367 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
5368 and frac==complex, make an exact comparison rather than converting
5369 with fraction2double.
5370
5371 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
5372 shared library, since environ is not directly available there.
5373
5374 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
5375 standard.
5376
5377 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
5378 errno EINVAL in case localtime and gmtime don't set it.
5379 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
5380 SCM_SYSERROR, since mktime and strptime generally don't set errno.
5381
5382 2004-02-16 Kevin Ryde <kevin@swox.se>
5383
5384 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
5385 which were permitted in the past for these.
5386
5387 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
5388 previous change to numbers.c.
5389
5390 * script.c (scm_shell_usage): Print bug-guile email address, as per
5391 GNU standard. Reported by Han-Wen Nienhuys.
5392
5393 2004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5394
5395 * unif.c (scm_make_uve): Removed local variable and simplified
5396 code in order to avoid compiler used uninitialized warnings.
5397
5398 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
5399 scm_hash_map.
5400 (scm_hash_fold): Use scm_call_3 directly in the call to
5401 scm_internal_hash_fold instead of going via fold_proc (which is
5402 now removed).
5403 (scm_hash_for_each): Use a trampoline +
5404 scm_internal_hash_for_each_handle.
5405 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
5406 functions.
5407
5408 2004-02-12 Kevin Ryde <user42@zip.com.au>
5409
5410 * ports.c (scm_port_line): In docstring, note first line is 0.
5411 (scm_set_port_line_x): In docstring, note first line is 0.
5412 (scm_port_column): In docstring, there's no default to current input
5413 port, and remove shared port-line @defun.
5414 (scm_set_port_column_x): In docstring, there's no default to current
5415 input port, note first column is 0, remove shared set-port-line!
5416 @defun.
5417
5418 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
5419 convert args the same way that array-set! does.
5420
5421 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
5422 for dvect.
5423 (scm_array_p): Add missing "break"s in switch, fix llvect test look
5424 for "l" not "s", fix dvect to be false for singp(prot) since such a
5425 value is for fvect.
5426 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
5427 (exactly_one_third): New variable.
5428 (scm_init_unif): Initialize it.
5429
5430 2004-02-10 Neil Jerram <neil@ossau.uklinux.net>
5431
5432 * read.c (scm_read_opts): Change `escaped-parens' to
5433 `elisp-strings'.
5434
5435 2004-02-08 Neil Jerram <neil@ossau.uklinux.net>
5436
5437 * read.c (scm_read_opts): New opts `elisp-vectors' and
5438 `escaped-parens'.
5439 (s_vector): New.
5440 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
5441 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
5442 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
5443 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
5444 `escaped-parens' option set.
5445 (scm_read_token): If elisp vector syntax active, disallow [ and ]
5446 in tokens.
5447 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
5448 (scm_lreadparen1): New.
5449
5450 * read.h: Remove conditionally compiled last arg to
5451 scm_lreadparen.
5452 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
5453
5454 2004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
5455
5456 * eval.c (m_expand_body): remove stray variable new_body.
5457
5458 2004-01-22 Marius Vollmer <mvo@zagadka.de>
5459
5460 * eval.c (m_expand_body): Rewrite the expression in place (by
5461 overwriting FORMS) also when a letrec is constructed, not only
5462 when no definitions are found. Do not return rewritten expression
5463 to emphasize the in-place rewriting. Changed all users.
5464
5465 2004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
5466
5467 * gc.c: add protected_object_count, a number that is dumped from
5468 gc_stats()
5469
5470 2004-01-11 Marius Vollmer <mvo@zagadka.de>
5471
5472 * dynwind.h, dynwind.c (scm_frame_unwind,
5473 scm_frame_unwind_handler): Renamed and changed all uses.
5474 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
5475
5476 2004-01-11 Kevin Ryde <user42@zip.com.au>
5477
5478 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
5479 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
5480 changes made to scheme-compound.texi.
5481
5482 2004-01-10 Marius Vollmer <mvo@zagadka.de>
5483
5484 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
5485 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
5486
5487 * guile-snarf.in: Use mkdir to create a unique temporary directory
5488 that we can safely use. Thanks to Stefan Nordhausen!
5489
5490 2004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5491
5492 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
5493 argument since it is always zero now. Changed all callers.
5494 Removed code for handling fluids.
5495
5496 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
5497 the wind chain explicitely. Use scm_c_with_fluid for the common
5498 case of only one fluid.
5499 (scm_with_fluid): New.
5500 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
5501
5502 * fluids.h, fluids.c (scm_frame_fluid): New.
5503 (scm_with_fluid): New.
5504 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
5505
5506 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
5507 do the unwinding directly. It is simple enough.
5508
5509 * dynwind.h, dynwind.c: Did the following renamings:
5510 scm_begin_frame -> scm_frame_begin,
5511 scm_end_frame -> scm_frame_end,
5512 scm_on_unwind -> scm_frame_unwind,
5513 scm_on_rewind -> scm_frame_rewind,
5514 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
5515 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
5516 Changed all uses.
5517
5518 * aync.h, async.c: Did the follwing renamings:
5519 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
5520 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
5521 Changed all uses.
5522
5523 * ports.h, ports.c: Did the follwing renamings:
5524 scm_with_current_input_port -> scm_frame_current_input_port,
5525 scm_with_current_output_port -> scm_frame_current_output_port,
5526 scm_with_current_error_port -> scm_frame_current_error_port.
5527 Changed all uses.
5528
5529 2004-01-07 Kevin Ryde <user42@zip.com.au>
5530
5531 * numbers.c (s_bignum): Remove, not used since gmp bignums.
5532 Reported by Richard Todd.
5533
5534 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
5535 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
5536
5537 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
5538 traversing the args list, fixes segv if an improper list is given.
5539 Reported by Rouben Rostamian.
5540
5541 2004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5542
5543 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
5544 swap_data on stack, use a 'malloc obj'.
5545
5546 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
5547 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
5548 scm_i_... since they are internal. Changed all uses.
5549
5550 * dynwind.c (frame_print): Removed, use the default printer.
5551 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
5552 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
5553 to protect SCM values.
5554
5555 * dynwind.h (SCM_F_WIND_EXPLICITELY,
5556 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
5557 Changed all uses.
5558 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
5559
5560 2004-01-05 Marius Vollmer <mvo@zagadka.de>
5561
5562 * ports.h, ports.c (scm_with_current_input_port,
5563 scm_with_current_output_port, scm_with_current_error_port): New.
5564
5565 * async.h, async.c (scm_with_blocked_asyncs,
5566 scm_with_unblocked_asyncs): New.
5567
5568 2004-01-03 Marius Vollmer <mvo@zagadka.de>
5569
5570 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
5571 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
5572 New.
5573 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
5574 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
5575 function when the outermost wind point has been reached. The
5576 latter is used to copy a continuation stack at the right time.
5577 scm_dowinds remains available.
5578 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
5579 tc16_guard, guards_print): Removed.
5580 (scm_internal_dynamic_wind): Reimplemented using frames.
5581
5582 * continuations.c (copy_stack): New, do only the stack copying
5583 part of copy_stack_and_call.
5584 (copy_stack_and_call): Copy the stack after unwinding and before
5585 rewinding.
5586 (scm_dynthrow): Do not call scm_dowinds, this is now done by
5587 copy_stack_and_call.
5588
5589 2004-01-04 Kevin Ryde <user42@zip.com.au>
5590
5591 * numbers.c (scm_less_p): Don't convert frac to float for compares,
5592 can give bad results due to rounding.
5593
5594 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
5595 setzone/restorezone protection for DOS.
5596
5597 2003-12-26 Marius Vollmer <mvo@zagadka.de>
5598
5599 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
5600 and scm_t_uintmax to be defined in scmconfig.h
5601
5602 2003-12-03 Kevin Ryde <user42@zip.com.au>
5603
5604 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
5605
5606 * numbers.c (scm_make_ratio): Check for numerator equal to
5607 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
5608 giving integer -1.
5609
5610 * numbers.c (scm_real_part): Return fraction unchanged rather than
5611 converting to flonum.
5612
5613 2003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5614
5615 * modules.c (module_variable): Fixed (and thus simplified) the
5616 definition of SCM_BOUND_THING_P to reflect the fact that since
5617 after the 1.4 series of guile, obarrays only hold variable
5618 objects.
5619
5620 2003-11-30 Marius Vollmer <mvo@zagadka.de>
5621
5622 * numbers.c (scm_logand): It's "#b...", not "#\b...".
5623
5624 From Paul Jarc:
5625
5626 * read.c (scm_lreadr): Signal an error for invalid escape
5627 sequences in strings. Code cleanups too.
5628
5629 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
5630 writing control characters in strings.
5631
5632 2003-11-21 Marius Vollmer <mvo@zagadka.de>
5633
5634 * ports.c (scm_drain_input): Bug fix: only access the port after
5635 checking that it indeed is one.
5636
5637 2003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5638
5639 * eval.c (s_bad_define): New static identifier.
5640
5641 (m_body): Fixed comment.
5642
5643 (scm_m_define): Don't generate memoized code for definitions that
5644 are not on the top level. As a consequence, no memoized code at
5645 all is generated for definitions any more: Top level definitions
5646 are executed immediately during memoization and internal
5647 definitions are handled separately in m_expand_body.
5648
5649 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
5650 definitions. Consequently, there is no unmemoizing code any more
5651 that might modify the environment. Thus, the old scm_unmemocopy
5652 is removed and the old unmemocopy is renamed to scm_unmemocopy.
5653
5654 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
5655 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
5656 over SCM_NIMP in places, where the argument is known to be part of
5657 a proper list.
5658
5659 2003-11-21 Kevin Ryde <user42@zip.com.au>
5660
5661 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
5662 for bignums.
5663
5664 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
5665 to share some shifting.
5666
5667 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
5668 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
5669 since gc does this.
5670
5671 2003-11-19 Marius Vollmer <mvo@zagadka.de>
5672
5673 * numbers.c (scm_make_ratio): Rewritten to have a simpler
5674 structure. Previously, not all cases with a negative denominator
5675 were covered.
5676
5677 * numbers.c (mem2decimal_from_point): use scm_divide instead of
5678 scm_divide2real when forming the fractional part. This allows
5679 "#e1.2" to yield 6/5.
5680
5681 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
5682 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
5683 fractions were equal to each other regardless of value. Ooops.
5684
5685 * numbers.c (scm_rationalize): Return an inexact result when given
5686 inexact arguments.
5687
5688 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
5689 non-numbers.
5690
5691 2003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5692
5693 Support for exact fractions from Bill Schottstaedt! Thanks!
5694
5695 * print.c (scm_iprin1): Handle fractions.
5696
5697 * objects.h (scm_class_fraction): New.
5698 * objects.c (scm_class_fraction): New.
5699 (scm_class_of): Handle fractions.
5700
5701 * hash.c (scm_hasher): Handle fractions.
5702
5703 * numbers.c: New code for handling fraction all over the place.
5704 (scm_odd_p, scm_even_p): Handle inexact integers.
5705 (scm_rational_p): New function, same as scm_real_p.
5706 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
5707 New exact functions that replace the inexact 'dsubr'
5708 implementations.
5709 (scm_numerator, scm_denominator): New.
5710
5711 * numbers.h (SCM_NUMP): Recognize fractions.
5712 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5713 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5714 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5715 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5716 SCM_FRACTION_REDUCED): New.
5717 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5718 New prototypes.
5719 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5720 scm_rational_p): New prototypes.
5721 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5722 scm_i_print_fraction): New prototypes.
5723
5724 * goops.c (create_standard_classes): Create "<fraction>" class.
5725
5726 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5727
5728 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5729 case in the switch, but do nothing for now.
5730
5731 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5732 to doubles when calling 'dsubr' functions.
5733
5734 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5735
5736 2003-11-18 Rob Browning <rlb@defaultvalue.org>
5737
5738 * gen-scmconfig.c (main): remove public definition of
5739 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5740 direct typedef of long_long and ulong_long inside deprecated block
5741 when appropriate.
5742
5743 * deprecated.h: move long_long and ulong_long definitions to
5744 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5745 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5746
5747 2003-11-17 Marius Vollmer <mvo@zagadka.de>
5748
5749 * hash.c (scm_string_hash): New hashing algorithm that takes the
5750 complete string into account.
5751
5752 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5753 is a list. This allows (@ ...) to work with set!.
5754 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5755 SCM_ASSYNT.
5756
5757 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5758 the "-e" option instead of scm_str2symbol. This allows things
5759 like (@ ...) to be specified for the entry point.
5760
5761 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5762
5763 * eval.c (scm_m_letstar): Create memoized code in place to
5764 minimize consing.
5765
5766 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5767
5768 * eval.c (s_splicing): Commented and reformulated.
5769
5770 (lookup_global_symbol, lookup_symbol): New static functions.
5771
5772 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5773
5774 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5775 creating a temporary pair for scm_lookupcar.
5776
5777 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5778 created deprecated wrapper function scm_unmemocar.
5779
5780 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5781 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5782 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5783 undefineds, sym_three_question_marks): Moved around without
5784 modifications.
5785
5786 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5787
5788 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5789
5790 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5791 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5792 No further modifications.
5793
5794 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5795
5796 * eval.c (s_mixed_body_forms): New static identifier.
5797
5798 (canonicalize_define, scm_m_define): The check for a bad
5799 expression is performed in canonicalize_define now.
5800
5801 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5802 static helper functions for m_expand_body.
5803
5804 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5805 expand user defined macros. Fixed handling of the definition/
5806 expression boundary. Fixed handling of definitions grouped with
5807 'begin. Use canonicalize_define to expand definitions.
5808
5809 2003-11-13 Marius Vollmer <mvo@zagadka.de>
5810
5811 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5812 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5813
5814 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5815 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5816 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5817 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5818 New macros from Paul Jarc. Thanks!
5819
5820 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5821 return NULL when the machine type is unknown. Previously,
5822 gc_os_dep.c would refuse to compile.
5823
5824 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5825
5826 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5827 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5828 scm_m_body to m_body.
5829
5830 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5831
5832 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5833 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5834 scm_m_expand_body to m_expand_body and made it static. Added
5835 deprecated wrapper scm_m_expand_body.
5836
5837 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5838 of scm_m_expand_body.
5839
5840 2003-11-09 Kevin Ryde <user42@zip.com.au>
5841
5842 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5843 argument. Reported by Mike Gran.
5844
5845 2003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5846
5847 * eval.c (s_missing_body_expression): New static identifier.
5848
5849 (s_body): Removed.
5850
5851 (scm_m_expand_body): Fixed core dump when passing a body with
5852 defines, but without expressions (see additions to syntax.test).
5853 Use ASSERT_SYNTAX to signal syntax errors.
5854
5855 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5856
5857 * eval.c (canonicalize_define): New static helper function.
5858
5859 (memoize_define, canonicalize_define): Extract handling of
5860 function currying to canonicalize_define.
5861
5862 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5863
5864 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5865 Make sure that error checking in debug mode is not worse than in
5866 standard mode.
5867
5868 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5869
5870 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5871 handled in scm_m_body any more, but rather in scm_m_lambda.
5872
5873 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5874 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5875 calling functions of scm_m_body.
5876
5877 (scm_m_lambda): Avoid unnecessary consing when creating the
5878 memoized code.
5879
5880 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5881
5882 * eval.c (s_expression): Added comment.
5883
5884 (s_empty_combination, error_unbound_variable): New static
5885 identifiers.
5886
5887 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5888 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5889 signal syntax errors.
5890
5891 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5892 scheme objects.
5893
5894 2003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5895
5896 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5897 Grouped together with unmemocopy, without modifications.
5898
5899 (build_binding_list, unmemocopy): Renamed names of list arguments
5900 and variables to reflect the actual order of the list elements.
5901
5902 2003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5903
5904 * eval.c (s_defun): New static identifier.
5905
5906 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5907 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5908 when creating the memoized code.
5909
5910 2003-10-19 Kevin Ryde <user42@zip.com.au>
5911
5912 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5913
5914 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5915 in accordance with R5RS, which just mpz_get_d doesn't really give.
5916
5917 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5918
5919 * eval.c (s_bad_slot_number): New static identifier.
5920
5921 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5922 signal syntax errors. Avoid unnecessary consing when creating the
5923 memoized code.
5924
5925 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5926
5927 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5928 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5929 errors. Avoid unnecessary consing when creating the memoized
5930 code.
5931
5932 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5933 standard case. Make sure line and file information are copied to
5934 every created expression.
5935
5936 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5937
5938 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5939 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5940 when creating the memoized code.
5941
5942 (scm_m_atbind): Reversed the order, in which the init expressions
5943 are stored and executed. The order of execution is now equal to
5944 the order in which the initializers of the let-forms are executed.
5945 Use check_bindings and transform_bindings.
5946
5947 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5948 !SCM_NULLP. Added some comments.
5949
5950 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5951
5952 * eval.c: Sorted include files alphabetically.
5953
5954 (scm_m_begin): Added comment.
5955
5956 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5957 unnecessary consing when creating the memoized code.
5958
5959 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5960 syntax errors. Be more specific about the kind of error that was
5961 detected.
5962
5963 (scm_m_quote, unmemocopy): As an optimization, vector constants
5964 are now inserted unquoted into the memoized code. During
5965 unmemoization the quotes are added again to provide syntactically
5966 correct code.
5967
5968 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5969
5970 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5971 scm_m_expand_body, check_bindings): Extracted syntax checking of
5972 bindings to new static function check_bindings.
5973
5974 (scm_m_let, memoize_named_let): Extracted handling of named let to
5975 new static function memoize_named_let.
5976
5977 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5978 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5979 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5980 unnecessary consing when creating the memoized code.
5981
5982 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5983
5984 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5985 static identifiers.
5986
5987 (s_clauses, s_formals, s_duplicate_formals): Removed.
5988
5989 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5990 specific about the kind of error that was detected. Prepare for
5991 easier integration of changes for separated memoization.
5992
5993 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5994
5995 * eval.c (s_duplicate_binding): New static identifier.
5996
5997 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5998
5999 (scm_m_define): Added comment about how we check for duplicate
6000 formals.
6001
6002 (scm_m_do): Added check for duplicate bindings.
6003
6004 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
6005 unnecessary consing when creating the memoized code.
6006
6007 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
6008 scm_c_improper_memq to c_improper_memq, since it is not exported.
6009
6010 (transform_bindings): Call scm_c_memq rather than
6011 scm_c_improper_memq.
6012
6013 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
6014
6015 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6016
6017 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
6018 static identifiers.
6019
6020 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
6021 specific about the kind of error that was detected. Avoid use of
6022 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
6023 code, this way also making sure that file name, line number
6024 information etc. remain available.
6025
6026 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6027
6028 * eval.c (memoize_as_thunk_prototype): New static function.
6029
6030 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
6031 Avoid unnecessary consing when creating the memoized code.
6032
6033 2003-10-12 Kevin Ryde <user42@zip.com.au>
6034
6035 * list.c (scm_append): Track argument number and use in error.
6036
6037 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6038
6039 * eval.c (s_missing_expression, s_bad_variable): New static
6040 identifiers.
6041
6042 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
6043 R5RS terminology for the naming of variables. Be more specific
6044 about the kind of error that was detected. Make sure file name,
6045 line number etc. are added to all freshly created expressions.
6046 Avoid unnecessary consing when creating the memoized code.
6047
6048 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6049
6050 * eval.c (s_extra_expression, s_misplaced_else_clause,
6051 s_bad_cond_clause, s_missing_recipient): New static identifiers.
6052
6053 (s_extra_case_clause): Removed.
6054
6055 (scm_m_case, scm_m_cond): If a clause appears after an else
6056 clause, report a misplaced else clause.
6057
6058 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
6059 specific about the kind of error that was detected. Handle bound
6060 'else and '=>. Avoid unnecessary consing when creating the
6061 memoized code.
6062
6063 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
6064 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
6065 syntactic keyword '=>.
6066
6067 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6068
6069 * eval.c (scm_m_case): Allow empty lists of case labels.
6070
6071 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6072
6073 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
6074
6075 * print.c (scm_isymnames): Add names for the new memoizer codes.
6076
6077 * eval.c (s_missing_clauses, s_bad_case_clause,
6078 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
6079 literal_p): New static identifiers.
6080
6081 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
6082 specific about the kind of error that was detected. Check for
6083 duplicate case labels. Handle bound 'else. Avoid unnecessary
6084 consing when creating the memoized code.
6085
6086 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
6087 the syntactic keyword 'else.
6088
6089 2003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
6090
6091 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
6092 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
6093
6094 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
6095 unnecessary consing when creating the memoized code.
6096
6097 2003-10-09 Kevin Ryde <user42@zip.com.au>
6098
6099 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
6100 cast gives for values bigger than a long, or for nan or inf.
6101
6102 2003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
6103
6104 * smob.h (scm_make_smob_type): Made the declaration match the
6105 definition.
6106
6107 2003-10-07 Marius Vollmer <mvo@zagadka.de>
6108
6109 * goops.c, objects.h, smob.c, smob.h: Make type names char
6110 const * instead of char *. Thanks to Paul Jarc!
6111
6112 2003-10-02 Kevin Ryde <user42@zip.com.au>
6113
6114 * strports.c (scm_call_with_output_string): scm_get_output_string
6115 rather than scm_strport_to_string, so as to guard against the port
6116 having been closed by the called procedure. Reported by Nic Ferrier.
6117
6118 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6119
6120 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
6121
6122 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
6123 tags.h to deprecated.h.
6124
6125 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6126
6127 This set of patches introduces a new tc7 code scm_tc7_number for
6128 numbers. Bignums, reals and complex numbers are turned from smobs
6129 into subtypes of scm_tc7_number.
6130
6131 * tags.h (scm_tc7_number): New.
6132
6133 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
6134 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
6135 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
6136 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
6137 (scm_class_of), print.c (scm_iprin1), smob.c
6138 (scm_smob_prehistory): Don't handle bignums, reals and complex
6139 numbers as subtypes of scm_tc7_smob any more.
6140
6141 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
6142 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
6143
6144 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6145
6146 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
6147 sizeof (scm_t_complex) to determine the memory size of the
6148 malloc'd area for complex numbers.
6149
6150 2003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6151
6152 * numbers.c (scm_bigequal): Fixed.
6153
6154 2003-09-16 Marius Vollmer <mvo@zagadka.de>
6155
6156 * stime.c (scm_current_time): 'time' does not set errno so don't
6157 use SCM_SYSERROR for reporting errors.
6158
6159 2003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
6160
6161 This set of patches eliminates the dependency between the
6162 implementation of evaluator specific memoization codes and special
6163 constants like #f, '() etc. ('flags'), which are not evaluator
6164 specific. The goal is to remove definitions of evaluator
6165 memoization codes completely from the public interface. This will
6166 make it possible to experiment more freely with optimizations of
6167 guile's internal representation of memoized code.
6168
6169 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
6170
6171 * print.c (iflagnames): New array, holding the printed names of
6172 guile's special constants ('flags').
6173
6174 (scm_isymnames): Now holds only the printed names of the
6175 memoization codes.
6176
6177 (scm_iprin1): Separate the handling of memoization codes and
6178 guile's special constants.
6179
6180 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
6181 SCM_IFLAGNUM): new
6182
6183 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
6184 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
6185 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
6186 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
6187 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
6188 values.
6189
6190 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
6191
6192 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
6193 tc9 macros and scm_tc9_flag.
6194
6195 2003-09-15 Marius Vollmer <mvo@zagadka.de>
6196
6197 * posix.c (scm_setgroups): Check that the gid list is not too
6198 long. Thanks to Paul Jarc!
6199
6200 2003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
6201
6202 * tags.h: Reduced the number of short instructions from 14 to 13.
6203 The typecode of the former 14th short instruction is now used to
6204 represent long instructions. Changed some comments to reflect
6205 this fact.
6206
6207 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
6208 previously used by SCM_IM_DEFINE.
6209
6210 (SCM_IM_DEFINE): Turned into a long instruction.
6211
6212 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
6213 instruction.
6214
6215 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
6216 code that is separate from all instructions, one level of dispatch
6217 for long instructions can be eliminated.
6218
6219 * print.c (scm_isymnames): Removed some commented code.
6220
6221 2003-09-12 Marius Vollmer <mvo@zagadka.de>
6222
6223 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
6224 compiler on IA64.
6225
6226 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
6227
6228 * modules.c (scm_module_reverse_lookup): Check that the obarray
6229 really is a hashtable and do nothing if not.
6230
6231 * inline.h: Use "extern inline" only with GCC. Use "static
6232 inline" else.
6233
6234 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6235
6236 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
6237 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6238
6239 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
6240 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
6241 deprecated.h.
6242
6243 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6244
6245 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
6246 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6247
6248 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
6249 0.0==some_expression to some_expression==0.0. The latter is
6250 better readable. The former is preferred by some people, since it
6251 leads to a compiler error when confusing == with =. However, when
6252 using gcc, a warning will be issued if in an if-statement an
6253 assigment appears. Since many Guile developers are using gcc,
6254 such errors will not remain unnoticed anyway. We can therefore
6255 focus on better readability.
6256
6257 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6258
6259 * tags.h: Added description of Guile's type system. Removed some
6260 old and misleading comments.
6261
6262 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6263
6264 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
6265 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6266
6267 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6268
6269 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
6270
6271 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
6272 respective SLOPPY macro.
6273
6274 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6275
6276 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
6277 type string, not SCM_TYP7S.
6278
6279 2003-09-03 Kevin Ryde <user42@zip.com.au>
6280
6281 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
6282 2s-complement.
6283
6284 * stime.c (scm_strptime): Add comment about glibc strptime %s and
6285 current timezone requiring SCM_DEFER_INTS.
6286
6287 2003-08-30 Neil Jerram <neil@ossau.uklinux.net>
6288
6289 * script.c (scm_compile_shell_switches): Make -s switch optional
6290 if file to be loaded does not begin with a `-'. (Thanks to Aaron
6291 VanDevender for the patch!)
6292
6293 2003-08-30 Kevin Ryde <user42@zip.com.au>
6294
6295 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
6296 and to have non-integer types rejected as per other logical funcs.
6297
6298 2003-08-28 Kevin Ryde <user42@zip.com.au>
6299
6300 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
6301
6302 2003-08-23 Kevin Ryde <user42@zip.com.au>
6303
6304 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
6305 thread safe, and could take a long time too.
6306
6307 2003-08-22 Kevin Ryde <user42@zip.com.au>
6308
6309 * numbers.c (scm_difference): Correction to bignum - negative inum.
6310
6311 2003-08-14 Kevin Ryde <user42@zip.com.au>
6312
6313 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
6314 [__GNUC__]: Use volatile asm macros rather than a function call.
6315 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
6316 macros while defining functions.
6317
6318 * simpos.c (getenv): Use <stdlib.h> for prototype.
6319 (scm_system): In docstring, refer to status:exit-val rather than
6320 "functions above".
6321
6322 2003-08-09 Kevin Ryde <user42@zip.com.au>
6323
6324 * srcprop.c (scm_source_properties): Return plist from hash if it's a
6325 list set by source-properties! rather than an SRCPROPS object,
6326
6327 2003-07-29 Kevin Ryde <user42@zip.com.au>
6328
6329 * properties.c (scm_primitive_property_ref): In docstring, note
6330 parameters to not-found-proc, use hyphens rather than underscores for
6331 that parameter name.
6332 (scm_primitive_property_set_x): In docstring, VAL is the value
6333 parameter not CODE.
6334
6335 2003-07-27 Marius Vollmer <mvo@zagadka.de>
6336
6337 * print.c (scm_print_symbol_name): handle more weird characters by
6338 escaping the symbol name properly. Thanks to Paul Jarc!
6339
6340 * posix.h (scm_setgroups): New prototype.
6341 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
6342 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
6343 Don't use SCM_WRITABLE_VELTS.
6344
6345 * gc.h (SCM_GC_SET_CELL_BVEC): New.
6346 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
6347 Matthias Koeppe!
6348
6349 * __scm.h (SCM_C_INLINE_KEYWORD): New.
6350 * numbers.c: Use it in place of SCM_C_INLINE so that the code
6351 compiles when SCM_C_INLINE is undefined.
6352
6353 2003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6354
6355 * __scm.h: Reformulated the architecture and compiler properties
6356 in terms of properties of scm_t_bits and SCM variables rather than
6357 in terms of c standard types. This is since it is not known which
6358 of the standard types scm_t_bits and SCM variables will be defined
6359 to.
6360
6361 2003-07-24 Kevin Ryde <user42@zip.com.au>
6362
6363 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
6364 and real.
6365
6366 2003-07-18 Kevin Ryde <user42@zip.com.au>
6367
6368 * numbers.c (scm_product): In complex * bignum, correction to
6369 REAL/IMAG fetch, x is the complex, not y.
6370
6371 2003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6372
6373 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
6374 scm_inf_p test as Scheme values.
6375 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
6376 and a positive inum.
6377 Use GNU indentation style.
6378
6379 2003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6380
6381 * values.c (scm_values): Build lists of length 1 by using
6382 scm_list_1 instead of using scm_cons.
6383
6384 2003-07-10 Kevin Ryde <user42@zip.com.au>
6385
6386 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
6387 * list.c (scm_list_n): Ditto.
6388
6389 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
6390
6391 2003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
6392
6393 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
6394 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
6395 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
6396 the other using intptr_t.
6397
6398 2003-07-08 Kevin Ryde <user42@zip.com.au>
6399
6400 * numbers.c (scm_make_polar): Use sincos, when available.
6401 (scm_magnitude): Use hypot.
6402
6403 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
6404 @footnote since it doesn't go through to guile-procedures.txt.
6405
6406 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
6407 outside @var to quieten makeinfo, and use @code.
6408
6409 2003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6410
6411 * gc-malloc.c (decrease_mtrigger): new function
6412 (increase_mtrigger): new function, separate debug registering and
6413 mtrigger administration.
6414 (scm_gc_realloc): bugfix: do mtrigger administration before the
6415 actual realloc, for the realloc might invalidate a GC-d segment of
6416 memory. Thanks to Sam Hocevar for pointing this out.
6417 (scm_gc_realloc): use scm_malloc_reregister instead of
6418 unregistering and registering in sequence.
6419
6420 2003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6421
6422 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
6423
6424 2003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6425
6426 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
6427 clauses.
6428
6429 2003-06-29 Marius Vollmer <mvo@zagadka.de>
6430
6431 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
6432 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
6433 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
6434 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
6435 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
6436 the release_1_6 branch.
6437
6438 2003-06-25 Stefan Jahn <stefan@lkcc.org>
6439
6440 * continuations.c: Redeclaration of getcontext() via the
6441 __asm__ ("getcontext") directive.
6442
6443 * continuations.h: Include <ucontext.h> instead of
6444 <sys/ucontext.h>.
6445
6446 2003-06-21 Kevin Ryde <user42@zip.com.au>
6447
6448 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
6449 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
6450 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
6451 available.
6452 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
6453 (isfinite): Remove, conflicts with C99 isfinite().
6454
6455 2003-06-19 Marius Vollmer <mvo@zagadka.de>
6456
6457 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
6458 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
6459 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
6460 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
6461 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
6462 the release_1_6 branch.
6463
6464 2003-06-14 Stefan Jahn <stefan@lkcc.org>
6465
6466 * threads.h: Redefined scm_getspecific() and scm_setspecific()
6467 to be functions instead of macros.
6468
6469 * threads.c: Conditionalized inclusion of <sys/time.h> and
6470 <unistd.h>.
6471 (scm_getspecific, scm_setspecific): Made these two function
6472 real part of the API.
6473
6474 * posix.c (s_scm_putenv): Added some code to make a
6475 (putenv "FOO="), i.e. setting an empty string, work also on
6476 Win32 systems. Thanks to Kevin Ryde for the proposal.
6477
6478 2003-06-12 Kevin Ryde <user42@zip.com.au>
6479
6480 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
6481 freebsd to comment about need to use unsetenv.
6482
6483 2003-06-02 Marius Vollmer <mvo@zagadka.de>
6484
6485 * ports.c (scm_peek_char): Safe the column of the port around the
6486 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
6487
6488 2003-06-07 Kevin Ryde <user42@zip.com.au>
6489
6490 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
6491 and friends required by scm_t_bits setups.
6492
6493 2003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6494
6495 * tags.h (scm_tc2_int): Added.
6496
6497 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
6498 scm_tc2_int.
6499
6500 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
6501 scm_tcs_closures): Hard coded values replaced by symbolic ones.
6502
6503 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6504
6505 * eval.c: Partially undid my patch from 2003-05-31. This patch
6506 caused the segfault referenced in the previous changelog entry.
6507
6508 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6509
6510 * tags.h: Fixed comment about the immediate type code layout.
6511
6512 * eval.c: Fixed handling of non-special instructions. Without
6513 this patch, guile will segfault on (#\0) and similar instructions.
6514
6515 2003-06-05 Kevin Ryde <user42@zip.com.au>
6516
6517 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
6518 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
6519
6520 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
6521 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
6522
6523 2003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6524
6525 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
6526 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
6527 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
6528 generalized it to apply not only to C level functions but also to
6529 scheme level functions.
6530
6531 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
6532 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
6533 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
6534 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
6535 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
6536 respectively.
6537
6538 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
6539 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
6540 eval.h into eval.c and a copy is placed into deprecated.h.
6541
6542 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
6543 into eval.c. This definition was not part of the API in any
6544 officially released version of guile and thus does not need to go
6545 through a phase of deprecation.
6546
6547 2003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
6548
6549 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
6550 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
6551 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
6552 definitions are make static and renamed from scm_s_xxx to s_xxx.
6553 In deprecated.c the original definitions are copied.
6554
6555 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
6556 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
6557 eval.h into eval.c and a copy (slightly modified to work in user
6558 code) is placed into deprecated.h.
6559
6560 * eval.c: Use the local static s_xxx definitions instead of the
6561 scm_s_xxx definitions throughout.
6562
6563 2003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6564
6565 This set of patches separates the representation of the cxr family
6566 of functions (car, cdr etc.) from the dsubr family of functions
6567 (i. e. functions that take a double precision floating point
6568 argument). Further, the algorithm for handling the cxr function
6569 is improved.
6570
6571 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
6572 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
6573 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
6574 cosh, tanh), objects.c (scm_class_of), procprop.c
6575 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
6576 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
6577 typecode for the dsubr family of functions.
6578
6579 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
6580 ramap_dsubr.
6581
6582 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
6583 (scm_init_pairs): Make use of the (now usable) second cell element
6584 of a scm_tc7_cxr function to implement the cxr family of functions
6585 more efficiently.
6586
6587 2003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6588
6589 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
6590 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
6591 end of an if-else-if-sequence of checks.
6592
6593 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6594
6595 * eval.c (SCM_CEVAL): Improved readability of call-with-values
6596 execution. Generalize apply_closure to apply_proc and use that
6597 for call-with-values.
6598
6599 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6600
6601 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
6602 a non closure.
6603
6604 2003-05-30 Stefan Jahn <stefan@lkcc.org>
6605
6606 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
6607 appropriately for mingw32 hosts.
6608
6609 * numbers.h: Defining copysign(), isnan() and finite() to
6610 be prefixed by a single '_' for mingw32 hosts.
6611
6612 2003-05-30 Kevin Ryde <user42@zip.com.au>
6613
6614 * numbers.c (z_negative_one): New variable.
6615 (scm_init_numbers): Initialize it.
6616 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
6617
6618 2003-05-29 Stefan Jahn <stefan@lkcc.org>
6619
6620 * win32-dirent.c: Use malloc() instead of scm_malloc().
6621
6622 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
6623 warning.
6624
6625 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
6626 mingw32 build.
6627
6628 * modules.c (s_scm_module_import_interface): Renamed local
6629 variable interface to _interface. Seems like 'interface'
6630 is a special compiler directive for the mingw32 compiler.
6631
6632 * mkstemp.c: Provide prototype to avoid compiler warning.
6633
6634 * load.c (s_scm_search_path): Fixed absolute and relative
6635 path detections for native Windows platforms.
6636
6637 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
6638 to build on mingw32).
6639
6640 * gc-freelist.c ("s_scm_map_free_list",
6641 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
6642
6643 * fports.c (fport_fill_input): Disable use of
6644 fport_wait_for_input() on Win32 platforms.
6645
6646 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
6647
6648 * Makefile.am: Modified some rules for cross compiling.
6649
6650 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6651
6652 * eval.c (SCM_CEVAL): In case of an application, all checks for a
6653 proper function object and the correct number of arguments are now
6654 performed in the application part of SCM_CEVAL.
6655
6656 (scm_badformalsp): Removed.
6657
6658 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6659
6660 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
6661
6662 2003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6663
6664 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
6665 always being false by inserting preprocessor conditional. (Thanks
6666 to Bruce Korb.)
6667
6668 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
6669 (void *) in order to avoid an aliasing warning; thanks to Bruce
6670 Korb.)
6671
6672 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
6673
6674 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
6675 SCM_STACK_PTR.
6676
6677 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
6678 thread->base --> t->base.
6679
6680 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
6681
6682 2003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6683
6684 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
6685 scm_variable_set_name_hint, scm_builtin_variable,
6686 scm_internal_with_fluids, scm_make_gsubr,
6687 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
6688 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
6689 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
6690 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
6691 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
6692 scm_make_subr_with_generic, scm_make_subr_opt,
6693 scm_call_catching_errors, scm_make_smob_type_mfpe,
6694 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
6695 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
6696 branch. Some have been slightly rewritten.
6697 (scm_i_object_chars, scm_i_object_length): New, to support
6698 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
6699
6700 2003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6701
6702 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
6703 names and inits in the memoized code of do.
6704
6705 2003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6706
6707 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
6708 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
6709 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6710 a compilation error if error-on-warning is enabled).
6711
6712 2003-05-17 Marius Vollmer <mvo@zagadka.de>
6713
6714 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6715 removes preprocessor directives from the snarfage that might
6716 otherwise confuse us. These directives appear when compiling with
6717 "-g3", for example.
6718
6719 2003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6720
6721 * ChangeLog: add my surname
6722
6723 * srcprop.c (scm_finish_srcprop): use
6724 scm_gc_register_collectable_memory()
6725 (scm_make_srcprops): idem.
6726
6727 2003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6728
6729 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6730 wrap-around for scm_mtrigger
6731 (scm_gc_register_collectable_memory): abort on overflowing
6732 scm_mallocated().
6733
6734 2003-05-13 Kevin Ryde <user42@zip.com.au>
6735
6736 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6737 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6738
6739 2003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6740
6741 * backtrace.c (scm_display_error_message): Introduced fancy
6742 printing with max level 7 and length 10. (Purpose: avoid printing
6743 gigantic objects in error messages.)
6744
6745 * print.c, print.h (scm_i_port_with_print_state): New function.
6746
6747 * print.c (scm_iprin1, scm_printer_apply,
6748 scm_port_with_print_state): Use scm_i_port_with_print_state.
6749 (scm_simple_format): Modified not to destroy print states.
6750 (print_state_mutex): New mutex.
6751 (scm_make_print_state, scm_free_print_state, scm_prin1):
6752 Lock/unlock print_state_mutex.
6753
6754 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6755 Use current names in definitions.
6756
6757 2003-05-10 Kevin Ryde <user42@zip.com.au>
6758
6759 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6760
6761 * numbers.c (scm_integer_length): On negative bignums, adjust
6762 mpz_sizeinbase to account for it looking at absolute value where we
6763 want ones-complement.
6764
6765 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6766 since we're only using the ulong return value, and x might not fit.
6767
6768 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6769
6770 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6771 read. This will allow to make the definition in read.c static.
6772
6773 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6774
6775 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6776 from evalext to eval. This will allow to make some of the
6777 definitions in eval.c static.
6778
6779 2003-05-06 Kevin Ryde <user42@zip.com.au>
6780
6781 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6782 (scm_logcount): Use mpz_com, not mpz_neg.
6783
6784 2003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6785
6786 The purpose of this patch is to make guile's internal memoizers
6787 distinguishable from memoizing macros created on the scheme level
6788 or from user provided primitive memoizing macros. The reason is,
6789 that the internal memoizers are the only ones that are allowed to
6790 transform their scheme input into memoizer byte code, while all
6791 other memoizing macros may only transform scheme code into new
6792 scheme code.
6793
6794 To achieve this, a new macro type 'builtin-macro!' is introduced.
6795 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6796 this will change when the memoizer and executor are separated.
6797
6798 * macros.[ch] (scm_i_makbimacro): New.
6799
6800 * macros.h (SCM_BUILTIN_MACRO_P): New.
6801
6802 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6803
6804 * eval.c, goops.c: All of guile's primitive memoizing macros are
6805 primitive builtin-macros now.
6806
6807 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6808 builtin-macros are handled equally to memoizing macros.
6809
6810 2003-05-04 Marius Vollmer <mvo@zagadka.de>
6811
6812 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6813 work around a bug in GCC 2.95.2 but is now a bug in itself.
6814
6815 2003-05-02 Marius Vollmer <mvo@zagadka.de>
6816
6817 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6818 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6819 scm_tcs_symbols): New.
6820
6821 2003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6822
6823 * deprecated.h, deprecated.c (scm_protect_object,
6824 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6825 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6826 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6827 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6828 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6829 scm_ptob_descriptor, scm_port_rw_active,
6830 scm_close_all_ports_except): New.
6831
6832 * ports.c (scm_c_port_for_each): New function, mostly copied from
6833 scm_port_for_each.
6834 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6835 * ports.h (scm_c_port_for_each): New prototype.
6836
6837 2003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6838
6839 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6840 macro was introduced in anticipation of GOOPS method compilation
6841 code.)
6842
6843 * goops.c: Removed binding of @dispatch.
6844
6845 2003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6846
6847 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6848 instructions that bind the macros on the scheme level back to
6849 goops.c in order to make sure again that the bindings go into the
6850 (oop goops) module and are not visible from the outside.
6851
6852 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6853
6854 * eval.c: Non functional change: Separated R5RS and non-R5RS
6855 macros into different sections of the file and ordered the
6856 memoizers alphabetically.
6857
6858 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6859
6860 * eval.c (scm_ilookup): Rewritten to improve readability.
6861
6862 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6863
6864 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6865 Partially reverted patch from 2003-04-23 in oder to find a better
6866 compromise between readability and debuggability.
6867
6868 2003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6869
6870 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6871 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6872 definitions of the special goops memoizers from goops.[ch] to
6873 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6874 throughout guile.
6875
6876 2003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6877
6878 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6879
6880 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6881
6882 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6883
6884 * ioext.c (scm_fdes_to_ports): Ditto.
6885
6886 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6887 lock/unlock scm_i_port_table_mutex.
6888
6889 * strports.c (scm_mkstrport): Ditto.
6890
6891 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6892
6893 * fports.c (scm_fdes_to_port): Ditto.
6894
6895 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6896
6897 This set of patches contains no functional changes, only debatable
6898 minor stylistic ones. Still, in order to prepare a patch between
6899 my local copy and the CVS version, I decided to submit the changes
6900 below. Then, the patch will hopefully only contain relevant
6901 modifications :-)
6902
6903 * eval.c (iqq): Added const specifier.
6904
6905 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6906 Use NULL instead of 0 to indicate that a pointer is returned.
6907 Removed some misleading 'fall through' comments.
6908
6909 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6910 Split up long expressions into smaller ones to be more debugging
6911 friendly.
6912
6913 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6914
6915 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6916 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6917 rather than casting to SCM.
6918
6919 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6920
6921 * sort.c, pairs.h: Removed unnecessary includes.
6922
6923 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6924
6925 * sort.c: Replaced hand-made trampline code by the new official
6926 mechanism from eval.c. This fixes a segfault in the new test file
6927 sort.test.
6928
6929 (quicksort, compare_function, scm_restricted_vector_sort_x,
6930 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6931 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6932 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6933 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6934 eval.c.
6935
6936 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6937 cmp_fun_t): Removed.
6938
6939 (compare_function): Added.
6940
6941 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6942 arithmetics with index arithmetics. Changed quicksort to work on
6943 an array of SCM values instead of an array of characters. Avoid
6944 bytewise copying of SCM elements. Avoid allocating memory on the
6945 stack with alloca. Fixed some comments.
6946
6947 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6948
6949 * eval.c (EXTEND_ENV): Eliminated.
6950
6951 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6952 EXTEND_ENV.
6953
6954 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6955
6956 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6957
6958 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6959 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6960
6961 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6962 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6963 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6964 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6965 functions such that they check if the object is a non-immediate.
6966 Further, renamed identifiers to use the scm_dbg_ prefix and made
6967 their inclusion into the lib dependent of the
6968 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6969
6970 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6971
6972 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6973 debug option.
6974
6975 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6976
6977 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
6978 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6979 any calls to SCM_NCONSP any more.
6980
6981 * unif.c (l2ra): Eliminate redundant check.
6982
6983 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6984
6985 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6986 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6987 SCM_NNULLP. Now, guile itself does not include any calls to
6988 SCM_NNULLP any more.
6989
6990 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6991
6992 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6993 scm_copy_tree): Place assignment expressions which are part of
6994 other expressions into an expression of their own.
6995
6996 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6997
6998 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6999 compare SCM values with !=.
7000
7001 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7002
7003 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
7004 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
7005 and definition of the memoizer for the generalized set! macro from
7006 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
7007 define the macro object.
7008
7009 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
7010 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
7011 eval.c, it is made static and renamed to s_set_x.
7012
7013 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
7014 over SCM_N<foo>.
7015
7016 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7017
7018 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
7019 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
7020 to undefineds and registered the object as a permanent object.
7021
7022 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
7023 static in eval.c, renamed it to f_apply and registered the object
7024 as a permanent object.
7025
7026 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7027
7028 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
7029 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
7030
7031 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7032
7033 * numbers.c (scm_logtest): Fixed argument bug in the call to
7034 mpz_and, which showed up when compiling with SCM_DEBUG defined.
7035
7036 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7037
7038 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
7039 type errors that showed up when compiling with SCM_DEBUG defined.
7040
7041 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7042
7043 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
7044 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
7045 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
7046 fix compile errors with --disable-deprecated.
7047
7048 2003-04-17 Rob Browning <rlb@defaultvalue.org>
7049
7050 * numbers.c (scm_integer_expt): fix case where we were declaring
7051 vars in the middle of a statement block. Thanks to Thamer
7052 Al-Harbash.
7053
7054 2003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7055
7056 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
7057 change.
7058
7059 * eq.c (scm_eqv_p): Turned into a primitive generic.
7060
7061 2003-04-16 Rob Browning <rlb@defaultvalue.org>
7062
7063 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
7064 Thanks to Boyd Gerber.
7065 Added check for __arm__ in addition to arm for LINUX and copied
7066 __s390__ defines from upstream libgc. Thanks to James Treacy for
7067 reporting the problems.
7068
7069 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
7070
7071 * socket.c: use SCM_CHAR_BIT.
7072
7073 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
7074
7075 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
7076
7077 2003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7078
7079 * feature.c (scm_init_feature): Always add threads feature.
7080
7081 2003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7082
7083 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
7084 scm_at_assert_bound_ref. (We don't want the unbound check. See
7085 oop/goops/active-slot.scm.)
7086
7087 2003-04-14 Rob Browning <rlb@defaultvalue.org>
7088
7089 * tags.h: scm_t_intptr should have been intptr_t.
7090
7091 2003-04-13 Rob Browning <rlb@defaultvalue.org>
7092
7093 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
7094 test. Instead use
7095 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
7096 as gc_os_dep.c suggests is appropriate.
7097
7098 * goops.c (prep_hashsets): make static to match prototype.
7099 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
7100 Chin.
7101
7102 * c-tokenize.lex: remove trailing comma from enum. Thanks to
7103 Albert Chin.
7104
7105 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
7106 Klausner.
7107
7108 2003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7109
7110 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
7111 indicated through extra fields in getters-n-setters.
7112 (scm_add_slot): Adapted to new format of getters_n_setters slot.
7113 (Thanks to Andy Wingo.)
7114
7115 2003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7116
7117 * gc-segment.c: add comment
7118
7119 2003-04-07 Rob Browning <rlb@defaultvalue.org>
7120
7121 * debug.h: change "id" arg name to "info_id" to avoid objective-c
7122 clash.
7123
7124 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
7125 and add regression test to standalone/.
7126
7127 2003-04-06 Rob Browning <rlb@defaultvalue.org>
7128
7129 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
7130 Thanks to Dale P. Smith.
7131
7132 * random.c: #include gmp.h.
7133 (scm_c_random_bignum): normalize result on return.
7134
7135 * init.c: #include gmp.h.
7136
7137 * numbers.h: remove the gmp.h #include (not needed now).
7138
7139 * posix.h: change occurences of "id" to something else so we don't
7140 cause trouble when included via objective-c (can't hurt, might
7141 help). Still have usage in debug.h, though.
7142
7143 2003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7144
7145 * random.c (scm_c_random_bignum): Don't generate a random number
7146 equal to m (the second argument of scm_c_random_bignum); only
7147 generate numbers in the range 0 <= r < m.
7148 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
7149 scm_var_random_state.
7150
7151 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
7152 clause.
7153
7154 2003-04-05 Rob Browning <rlb@defaultvalue.org>
7155
7156 * modules.c (scm_module_import_interface): move declaration of
7157 uses before any code.
7158
7159 2003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7160
7161 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
7162 not top_srcdir.
7163
7164 * hashtab.c (rehash_after_gc): Clear to_rehash list before
7165 processing it in order to avoid an infinite loop.
7166
7167 * print.c (scm_prin1): Remember old state of pstate->writingp.
7168
7169 2003-04-05 Marius Vollmer <mvo@zagadka.de>
7170
7171 * Changed license terms to the plain LGPL thru-out.
7172
7173 2003-04-04 Rob Browning <rlb@defaultvalue.org>
7174
7175 * socket.c (FLIPCPY_NET_HOST_128): new macro.
7176 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
7177 rewrite to handle GMP bignums.
7178
7179
7180 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
7181
7182 * ports.c (scm_getc): minor tweak.
7183
7184 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
7185 rewrite to handle GMP bignums.
7186
7187 * numbers.c: rewrite *many* functions to handle GMP bignums.
7188
7189 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
7190 handle GMP bignums.
7191
7192 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
7193
7194 * init.c (check_config): remove SCM_BIGDIG conditionals.
7195 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
7196
7197 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
7198
7199 * eval.c: remove SCM_BIGDIG conditionals.
7200
7201 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
7202
7203 2003-03-31 Rob Browning <rlb@defaultvalue.org>
7204
7205 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
7206 to Kevin Ryde.)
7207
7208 2003-03-27 Rob Browning <rlb@defaultvalue.org>
7209
7210 * threads.h: fix various preprocessor usages of new public
7211 symbols to expect 0 or 1 values rather than 1 or undefined.
7212 i.e. change #ifdef to #if, etc.
7213
7214 * threads.c: fix various preprocessor usages of new public
7215 symbols to expect 0 or 1 values rather than 1 or undefined.
7216 i.e. change #ifdef to #if, etc.
7217
7218 * tags.h: fix various preprocessor usages of new public
7219 symbols to expect 0 or 1 values rather than 1 or undefined.
7220 i.e. change #ifdef to #if, etc.
7221
7222 * stacks.c: fix various preprocessor usages of new public
7223 symbols to expect 0 or 1 values rather than 1 or undefined.
7224 i.e. change #ifdef to #if, etc.
7225
7226 * stackchk.h: fix various preprocessor usages of new public
7227 symbols to expect 0 or 1 values rather than 1 or undefined.
7228 i.e. change #ifdef to #if, etc.
7229
7230 * stackchk.c: fix various preprocessor usages of new public
7231 symbols to expect 0 or 1 values rather than 1 or undefined.
7232 i.e. change #ifdef to #if, etc.
7233
7234 * sort.c: fix various preprocessor usages of new public
7235 symbols to expect 0 or 1 values rather than 1 or undefined.
7236 i.e. change #ifdef to #if, etc.
7237
7238 * read.c: fix various preprocessor usages of new public
7239 symbols to expect 0 or 1 values rather than 1 or undefined.
7240 i.e. change #ifdef to #if, etc.
7241
7242 * random.c: fix various preprocessor usages of new public
7243 symbols to expect 0 or 1 values rather than 1 or undefined.
7244 i.e. change #ifdef to #if, etc.
7245
7246 * print.c: fix various preprocessor usages of new public
7247 symbols to expect 0 or 1 values rather than 1 or undefined.
7248 i.e. change #ifdef to #if, etc.
7249
7250 * objects.c: fix various preprocessor usages of new public
7251 symbols to expect 0 or 1 values rather than 1 or undefined.
7252 i.e. change #ifdef to #if, etc.
7253
7254 * numbers.h: fix various preprocessor usages of new public
7255 symbols to expect 0 or 1 values rather than 1 or undefined.
7256 i.e. change #ifdef to #if, etc.
7257
7258 * null-threads.c: fix various preprocessor usages of new public
7259 symbols to expect 0 or 1 values rather than 1 or undefined.
7260 i.e. change #ifdef to #if, etc.
7261
7262 * lang.c: fix various preprocessor usages of new public
7263 symbols to expect 0 or 1 values rather than 1 or undefined.
7264 i.e. change #ifdef to #if, etc.
7265
7266 * lang.h: fix various preprocessor usages of new public
7267 symbols to expect 0 or 1 values rather than 1 or undefined.
7268 i.e. change #ifdef to #if, etc.
7269
7270 * iselect.h: fix various preprocessor usages of new public
7271 symbols to expect 0 or 1 values rather than 1 or undefined.
7272 i.e. change #ifdef to #if, etc.
7273
7274 * init.c: fix various preprocessor usages of new public
7275 symbols to expect 0 or 1 values rather than 1 or undefined.
7276 i.e. change #ifdef to #if, etc.
7277
7278 * gh_data.c: fix various preprocessor usages of new public
7279 symbols to expect 0 or 1 values rather than 1 or undefined.
7280 i.e. change #ifdef to #if, etc.
7281
7282 * gh.h: fix various preprocessor usages of new public
7283 symbols to expect 0 or 1 values rather than 1 or undefined.
7284 i.e. change #ifdef to #if, etc.
7285
7286 * gen-scmconfig.c: change most new public symbols to be defined to
7287 0 or 1 rather than being either 1 or undefined.
7288
7289 * gc_os_dep.c: fix various preprocessor usages of new public
7290 symbols to expect 0 or 1 values rather than 1 or undefined.
7291 i.e. change #ifdef to #if, etc.
7292 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
7293
7294 * gc.h: fix various preprocessor usages of new public
7295 symbols to expect 0 or 1 values rather than 1 or undefined.
7296 i.e. change #ifdef to #if, etc.
7297
7298 * gc-card.c: fix various preprocessor usages of new public
7299 symbols to expect 0 or 1 values rather than 1 or undefined.
7300 i.e. change #ifdef to #if, etc.
7301
7302 * gc-mark.c: fix various preprocessor usages of new public
7303 symbols to expect 0 or 1 values rather than 1 or undefined.
7304 i.e. change #ifdef to #if, etc.
7305
7306 * feature.c: fix various preprocessor usages of new public
7307 symbols to expect 0 or 1 values rather than 1 or undefined.
7308 i.e. change #ifdef to #if, etc.
7309
7310 * evalext.c: fix various preprocessor usages of new public
7311 symbols to expect 0 or 1 values rather than 1 or undefined.
7312 i.e. change #ifdef to #if, etc.
7313
7314 * eval.h: fix various preprocessor usages of new public
7315 symbols to expect 0 or 1 values rather than 1 or undefined.
7316 i.e. change #ifdef to #if, etc.
7317
7318 * eval.c: fix various preprocessor usages of new public
7319 symbols to expect 0 or 1 values rather than 1 or undefined.
7320 i.e. change #ifdef to #if, etc.
7321
7322 * eq.c: fix various preprocessor usages of new public
7323 symbols to expect 0 or 1 values rather than 1 or undefined.
7324 i.e. change #ifdef to #if, etc.
7325
7326 * coop.c: fix various preprocessor usages of new public
7327 symbols to expect 0 or 1 values rather than 1 or undefined.
7328 i.e. change #ifdef to #if, etc.
7329
7330 * coop-threads.c: fix various preprocessor usages of new public
7331 symbols to expect 0 or 1 values rather than 1 or undefined.
7332 i.e. change #ifdef to #if, etc.
7333
7334 * coop-pthreads.c: fix various preprocessor usages of new public
7335 symbols to expect 0 or 1 values rather than 1 or undefined.
7336 i.e. change #ifdef to #if, etc.
7337
7338 * coop-defs.h: fix various preprocessor usages of new public
7339 symbols to expect 0 or 1 values rather than 1 or undefined.
7340 i.e. change #ifdef to #if, etc.
7341
7342 * convert.i.c: fix various preprocessor usages of new public
7343 symbols to expect 0 or 1 values rather than 1 or undefined.
7344 i.e. change #ifdef to #if, etc.
7345
7346 * continuations.c: fix various preprocessor usages of new public
7347 symbols to expect 0 or 1 values rather than 1 or undefined.
7348 i.e. change #ifdef to #if, etc.
7349
7350 * _scm.h: fix various preprocessor usages of new public symbols to
7351 expect 0 or 1 values rather than 1 or undefined. i.e. change
7352 #ifdef to #if, etc.
7353
7354 2003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7355
7356 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
7357
7358 * deprecated.c, deprecated.h: New files, to collect deprecated
7359 things in one place.
7360 * Makefile.am: Added them in all the right places.
7361
7362 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
7363 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
7364 builds work.
7365 (DOT_X_FILES): Removed "iselect.x".
7366 (DOT_DOC_FILES): Removed "iselect.doc".
7367
7368 2003-03-25 Rob Browning <rlb@defaultvalue.org>
7369
7370 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
7371 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
7372
7373 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
7374
7375 * vports.c: #include <config.h> if HAVE_CONFIG_H.
7376
7377 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
7378 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7379
7380 * threads.h: replace usage of struct timespect with
7381 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
7382 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
7383 favor of scm_t_timespec from scmconfig.h.
7384
7385 * threads.c: move libguile/_scm.h include to the top so we pick up
7386 any critical defines like _GNU_SOURCE early. Replace usage of
7387 struct timespect with scm_t_timespec. Replace usage of
7388 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
7389 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
7390
7391 * threads-plugin.h: replace usage of struct timespect with
7392 scm_t_timespec.
7393
7394 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
7395 usage of struct timespect with scm_t_timespec.
7396
7397 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
7398 HAVE_INTTYPES_H handling to scmconfig.h. #include
7399 "libguile/__scm.h". Rework handling for scm_t_bits,
7400 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
7401 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
7402 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
7403 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
7404 SCM_HAVE_ARRAYS.
7405
7406 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
7407
7408 * struct.c: #include <config.h> if HAVE_CONFIG_H.
7409
7410 * strports.c: #include <config.h> if HAVE_CONFIG_H.
7411
7412 * strop.c: #include <config.h> if HAVE_CONFIG_H.
7413
7414 * stime.h: move handling of time related headers to scmconfig.h.
7415
7416 * stime.c: #include <config.h> if HAVE_CONFIG_H.
7417
7418 * stacks.c: replace usage of STACK_GROWS_UP with
7419 SCM_STACK_GROWS_UP.
7420
7421 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7422 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7423
7424 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7425 of uint32 and HAVE_UINT_32 with scm_t_int32.
7426
7427 * smob.c: #include <config.h> if HAVE_CONFIG_H.
7428
7429 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
7430
7431 * script.c: #include <config.h> if HAVE_CONFIG_H.
7432
7433 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
7434
7435 * scmconfig.h.top: new file -- preamble for scmconfig.h.
7436
7437 * rw.c: #include <config.h> if HAVE_CONFIG_H.
7438
7439 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
7440
7441 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7442
7443 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
7444
7445 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7446 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
7447 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
7448 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7449
7450 * ramap.c: replace usage of HAVE_LONG_LONGS with
7451 "SCM_SIZEOF_LONG_LONG != 0".
7452
7453 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
7454 "libguile/scmconfig.h".
7455
7456 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
7457
7458 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7459 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7460
7461 * posix.c: #include <config.h> if HAVE_CONFIG_H.
7462
7463 * ports.c: #include <config.h> if HAVE_CONFIG_H.
7464
7465 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7466
7467 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
7468 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
7469 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
7470 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
7471 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
7472 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
7473 "SCM_SIZEOF_LONG_LONG != 0".
7474
7475 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7476 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
7477 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
7478 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
7479
7480 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
7481
7482 * null-threads.h: replace usage of struct timespect with
7483 scm_t_timespec.
7484
7485 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
7486
7487 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
7488 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
7489 scm_t_uint64 and rename usages.
7490
7491 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
7492
7493 * load.c: #include <config.h> if HAVE_CONFIG_H.
7494
7495 * iselect.h: move handling of time related headers to scmconfig.h.
7496 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
7497 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
7498 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
7499
7500 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7501 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7502 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7503
7504 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
7505
7506 * inline.h: #include "libguile/__scm.h" at the top. Change code
7507 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
7508 what to do instead of creating a new public #define. Rename usage
7509 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7510 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
7511 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
7512
7513 * inline.c: rearrange handling -- now we just #define
7514 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
7515 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
7516 appropriate, and we use that in inline.h along with the above
7517 define to determine how to respond.
7518
7519 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7520 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7521
7522 * guile.c: #include <config.h> if HAVE_CONFIG_H.
7523
7524 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7525 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7526
7527 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7528
7529 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
7530
7531 * gen-scmconfig.c: new file -- see comments in file for details.
7532
7533 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
7534
7535 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
7536 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7537
7538 * gc.h: replace usage of SIZEOF_LONG with
7539 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
7540 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
7541 since we handle that in scmconfig.h now.
7542
7543 * gc.c: #include <config.h> if HAVE_CONFIG_H.
7544
7545 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7546 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
7547 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7548
7549 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
7550
7551 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7552 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7553
7554 * fports.c: #include <config.h> if HAVE_CONFIG_H.
7555
7556 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
7557
7558 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7559 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7560
7561 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
7562
7563 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7564 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7565
7566 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
7567 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
7568 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7569 with "SCM_SIZEOF_LONG_LONG != 0".
7570
7571 * error.c: #include <config.h> if HAVE_CONFIG_H.
7572
7573 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7574 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7575 with "SCM_SIZEOF_LONG_LONG != 0".
7576
7577 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
7578
7579 * coop.c: replace usage of struct timespect with scm_t_timespec.
7580 #include <config.h> if HAVE_CONFIG_H.
7581
7582 * coop-threads.c: #include "libguile/_scm.h" early. Replace
7583 usage of struct timespect with scm_t_timespec. Replace usage of
7584 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7585
7586 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
7587 usage of struct timespect with scm_t_timespec. Replace usage of
7588 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7589
7590 * coop-defs.h: move handling of time related headers to
7591 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
7592 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
7593 timespect with scm_t_timespec.
7594
7595 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7596
7597 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7598
7599 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7600 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7601
7602 * continuations.c: move libguile/_scm.h include to the top so we
7603 pick up any critical defines like _GNU_SOURCE early.
7604
7605 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
7606
7607 * async.c: #include <config.h> if HAVE_CONFIG_H.
7608
7609 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
7610
7611 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
7612 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
7613
7614 * __scm.h: move libguile/scmconfig.h include up to the top, so
7615 we're sure to pick up any critical defines like _GNU_SOURCE early.
7616 #include <limits.h> removed in favor of scmconfig.h inclusion when
7617 appropriate. STDC_HEADERS based inclusion of stdlib.h,
7618 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
7619 scmconfig.h inclusion when appropriate. Various Win32 related
7620 definitions removed in favor of scmconfig.h inclusion when
7621 appropriate.
7622 (HAVE_UINTPTR_T): definition removed (see NEWS).
7623 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
7624 (HAVE_LONG_LONGS): definition removed (see NEWS).
7625 (HAVE_LONG_LONG): definition removed (see NEWS).
7626 (HAVE_PTRDIFF_T): definition removed (see NEWS).
7627
7628 * Makefile.am: scmconfig.h is now generated by building and
7629 running gen-scmconfig.h and capturing its output. gen-scmconfig
7630 uses config.h and the configure.in generated gen-scmconfig.h to
7631 decide what to output. See gen-scmconfig.c for details.
7632 (noinst_PROGRAMS): add gen-scmconfig.
7633 (gen_scmconfig_SOURCES): new variable.
7634 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
7635 cross-compiling right.
7636 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
7637 (BUILT_SOURCES): add scmconfig.h.
7638
7639 2003-03-19 Marius Vollmer <mvo@zagadka.de>
7640
7641 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
7642 Adrian Bunk. Thanks!
7643
7644 2003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7645
7646 * goops.c (make_class_from_template): New fourth arg:
7647 applicablep.
7648 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
7649 cpls.
7650
7651 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
7652
7653 * goops.c, objects.c, objects.h (scm_make_extended_class): New
7654 second arg: applicablep.
7655 (scm_i_inherit_applicable): New function.
7656
7657 * goops.c, goops.h (scm_class_applicable,
7658 scm_class_extended_accessor): New classes.
7659
7660 2003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7661
7662 * procs.c (scm_procedure_documentation): Removed redundant
7663 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
7664 predicates.
7665
7666 2003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7667
7668 * list.c, list.h (scm_filter, scm_filter_x): New functions.
7669
7670 * modules.c (scm_module_import_interface): New function.
7671
7672 * goops.c, goops.h (scm_class_accessor_method): Renamed from
7673 scm_class_accessor.
7674 (scm_class_accessor): New class.
7675
7676 2003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7677
7678 * goops.c (scm_primitive_generic_generic): Enable primitive
7679 generic if not enabled.
7680 (scm_sys_goops_loaded): Setup unextended primitive generics.
7681
7682 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
7683
7684 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
7685 snarf macros.
7686
7687 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
7688 testing example. All uses of SCM_GPROC should be converted.)
7689
7690 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
7691 scm_assoc.
7692
7693 * eq.c (scm_equal_p): Turned into a primitive generic.
7694
7695 2003-02-27 Rob Browning <rlb@defaultvalue.org>
7696
7697 * Makefile.am (scmconfig.h): new target -- generate file from
7698 ../config.h.
7699 (modinclude_HEADERS): remove version.h.
7700 (nodist_modinclude_HEADERS): add version.h.
7701
7702 2003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7703
7704 This fixes a serious GC bug, introduced during the latest
7705 reorganization of the GC, which disabled freeing of structs and
7706 GOOPS objects:
7707
7708 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
7709 SCM_EOL.
7710 (scm_struct_prehistory): Move scm_free_structs to
7711 scm_before_mark_c_hook.
7712
7713 * gc-card.c (sweep_card): Check that we haven't swept structs on
7714 this card before. That can happen if scm_i_sweep_all_segments has
7715 been called from some other place than scm_igc.
7716
7717 2003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7718
7719 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7720 (since hash tables now adapt their size).
7721
7722 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7723 (current number of prehistory bindings; hashtable code will select
7724 a prime which is greater than this value).
7725
7726 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7727 (current number of initial symbols).
7728
7729 * properties.c (scm_init_properties): Don't specify size of
7730 scm_properties_whash.
7731
7732 * objprop.c (scm_init_objprop): Don't specify size of
7733 scm_object_whash.
7734
7735 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7736
7737 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7738
7739 The following changes introduce the use of resizable hash tables
7740 throughout Guile. It also renames the old *-hash-table* functions
7741 to *-alist-vector* and places them, together with the rest of the
7742 weak vector support, in the module (ice-9 weak-vector). We should
7743 probably introduce a new, better, API for weak references, for
7744 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7745 look like and are used like ordinary pairs.)
7746
7747 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7748 leaf_environment_fold, obarray_remove_all): Use hashtable
7749 accessors.
7750
7751 * gc.c (scm_init_storage): Moved hook initialization to
7752 scm_storage_prehistory.
7753 (scm_storage_prehistory): New function.
7754 (scm_igc): Added commentary about placement of
7755 scm_after_sweep_c_hook.
7756
7757 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7758 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7759 SCM_WVECT_WEAK_VALUE_P.
7760
7761 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7762 functions.
7763 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7764 Removed.
7765 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7766 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7767
7768 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7769 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7770
7771 * modules.c (module-reverse-lookup): Use hashtable accessors.
7772
7773 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7774
7775 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7776 scm_make_weak_value_alist_vector,
7777 scm_make_doubly_weak_alist_vector): New functions.
7778
7779 * weaks.c (scm_init_weaks_builtins): New function.
7780
7781 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7782 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7783 SCM_WVECT_NOSCAN_P): New macros.
7784
7785 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7786 and SCM_WVECT_WEAK_VALUE_P.
7787
7788 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7789 allocate_weak_vector and exported.
7790
7791 2003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7792
7793 * hashtab.c: Undid thread safety. (We decided that it's better to
7794 let the user explicitly protect the tables (or not) according what
7795 is suitable for the application.)
7796
7797 2003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7798
7799 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7800 thread safe and handle resizing tables.
7801 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7802 SCM_DEFER/ALLOW_INTS.
7803
7804 2003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7805
7806 * hashtab.c (scm_vector_to_hash_table,
7807 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7808 functions.
7809 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7810 safe and handle resizing tables.
7811
7812 * weaks.c (scm_make_weak_key_hash_table,
7813 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7814 Size argument made optional. Return resizable table if not
7815 specified.
7816
7817 2003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7818
7819 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7820 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7821
7822 2003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7823
7824 * debug.c (scm_procedure_source): Handle all objects for which
7825 procedure? is #t. (Thanks to Bill Schottstaedt.)
7826
7827 2003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7828
7829 * futures.c (mark_futures): Don't need to mark data of recycled
7830 futures.
7831 (scan_futures, cleanup_undead): Be smarter about marking
7832 futures---avoid unnecessary passes through future lists.
7833
7834 * futures.h, futures.c: New files; Introduced recycling of
7835 futures. For fine-grained threading this lifts performance to
7836 another level. We can now use parallelization in inner loops of
7837 Guile programs without impossible overhead.
7838
7839 * threads.h, threads.c: Moved futures to their own file.
7840
7841 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7842 (DOT_X_FILES): Added futures.x.
7843 (DOT_DOC_FILES): Added futures.doc.
7844 (modinclude_HEADERS): Added futures.h.
7845
7846 * threads.c, threads.h (scm_i_create_thread): Renamed from
7847 create_thread and made global.
7848
7849 * futures.c (scm_make_future): New procedure.
7850
7851 * eval.c: #include "libguile/futures.h".
7852
7853 * init.c: #include "futures.h"
7854 (scm_init_guile_1): Call scm_init_futures.
7855
7856 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7857
7858 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7859
7860 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7861 functions.
7862
7863 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7864
7865 2003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7866
7867 * threads.c (create_thread): Don't unwind dynwind chain of parent
7868 thread before creation. Just start the new thread with an empty
7869 dynwind chain.
7870
7871 2003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7872
7873 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7874
7875 2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7876
7877 * threads.c (scm_timed_wait_condition_variable): Support timed
7878 waiting also for simple condition variables.
7879
7880 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7881 of calling the procedure change-object-class.
7882
7883 2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7884
7885 * ramap.c (scm_ramapc): Typo in error message.
7886
7887 2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7888
7889 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7890 slots with instance allocation.
7891
7892 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7893 class.
7894 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7895
7896 * goops.c (scm_generic_function_methods): Support extended
7897 generic functions.
7898
7899 2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7900
7901 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
7902 Thanks to Neil for pointing this out!
7903
7904 2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7905
7906 * lang.h: Remove declarations matching definitions removed from
7907 lang.c (just below).
7908
7909 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7910
7911 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7912 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7913 and already commented out.
7914
7915 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7916 scm_lreadparen): Support reading vectors with Elisp syntax if
7917 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7918 is not currently defined, and there isn't even a configure switch
7919 to enable it yet.)
7920
7921 2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7922
7923 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7924 builds work.
7925 (EXTRA_DIST): Added version.h.in.
7926
7927 2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7928
7929 This change makes it possible for one thread to do lazy sweeping
7930 while other threads are running. Now only the mark phase need to
7931 have all threads asleep. We should look further into this issue.
7932 Presently, I've put the locking of scm_i_sweep_mutex at
7933 "conservative" places due to my current lack of knowledge about
7934 the garbage collector. Please feel free to restrict these regions
7935 further to allow for maximal parallelism!
7936
7937 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7938
7939 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7940 scm_gc_register_collectable_memory): Substitute locking of
7941 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7942 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7943 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7944 the single-thread section (which now only contains the mark
7945 phase).
7946 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7947 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7948
7949 * threads.c (gc_section_mutex): Removed.
7950
7951 2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7952
7953 * threads.c (create_thread): Clear parent field in root state in
7954 order not to unnecessarily remember dead threads.
7955
7956 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7957 (scm_trampoline_1, scm_trampoline_2): Use them.
7958
7959 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7960
7961 Partial introduction of real plugin interface.
7962
7963 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7964 (EXTRA_DIST): Added threads-plugin.c.
7965
7966 * threads-plugin.h, threads-plugin.c: New files.
7967
7968 * threads.h: #include "libguile/threads-plugin.h".
7969
7970 * threads.c: #include "libguile/threads-plugin.c".
7971
7972 * pthread-threads.c: Temporarily remove debugging functions.
7973
7974 * threads.c, threads.h (scm_yield): Added back.
7975
7976 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7977
7978 * threads.c (really_launch): Detach before unlocking
7979 thread_admin_mutex in order not to risk being joined.
7980 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7981 thread_admin_mutex locked during GC.
7982
7983 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7984 functions.
7985
7986 2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7987
7988 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7989 support for debugging mutex operations.
7990
7991 * threads.c (scm_thread): Removed filed joining_threads.
7992 (thread_print): Print thread number as well as address of thread
7993 structure.
7994 (scm_join_thread): Bugfix.
7995 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7996 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7997 scm_broadcast_condition_variable): Use the low-level API.
7998 (scm_all_threads): Return copy of thread list (to prevent
7999 unintended destruction).
8000 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
8001
8002 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
8003 pthread "native" recursive mutex support.
8004
8005 2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8006
8007 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
8008 Simply lock a thread C API recursive mutex.
8009 (SCM_NONREC_CRITICAL_SECTION_START,
8010 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
8011 SCM_REC_CRITICAL_SECTION_END): Removed.
8012
8013 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
8014 direct calls to scm_rec_mutex_lock / unlock around the three calls
8015 to scm_m_expand_body.
8016
8017 * eval.c, eval.h (promise_free): New function.
8018 (scm_force): Rewritten; Now thread-safe; Removed
8019 SCM_DEFER/ALLOW_INTS.
8020
8021 * pthread-threads.h: Added partially implemented plugin interface
8022 for recursive mutexes. These are, for now, only intended to be
8023 used internally within the Guile implementation.
8024
8025 * pthread-threads.c: New file.
8026
8027 * threads.c: Conditionally #include "pthread-threads.c".
8028
8029 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
8030 thread-safe;
8031
8032 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
8033 SCM_GLOBAL_REC_MUTEX): New macros.
8034
8035 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
8036 macros---use mutexes instead.
8037
8038 * tags.h (SCM_IM_FUTURE): New tag.
8039
8040 * eval.c (scm_m_future): New primitive macro.
8041 (SCM_CEVAL): Support futures.
8042 (unmemocopy): Support unmemoization of futures.
8043
8044 * print.c (scm_isymnames): Name of future isym.
8045
8046 * version.c: Unmade some changes to my private copy that got
8047 committed by mistake.
8048
8049 2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8050
8051 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
8052 2002-12-10.
8053
8054 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
8055
8056 * gc.c (scm_gc_sweep): Call it here instead, which is a more
8057 logical place.
8058
8059 * threads.c (create_thread): Remember root object until the handle
8060 of the new thread is on all_threads list.
8061
8062 * root.c (scm_make_root): Moved copying of fluids until after
8063 creation of root handle so that the fluids are GC protected. Also
8064 removed the critical section.
8065
8066 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8067
8068 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
8069
8070 * gc-malloc.c (malloc_mutex): New mutex.
8071 (scm_gc_malloc_prehistory): Initialize it.
8072 (scm_realloc): Serialize call to realloc
8073 (scm_calloc): Same for calloc.
8074 Thanks to Wolfgang Jaehrling!
8075 (Now we have to make sure all calls to malloc/realloc are made
8076 through scm_malloc.)
8077
8078 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
8079
8080 * threads.c (really_launch): Release heap (to prevent deadlock).
8081 (create_thread): Release heap before locking thread admin mutex.
8082
8083 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8084
8085 * threads.c (scm_i_thread_invalidate_freelists): New
8086 function.
8087
8088 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
8089
8090 * modules.c (scm_export): Inserted a return statement.
8091
8092 2002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8093
8094 * modules.c (scm_export): new function
8095
8096 * gc-card.c: add a note about malloc()/free() overhead.
8097
8098 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8099
8100 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
8101 in srcdir.
8102
8103 2002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8104
8105 These changes remove scm_ints_disabled (which hasn't has any
8106 effect in Guile for quite some time).
8107
8108 * async.c, error.h (scm_ints_disabled): Removed.
8109
8110 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
8111 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
8112 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
8113 (old_ints): Removed.
8114
8115 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
8116 critical section.
8117 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
8118 SCM_ALLOW_INTS.
8119
8120 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8121
8122 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
8123 Removed accidental #if 0 around these functions.
8124
8125 These changes are the start of support for preemptive
8126 multithreading. Marius and I have agreed that I commit this code
8127 into the repository although it isn't thoroughly tested and surely
8128 introduces many bugs. The bugs should only be exposed when using
8129 threads, though. Signalling and error handling for threads is
8130 very likely broken. Work on making the implementation cleaner and
8131 more efficient is needed.
8132
8133 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
8134 (SCM_NONREC_CRITICAL_SECTION_START,
8135 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
8136 SCM_REC_CRITICAL_SECTION_END): New macros.
8137 (SCM_CRITICAL_SECTION_START/END): Defined here.
8138
8139 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
8140 the three calls to scm_m_expand_body.
8141
8142 * gc.h: #include "libguile/pthread-threads.h";
8143 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
8144
8145 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
8146 scm_t_key;
8147
8148 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
8149 access.
8150
8151 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
8152
8153 * gc-freelist.c, threads.c (really_launch): Use
8154 SCM_FREELIST_CREATE.
8155
8156 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
8157
8158 * gc.c (scm_i_expensive_validation_check, scm_gc,
8159 scm_gc_for_newcell): Put threads to sleep before doing GC-related
8160 heap administration so that those pieces of code are executed
8161 single-threaded. We might consider rewriting these code sections
8162 in terms of a "call_gc_code_singly_threaded" construct instead of
8163 calling the pair of scm_i_thread_put_to_sleep () and
8164 scm_i_thread_wake_up (). Also, we would want to have as many of
8165 these sections eleminated.
8166
8167 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
8168
8169 * inline.h: #include "libguile/threads.h"
8170
8171 * pthread-threads.h: Macros now conform more closely to the
8172 pthreads interface. Some of them now take a second argument.
8173
8174 * threads.c, threads.h: Many changes.
8175
8176 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8177
8178 * Makefile.am (version.h): Changed $^ --> $< in rule for
8179 version.h.
8180
8181 2002-12-08 Rob Browning <rlb@defaultvalue.org>
8182
8183 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
8184 (SCM_MINOR_VERSION): use @--@ substitution now.
8185 (SCM_MICRO_VERSION): use @--@ substitution now.
8186 (scm_effective_version): new function prototype.
8187
8188 * version.c (scm_effective_version): new function, also add
8189 effective-version.
8190
8191 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
8192 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
8193 SCM_LIBRARY_DIR.
8194 (version.h): generate this here rather than configure.in. This
8195 approach tracks source edits better (i.e. more immediately).
8196 Might be worth considering for other .in files too.
8197
8198 2002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
8199
8200 Reorganized thread package selection. A thread package now only
8201 implements a small set of pthread like functions and Guile
8202 implements the rest on top of that. Guile's implementation is
8203 what the "coop-pthreads" package has been previously. Support for
8204 "coop" threads has been removed until I get time to add it again.
8205
8206 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
8207 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
8208 null-threads.c, coop-pthreads.c.
8209 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
8210 pthread-threads.h.
8211
8212 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
8213
8214 * threads.h: Do not include "libguile/coop-defs.h". Include
8215 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
8216 (previously deprecated) C level thread API prototypes. They are
8217 now in the thread package specific headers, "null-threads.h" and
8218 "pthread-threads.h".
8219 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
8220 New.
8221 (scm_threads_init): Removed.
8222 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
8223 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
8224 SCM_I_THREAD_SWITCH_COUNT): Define here.
8225 (scm_single_thread_p): Removed.
8226 (scm_call_with_new_thread): Take two args directly instead of list
8227 of two args.
8228 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
8229 SCM_SET_THREAD_LOCAL_DATA): Define here.
8230
8231 * threads.c: Merged with "coop-pthreads.c".
8232
8233 * null-threads.h: Implement pthread-like API as a set of macros.
8234
8235 * pthread-threads.h: New, implement pthread-like API by deferring
8236 to pthread itself.
8237
8238 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
8239 has been lost in the reorganization.
8240
8241 2002-12-01 Mikael Djurfeldt <mdj@linnaeus>
8242
8243 The following change makes it possible to move procedure
8244 application dispatch outside inner loops. The motivation was
8245 clean implementation of efficient replacements of R5RS primitives
8246 in SRFI-1.
8247
8248 The semantics is clear: scm_trampoline_N returns an optimized
8249 version of scm_call_N (or NULL if the procedure isn't applicable
8250 on N args).
8251
8252 Applying the optimization to map and for-each increases efficiency
8253 noticeably. For example, (map abs ls) is 8 times faster than
8254 before.
8255
8256 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
8257
8258 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
8259
8260 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
8261 (map, for-each): Handle also application on two args as a special
8262 case; Use trampolines.
8263
8264 Other changes:
8265
8266 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
8267 (subr2oless): Removed.
8268 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
8269 vector GC protected.
8270
8271 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
8272 scm_out_of_range.
8273
8274 2002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8275
8276 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
8277
8278 2002-11-17 Mikael Djurfeldt <mdj@linnaeus>
8279
8280 * debug.c (scm_make_iloc): Added missing "return".
8281
8282 2002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
8283
8284 * strports.c (scm_eval_string_in_module): Validate second arg to
8285 be a module. Thanks to Arno Peters!
8286
8287 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8288
8289 * .cvsignore: remove goops.c
8290
8291 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8292
8293 * modules.c (scm_env_top_level, scm_lookup_closure_module,
8294 module_variable, scm_module_lookup_closure,
8295 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
8296 scm_system_module_env_p): Don't compare SCM values with C
8297 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
8298 over SCM_NFALSEP.
8299
8300 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8301
8302 * eval.h (SCM_MAKE_ILOC): New macro.
8303
8304 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
8305 the iloc bitpattern here.
8306
8307 2002-11-14 Mikael Djurfeldt <mdj@linnaeus>
8308
8309 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
8310 part of the API, otherwise it's difficult to write Guile
8311 extensions using non-blocking I/O => moved #include
8312 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
8313
8314 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
8315 s_unlock_mutex.
8316
8317 2002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
8318
8319 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
8320 are defined in configure.in.
8321
8322 * threads.c: Removed SCM_API from function definitions. SCM_API
8323 is only for declarations.
8324
8325 2002-11-07 Mikael Djurfeldt <mdj@linnaeus>
8326
8327 * coop-pthreads.h: Added support for thread specific data to the
8328 generic C API for the coop-pthreads case.
8329
8330 * threads.c, threads.h (scm_cond_init): Undo unintentional API
8331 change.
8332 (scm_cond_broadcast): Added missing function.
8333
8334 2002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8335
8336 * coop.c (coop_next_runnable_thread): Removed, wich should have
8337 happened when GUILE_ISELECT was hard-wired.
8338
8339 2002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
8340
8341 * Makefile.am (libguile_la_SOURCES): Added threads.c
8342 (DOT_DOC_FILES): Added threads.doc.
8343 (DOT_X_FILES): Added threads.x.
8344 (EXTRA_libguile_la_SOURCES): Removed threads.c.
8345 (noinst_HEADERS): Added coop-pthreads.c.
8346 (modinclude_HEADERS): Added coop-pthreads.h.
8347
8348 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
8349 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
8350
8351 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
8352 Thanks to Bill Schottstaedt!
8353
8354 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
8355
8356 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
8357 SCM_COPT_THREADS is defined.
8358 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
8359 is defined.
8360
8361 * coop-pthreads.c: Some harmless renamings of internal stuff.
8362 (create_thread): New, generalized version of
8363 scm_call_with_new_thread.
8364 (scm_call_with_new_thread): Use it.
8365 (scm_spawn_thread): New, use create_thread.
8366
8367 2002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
8368
8369 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
8370 start testing it now.
8371
8372 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
8373 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
8374 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
8375 is defined.
8376
8377 2002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
8378
8379 * scmsigs.c (signal_cell_handlers, install_handler_data,
8380 scm_delq_spine_x, really_install_handler, install_handler): New
8381 scheme for triggering signal handlers, to simplify take_signal.
8382 (take_signal): Simplified, to avoid race conditions.
8383 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
8384 hasn't exited yet.
8385
8386 * async.c (scm_async_click): Reset pending_asyncs, handle
8387 signal_asyncs. Don't set cdr of a non-signal async to #f.
8388 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
8389 always. Set pending_asyncs.
8390 (scm_system_async_mark_for_thread): Check that thread has not
8391 exited.
8392 (scm_unmask_signals, decrease_block): Call scm_async_click after
8393 block_asyncs becomes zero.
8394
8395 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
8396 active_asyncs.
8397
8398 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
8399 fields.
8400 * root.c (root_mark): Mark them.
8401 (make_root): Initialize them.
8402
8403 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
8404 USE_COOP_THREADS.
8405 (scm_internal_select): Define one version for USE_COOP_THREADS and
8406 one for USE_NULL_THREADS.
8407 (scm_init_iselect): Likewise.
8408
8409 * inline.h (scm_cell, scm_double_cell): Also allow
8410 USE_COPT_THREADS to not protect the slot initializers.
8411
8412 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
8413 because threads need to be initialized before the stack, but
8414 gsubrs such as scm_timed_condition_variable_wait can only be
8415 created later.
8416
8417 * threads.h: Include "coop-pthreads.h" when requested.
8418 (scm_threads_make_mutex, scm_threads_lock_mutex,
8419 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
8420 not implemented anyway.
8421 (scm_init_thread_procs, scm_try_mutex,
8422 scm_timed_condition_variable_wait,
8423 scm_broadcast_condition_variable, scm_c_thread_exited_p,
8424 scm_thread_exited_p): New prototypes.
8425 (struct timespec): Define if not already defined.
8426 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8427 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8428 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8429 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
8430 deprecated.
8431
8432 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
8433 requested.
8434 (scm_thread_exited_p): New.
8435 (scm_try_mutex, scm_broadcast_condition_variable): Newly
8436 registered procedures.
8437 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
8438 Use the latter as the procedure for "wait-condition-variable",
8439 thus offering a optional timeout parameter to Scheme.
8440 (scm_wait_condition_variable): Implement in terms of
8441 scm_timed_wait_condition_variable.
8442 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8443 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
8444 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8445 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
8446 scm_make_mutex, etc, and deprecate.
8447 (scm_init_threads): Do not create smobs, leave this to
8448 scm_threads_init. Do not include "threads.x" file.
8449 (scm_init_thread_procs): New, include "threads.x" here.
8450
8451 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
8452 scm_null_mutex_lock, scm_null_mutex_unlock,
8453 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
8454 scm_null_condvar_wait, scm_null_condvar_signal,
8455 scm_null_condvar_destroy): Removed.
8456 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
8457 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
8458 scm_cond_destory): Do not define, they are now deprecated and
8459 handled by threads.{h,c}.
8460
8461 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
8462 (scm_threads_init): Create smobs here, using the appropriate
8463 sizes.
8464 (block): Removed, now unused.
8465 (scm_c_thread_exited_p): New.
8466 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
8467 scm_null_mutex_destroy, scm_null_condvar_init,
8468 scm_null_condvar_wait, scm_null_condvar_signal,
8469 scm_null_condvar_destroy): Removed and updated users to do their
8470 task directly.
8471 (scm_try_mutex, timeval_subtract,
8472 scm_timed_wait_condition_variable,
8473 scm_broadcast_condition_variable): New.
8474 (scm_wait_condition_variable): Removed.
8475
8476 * coop-defs.h (coop_m): Added 'level' field.
8477 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8478 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8479 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8480 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
8481 define.
8482 (coop_condition_variable_broadcast): New.
8483
8484 * coop-threads.c (scm_threads_init): Create smobs here, using the
8485 appropriate sizes.
8486 (scm_c_thread_exited_p, scm_try_mutex,
8487 scm_timed_wait_condition_variable,
8488 scm_broadcast_condition_variable): New.
8489 (scm_wait_condition_variable): Removed.
8490
8491 * coop.c (coop_new_mutex_init): Initialize level.
8492 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
8493 level.
8494 (coop_condition_variable_signal): Renamed to
8495 coop_condition_variable_broadcast and reimplemented in terms of
8496 that. Thus...
8497 (coop_condition_variable_broadcast): New.
8498
8499 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
8500
8501 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
8502
8503 2002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
8504
8505 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
8506 of system headers.
8507
8508 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
8509 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
8510 give better error messages. Thanks to Bill Schottstaedt!
8511
8512 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8513
8514 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
8515 scm_definedp to scm_defined_p and deprecated scm_definedp.
8516
8517 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8518
8519 * async.h, async.c (scm_system_async): Fixed deprecation to work
8520 correctly when deprecated features are excluded.
8521
8522 2002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8523
8524 * async.c (scm_system_async_mark_for_thread): Validate thread
8525 argument.
8526
8527 * coop-threads.c (scm_i_thread_root): Do not validate argument.
8528
8529 * feature.c (scm_init_feature): Don't add 'threads' for
8530 USE_NULL_THREADS.
8531
8532 * inline.h (scm_cell, scm_double_cell): Also allow
8533 USE_NULL_THREADS to not protect the slot initializers.
8534
8535 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
8536 "USE_THREAD".
8537
8538 * Makefile.am (noinst_HEADERS): Added null-threads.c.
8539 (modinclude_HEADERS): Added null-threads.h.
8540
8541 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
8542 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
8543 (scm_init_threads): Use generic type names scm_t_mutex and
8544 scm_t_cond instead of coop_m and coop_c.
8545
8546 * null-threads.c, null-threads.h: New files.
8547
8548 2002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
8549
8550 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
8551 This is to support makes that know about "$<" only in pattern
8552 rules, like Sun's make.
8553
8554 2002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
8555
8556 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
8557 substitution. Thanks to David Allouche!
8558
8559 2002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8560
8561 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
8562 !SCM_ENABLE_DEPRECATED.
8563
8564 2002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8565
8566 * async.c (scm_system_async_mark_for_thread): Only call
8567 scm_i_thread_root when USE_THREADS is defined. Use scm_root
8568 otherwise.
8569
8570 * scmsigs.c (take_signal): Only call scm_i_thread_root when
8571 USE_THREADS is defined. Use scm_root otherwise.
8572 (scm_sigaction_for_thread): Ignore THREAD argument when
8573 USE_THREADS is not defined. Also, move THREAD argument defaulting
8574 out of HAVE_SIGACTION section, which was a bug.
8575
8576 2002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8577
8578 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
8579 signal_handlers, not the closure that is used as the async.
8580 The closure is stored in signal_handler_cells, as previously.
8581
8582 2002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
8583
8584 * root.h (scm_root_state): Added 'block_async' slot.
8585 (scm_active_asyncs): Removed abbrev.
8586 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
8587
8588 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
8589 abbrev.
8590
8591 * async.h (scm_call_with_blocked_asyncs,
8592 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8593 scm_c_call_with_unblocked_asyncs): New prototypes.
8594 (scm_mask_signals, scm_unmask_signals): Deprecated.
8595 (scm_mask_ints): Turned into a macro.
8596 * async.c (scm_mask_ints): Removed.
8597 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
8598 this should not be necessary.
8599 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
8600 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
8601 deprecation warning and check for errornous use. Set block_asyncs
8602 instead of scm_mask_ints.
8603 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
8604 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8605 scm_c_call_with_unblocked_asyncs): New.
8606
8607 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
8608 Asyncs are enabled by default.
8609
8610 2002-10-09 Neil Jerram <neil@ossau.uklinux.net>
8611
8612 * vports.c (scm_make_soft_port): Allow vector argument to carry a
8613 6th element: an input waiting thunk.
8614 (sf_input_waiting): New.
8615
8616 2002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
8617
8618 * root.c (root_mark): Mark active_asyncs slot.
8619
8620 * async.c (scm_async_click): Set the cdr of a executed handler
8621 cell to SCM_BOOL_F, not SCM_EOL.
8622 (scm_i_queue_async_cell): Queue the cell at the end of the list,
8623 and only if the handler procedure is not already present.
8624 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
8625 with SCM_BOOL_F.
8626 * scmsigs.c (scm_sigaction_for_thread): Likewise.
8627
8628 2002-10-04 Rob Browning <rlb@defaultvalue.org>
8629
8630 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
8631
8632 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
8633 scm_lt_dlopenext, and scm_lt_dlerror.
8634 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
8635 and scm_lt_dlerror.
8636 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
8637 and scm_lt_dlerror.
8638 (sysdep_dynl_init): switch to scm_lt_dlinit();
8639
8640 * Makefile.am (libguile_la_LIBADD): switch to use
8641 libguile-ltdl.la.
8642
8643 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
8644
8645 2002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
8646
8647 * scmsigs.h (scm_sigaction_for_thread): New prototype.
8648 * scmsigs.c (got_signal): Removed.
8649 (signal_handler_cells, signal_handler_threads): New.
8650 (take_signal): Queue the cell of the signal for the specified
8651 thread. Reset the signal handler on systems that don't have
8652 sigaction.
8653 (sys_deliver_signals): Removed.
8654 (close_1): New.
8655 (scm_sigaction_for_thread): Renamed from scm_sigaction and
8656 extended to also set the thread of a signal and allocate a cell
8657 for it. Keep the Scheme name "sigaction". Check that signum is
8658 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
8659 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
8660 (scm_init_scmsigs): Allocate signal_handler_cells and
8661 signal_handler_threads vectors.
8662
8663 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
8664 that system asnycs and user asyncs are separated. Reimplemented
8665 system asyncs to work per-thread.
8666
8667 * gc.c (scm_init_gc): Do not use scm_system_async.
8668
8669 * async.h (scm_asyncs_pending, scm_set_tick_rate,
8670 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
8671 Removed prototypes.
8672 (scm_i_queue_async_cell): New.
8673
8674 * __scm.h (scm_asyncs_pending_p): Removed.
8675 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
8676 scm_asyncs_pending_p.
8677
8678 * async.h (scm_system_async_mark_for_thread): New prototype.
8679
8680 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
8681
8682 * root.h (scm_root_state): Added new "active_asyncs" slot.
8683 * root.c (scm_make_root): Initialize it to SCM_EOL.
8684
8685 * coop-defs.h (coop_t): Added new "handle" slot.
8686 * coop-threads.c (all_threads, scm_current_thread,
8687 scm_all_threads, scm_i_thread_root): New.
8688 (scm_threads_init): Add main thread to all_threads.
8689 (scheme_launch_thread): Remove thread from all_threads when it
8690 terminates.
8691 (scm_call_with_new_thread): Initialize handle slot of coop_t
8692 structure and add new thread to all_threads.
8693 (scm_spawn_thread): Likewise.
8694
8695 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
8696 * threads.c (scm_current_thread, scm_all_threads): Register as
8697 primitives.
8698
8699 * dynl.c: Use scm_lt_ prefix for libltdl functions.
8700
8701 2002-09-29 Neil Jerram <neil@ossau.uklinux.net>
8702
8703 * script.c (scm_compile_shell_switches): Fix bad spelling of
8704 `explicitly' in comment.
8705
8706 2002-09-28 Neil Jerram <neil@ossau.uklinux.net>
8707
8708 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
8709 Refer to provided? in doc string rather than deprecated feature?.
8710
8711 2002-09-24 Gary Houston <ghouston@arglist.com>
8712
8713 * inline.h (scm_double_cell): prevent reordering of statements
8714 with any following code (for GCC 3 strict-aliasing).
8715 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8716 the earlier version of the reordering prevention.
8717
8718 2002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8719
8720 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
8721
8722 2002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8723
8724 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8725 protection.
8726
8727 2002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8728
8729 * inline.h: include stdio.h
8730
8731 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8732
8733 2002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8734
8735 * gc-segment.c (scm_i_make_initial_segment): check user settings
8736 for sanity.
8737
8738 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8739 sanity.
8740
8741 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
8742
8743 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8744
8745 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
8746 these won't ever wrap around with high memory usage. Thanks to
8747 Sven Hartrumpf for finding this.
8748
8749 * gc-freelist.c: include <stdio.h>
8750
8751 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8752
8753 2002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8754
8755 * vectors.h (SCM_VECTOR_REF): New.
8756
8757 * snarf.h (SCM_DEFINE_PUBLIC): New.
8758
8759 2002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8760
8761 * socket.c (scm_addr_vector): Added size of address to arguments.
8762 Use it to avoid accessing a non-existent path in a sockaddr_un.
8763 Changed all callers.
8764
8765 2002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8766
8767 * gc.h: remove DOUBLECELL card flags.
8768
8769 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8770 scm_realloc().
8771
8772 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8773 init loop; handle this from scm_init_card_freelist()
8774
8775 * gc-card.c (scm_init_card_freelist): init bit vector here.
8776
8777 * numbers.c (scm_make_real): prevent reordering of statements
8778 num2float.i.c (FLOAT2NUM): idem
8779
8780 2002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8781
8782 * eval.h: prepend libguile/ to include path
8783
8784 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8785
8786 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
8787 years. Thanks to Martin Grabmüller!
8788
8789 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8790
8791 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8792 unsigned numbers for computing minimum heap increment. This
8793 prevents weird results when a a negative minimum increment is
8794 computed.
8795
8796 2002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8797
8798 * gc_os_dep.c: When we have __libc_stack_end, use that directly
8799 instead of the old tricks.
8800
8801 * guile-snarf.in: Do not expect the input file to be the first
8802 argument after the optional "-o" option, just pass everything to
8803 the pre-processor without extracting the input file name.
8804
8805 2002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8806
8807 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
8808 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
8809
8810 2002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8811
8812 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8813 Bill Schottstaedt for the bug report
8814
8815 2002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8816
8817 * print.c (scm_iprin1): Print primitives generics always as
8818 "primitive-generic" even when they have no primitive methods yet.
8819
8820 2002-08-17 Gary Houston <ghouston@arglist.com>
8821
8822 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8823 call.
8824
8825 2002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8826
8827 * ports.c (scm_add_to_port_table): small bugfix.
8828
8829 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8830 malloc.
8831
8832 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8833 only use SCM_MIN_HEAP_SEG_SIZE.
8834
8835 * ports.c (scm_add_to_port_table): add backwards compatibility
8836 function
8837
8838 * ports.h: use scm_i_ prefix for port table and port table size.
8839
8840 2002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8841
8842 * vports.c (scm_make_soft_port): Initialize pt variable.
8843
8844 2002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8845
8846 * strports.h (scm_c_eval_string_in_module,
8847 scm_eval_string_in_module): New prototypes.
8848 * strports.c (scm_eval_string_in_module): New, but use
8849 "eval-string" as the Scheme name and make second parameter
8850 optional.
8851 (scm_eval_string): Implement using scm_eval_string_in_module.
8852 (scm_c_eval_string_in_module): New.
8853 Thanks to Ralf Mattes for the suggestion!
8854
8855 2002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8856
8857 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8858 message and abort.
8859
8860 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8861
8862 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8863 stead of scm_t_port*. The function now takes a tag argument.
8864
8865 2002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8866
8867 * gc.h: add scm_debug_cells_gc_interval to public interface
8868
8869 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8870
8871 * gc.c (scm_i_expensive_validation_check): separate expensive
8872 validation checks from cheap ones.
8873
8874 2002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8875
8876 * read.c (scm_input_error): new function: give meaningful error
8877 messages, and throw read-error
8878
8879 * gc-malloc.c (scm_calloc): add scm_calloc.
8880
8881 2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8882
8883 * tags.h: remove GC bits documentation from the tags table.
8884
8885 * read.c (INPUT_ERROR): Prepare for file:line:column error
8886 messages for errors in scm_lreadr() and friends.
8887
8888 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8889
8890 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
8891 implementation).
8892 (scm_gc_calloc): new function
8893
8894 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8895
8896 * ports.c (scm_new_port_table_entry): init port entry to 0
8897 completely.
8898
8899 * ports.c (scm_new_port_table_entry): change function from
8900 scm_add_to_port_table. This prevents cells with null-pointers from
8901 being exposed to GC.
8902
8903 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
8904 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
8905
8906 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
8907 to gc-stats.
8908
8909 * numbers.c (big2str): return "0" for 0 iso. ""
8910
8911 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8912 private-gc.h: new file
8913
8914 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8915 sweeping. More documentation in workbook/newgc.text
8916
8917 2002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8918
8919 * random.c (rstate_free): Return zero.
8920
8921 2002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8922
8923 * environments.c (remove_key_from_alist): Removed.
8924
8925 (obarray_remove): Simplified.
8926
8927 2002-07-24 Stefan Jahn <stefan@lkcc.org>
8928
8929 * continuations.h: ia64: Include <signal.h> before
8930 <sys/ucontext.h>.
8931
8932 2002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8933
8934 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8935
8936 2002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8937
8938 * goops.c (scm_compute_applicable_methods): use
8939 scm_remember_upto_here_1 iso scm_remember_upto_here
8940
8941 * macros.c: include deprecation.h
8942
8943 * vectors.c (scm_vector_move_right_x): remove side effect in
8944 macro arg.
8945 (scm_vector_move_left_x): idem.
8946
8947 * net_db.c, posix.c, socket.c: variable naming: change ans to
8948 result.
8949
8950 * sort.c (scm_merge_vector_x): accept vector as argument
8951 iso. SCM*. This is needed for full GC correctness.
8952
8953 * gc.h: undo previous undocumented changes related to #ifdef
8954 GENGC.
8955
8956 2002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8957
8958 * *.c: add space after commas everywhere.
8959
8960 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8961 Document cases where SCM_WRITABLE_VELTS() is used.
8962
8963 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8964 SCM_VELTS() return a const pointer
8965 (SCM_VECTOR_SET): add macro.
8966
8967 2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8968
8969 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8970 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8971 Deprecated the special kind of built-in dynamic syntax transformer
8972 that was inaccurately named "macro". Note: The built-in syntax
8973 transformers that are named "mmacro" or "memoizing-macro" still
8974 exist, and it is these which come much closer to what one would
8975 call a macro.
8976
8977 2002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8978
8979 * eval.c (unmemocopy): Fix for
8980 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8981 with internal definitions and local-eval).
8982
8983 2002-07-12 Gary Houston <ghouston@arglist.com>
8984
8985 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8986 defined. They don't do anything useful, especially since the
8987 only case where DYNAMIC_LINKING is undefined seems to be
8988 when --with-modules=no is given to configure, which is basically
8989 requesting that the "dynamic linking module" be omitted.
8990
8991 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8992 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8993
8994 * extensions.c (load_extension): check DYNAMIC_LINKING for
8995 scm_dynamic_call.
8996 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8997 scm_init_dynamic_linking.
8998
8999 2002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
9000
9001 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
9002 check for Cygwin when including <winsock2.h>, this is already
9003 check for by configure. Thus, revert change from 2002-07-07.
9004
9005 2002-07-10 Gary Houston <ghouston@arglist.com>
9006
9007 * eq.c: include <string.h>
9008 * dynl.c: docstring editing.
9009
9010 2002-07-09 Gary Houston <ghouston@arglist.com>
9011
9012 * dynl.c (scm_dynamic_call): docstring editing.
9013
9014 2002-07-08 Rob Browning <rlb@defaultvalue.org>
9015
9016 * gc_os_dep.c: HURD fixes.
9017
9018 2002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
9019
9020 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
9021
9022 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
9023 this should be compiled for BUILD host.
9024 Override default rule for
9025 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
9026 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
9027 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
9028
9029 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
9030 <winsock2.h> on Cygwin even when we have it.
9031
9032 2002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9033
9034 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
9035 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
9036 the code. Full number of arguments checking of closures is
9037 mandatory now. However, the option to disable the checking has
9038 most probably not been used anyway.
9039
9040 2002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
9041
9042 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
9043 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
9044 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
9045 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
9046 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
9047 (scm_source_properties, scm_set_source_properties_x,
9048 scm_source_property): Removed compile time option SCM_RECKLESS to
9049 clean up the code. Full number of arguments checking of closures
9050 is mandatory now. However, the option to disable the checking has
9051 most probably not been used anyway.
9052
9053 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
9054 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
9055
9056 2002-06-30 Gary Houston <ghouston@arglist.com>
9057
9058 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
9059 do anything useful. Added a comment about need for a mutex if
9060 pre-emptive threading is supported.
9061
9062 * posix.c (scm_convert_exec_args), dynl.c
9063 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
9064 allocate_string_pointers. 2) simplified: don't reallocate the
9065 strings, just make an array of pointers 3) avoid memory leaks on
9066 error 4) let the procedure report errors in its own name.
9067 Consequences: 1) the procedures now assume that SCM strings are
9068 nul-terminated, which should always be the case. 2) Since strings
9069 are not reallocated, it's now possible for strings passed to
9070 dynamic-args-call to be mutated.
9071
9072 2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9073
9074 * __scm.h, eval.c, eval.h: Removed compile time option
9075 MEMOIZE_LOCALS to clean up the code. Now, caching of local
9076 variable positions during memoization is mandatory. However, the
9077 option to disable the caching has most probably not been used
9078 anyway.
9079
9080 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
9081
9082 * print.c (scm_simple_format): Print missing part of format before
9083 ~% control. Thanks to Daniel Skarda!
9084
9085 2002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
9086
9087 * mkstemp.c: Added exception notice to license statement.
9088
9089 2002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
9090
9091 * numbers.c (mem2ureal): When returning an inexact zero, make sure
9092 it is represented as a floating point value so that we can change
9093 its sign.
9094
9095 From John W. Eaton <jwe@bevo.che.wisc.edu>
9096
9097 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
9098
9099 2002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
9100
9101 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
9102 in addition to `i386'. Thanks to Dale P. Smith.
9103
9104 2002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
9105
9106 * eq.c (real_eqv): New.
9107 (scm_eqv_p): Use it when comparing reals and complexes.
9108
9109 * numbers.c: Include <string.h>, for strncmp.
9110 (mem2complex): Do not create negative NaNs.
9111 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
9112 NaN.
9113 (scm_inexact_to_exact): Signal error when converting a NaN.
9114
9115 2002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
9116
9117 * posix.c (scm_putenv): Handle removing variables explicitely by
9118 calling unsetenv.
9119
9120 From John W. Eaton.
9121
9122 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
9123 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
9124 and scm_nan.
9125 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
9126 [SCO && ! HAVE_ISINF] (isinf): New function.
9127 (xisinf, xisnan): New functions.
9128 (IS_INF): Delete.
9129 (isfinite): Define in terms of xisinf.
9130 (scm_inf_p, scm_nan_p): New functions.
9131 (guile_Inf, guile_NaN): New file-scope vars.
9132 (guile_ieee_init): New function.
9133 (scm_inf, scm_nan): New functions.
9134 (idbl2str): Handle Inf and NaN. Remove funny label and
9135 corresponding gotos.
9136 (ALLOW_DIVIDE_BY_ZERO): New macro.
9137 (scm_divide): Allow division by zero to occur if
9138 ALLOW_DIVIDE_BY_ZERO is defined.
9139 Handle bignums and ints as special cases.
9140
9141 Additional stuff by me:
9142
9143 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
9144 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
9145 (iflo2str): Don't output a '+' for negative numbers or for Inf and
9146 NaN. They will provide their own sign.
9147 (scm_divide): Only allow divides by inexact zeros. Dividing by
9148 exact zeros still signals an errors.
9149
9150 2002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
9151
9152 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
9153 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
9154 (scm_slot_exists_p): Rename from scm_slots_exists_p.
9155 Thanks to Andreas Rottmann.
9156
9157 2002-04-20 Gary Houston <ghouston@arglist.com>
9158
9159 * removal of unused fields in root state (thanks to Christopher
9160 Cramer for pointing out the disuse.)
9161 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
9162 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
9163
9164 * root.c (root_mark): don't mark them.
9165 (scm_make_root): don't set them to #f.
9166 * init.c (scm_init_standard_ports): don't initialise with the
9167 default ports.
9168
9169 2002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
9170
9171 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
9172 cpp_sig_symbols.c.
9173
9174 2002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
9175
9176 * guile-snarf.in: Do not clean input file. This would write to
9177 the $(srcdir) during a VPATH build, which is not allowed. It also
9178 isn't needed since it only works when an output filename has been
9179 specified and in that case we don't need to clean the input file
9180 because the output file will already exist.
9181
9182 2002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
9183
9184 * guile-snarf: Install the trap for removing $cleanfile only when
9185 the value of $cleanfile is actually known.
9186
9187 2002-04-10 Rob Browning <rlb@defaultvalue.org>
9188
9189 * .cvsignore: add versiondat.h and *.c.clean.c.
9190
9191 2002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
9192
9193 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
9194 function, replaces macro SRCBRKP.
9195
9196 (SRCBRKP): Deprecated.
9197
9198 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
9199 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
9200 temporary variable.
9201
9202 2002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9203
9204 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
9205 CHECK_EXIT and removed all references to them.
9206
9207 2002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
9208
9209 * debug.h (scm_ready_p, debug_print): Removed declarations.
9210
9211 * eval.c (EVALCELLCAR): Removed.
9212
9213 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
9214 operation from condition.
9215
9216 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
9217
9218 * guile-snarf.in: When the output filename is "-", write to
9219 stdout. When no "-o" option is given, use "-" as the output
9220 filename (i.e., stdout). Only 'clean' the inputfile or remove the
9221 output file on error when the output file name is not "-". Define
9222 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
9223
9224 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
9225
9226 2002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
9227
9228 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
9229 and the corresponding goto statements. Removed redundant code.
9230
9231 2002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
9232
9233 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
9234 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
9235 Re-enabled handing of rpsubrs and asubrs.
9236
9237 2002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
9238
9239 * eval.c (SIDEVAL): Removed.
9240
9241 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
9242 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
9243 argument checking order for set! to locals, variables and symbols.
9244 Improvements to control structure. Removed some uses of arg1 and
9245 arg2 as temporary variables.
9246
9247 2002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
9248
9249 * guile-snarf.in: Remove "--compat=1.4" support.
9250 Add "-d" and "-D" support.
9251
9252 (deprecated_list): New var.
9253 (compat_mode_clean_xxx): Delete.
9254 (grep_deprecated): New func.
9255 ("main"): If "-d" or "-D", call `grep_deprecated'.
9256
9257 2002-03-15 Neil Jerram <neil@ossau.uklinux.net>
9258
9259 * hooks.h: Change scm_t_c_hookype_t everywhere to
9260 scm_t_c_hook_type.
9261
9262 Docstring fixes:
9263
9264 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
9265
9266 * ports.c (scm_sys_make_void_port): Use `@file'.
9267
9268 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
9269 than `else'.
9270
9271 * macros.c (scm_makmacro): Don't say that the form replaces its
9272 source, because it doesn't.
9273 (scm_makmmacro): Clarify difference between this and scm_makmacro.
9274
9275 * backtrace.c (scm_display_error), filesys.c (scm_umask,
9276 scm_select, scm_basename), goops.c (scm_method_generic_function),
9277 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
9278 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
9279 spelling mistakes.
9280
9281 * debug.c (scm_debug_options), eval.c
9282 (scm_eval_options_interface), read.c (scm_read_options): Change
9283 incorrect @var in docstring to @code.
9284
9285 2002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
9286
9287 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
9288
9289 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
9290 guile-snarf can remove trailing non-init code.
9291
9292 * guile-snarf.in (modern_snarf): Remove everything following and
9293 including "^:^" from the output.
9294
9295 2002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9296
9297 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
9298
9299 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
9300
9301 2002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
9302
9303 * guile-snarf.in: Update copyright.
9304 Rewrite to internalize error handling.
9305 Add "--compat=1.4" handling.
9306 Add commentary.
9307
9308 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
9309 (snarfcppopts): New var.
9310 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
9311 (.c.doc): Use $(snarfcppopts).
9312
9313 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
9314 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
9315 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
9316 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
9317 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
9318 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
9319 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
9320 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
9321 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
9322 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
9323 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
9324 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
9325 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
9326 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
9327
9328 2002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9329
9330 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
9331 The next step will be to remove the union 't' and simplify the
9332 code of SCM_CEVAL that way.
9333
9334 2002-03-12 Neil Jerram <neil@ossau.uklinux.net>
9335
9336 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
9337 rreadfds, rwritefds, rexceptfds): Made static.
9338
9339 * gc.c (terminating), fports.c (terminating): Renamed
9340 scm_i_terminating.
9341
9342 2002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
9343
9344 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
9345 potential overflow problems. Thanks to John W Eaton!
9346
9347 * strop.c (string_capitalize_x): Treat characters as unsigned so
9348 that 8-bit chars work. Thanks to David Pirotte!
9349
9350 2002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9351
9352 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
9353 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
9354 proc as temporary variables. Introduced temporary variables with
9355 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9356 by a more explicit predicate in some places.
9357
9358 2002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
9359
9360 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
9361 Added lots of comments regarding the implementation of #@dispatch.
9362 Changed intra-procedure communication to use t.arg1 instead of
9363 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
9364 variables. Introduced temporary variables with hopefully
9365 descriptive names for clarification. Replaced SCM_N?IMP by a more
9366 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
9367 of computing the expression explicitly. Eliminate now unused
9368 label nontoplevel_cdrxbegin.
9369
9370 * goops.h (SCM_INSTANCE_HASH): New macro.
9371
9372 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
9373
9374 2002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9375
9376 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
9377 "guile-snarf" moved back from `noinst_SCRIPTS'.
9378
9379 2002-03-08 Neil Jerram <neil@ossau.uklinux.net>
9380
9381 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
9382 exists when adding a source property other than those that are
9383 handled explicitly, add the new property to the SRCPROPS obj's
9384 plist.
9385
9386 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
9387 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
9388
9389 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
9390 debug.status. It isn't needed, and it can overflow the bits
9391 reserved for it (which may lead to a segv or a GC abort).
9392
9393 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9394
9395 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
9396 side-effecting operations from conditions and macro calls.
9397 Replaced SCM_N?IMP by a more explicit predicate in some places.
9398 Minimized the scope of some variables.
9399
9400 2002-03-02 Stefan Jahn <stefan@lkcc.org>
9401
9402 * convert.i.c: Fixed int <-> long conversions which would have
9403 failed if their sizes were different.
9404
9405 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9406
9407 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
9408 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
9409 as temporary variables. Removed side-effecting operations from
9410 conditions and macro calls. Introduced temporary variables with
9411 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9412 by a more explicit predicate in some places. Removed code that
9413 was conditionally compiled if SICP was defined - which it never
9414 is.
9415
9416 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9417
9418 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
9419 Removed some uses of t.arg1 and proc as temporary variables.
9420 Removed side-effecting operations from conditions and macro calls.
9421 Introduced temporary variables with hopefully descriptive names
9422 for clarification. Replaced SCM_N?IMP by a more explicit
9423 predicate in some places.
9424
9425 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9426
9427 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
9428 explicit predicate in some places.
9429
9430 (CHECK_EQVISH): Removed.
9431
9432 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
9433 variables. Removed side-effecting operations from conditions and
9434 macro calls. Introduced temporary variables for clarification.
9435 Sorted if-else-if check for the type of the last form in a list by
9436 frequency. Avoided some unnecessary tail-recursion calls.
9437
9438 2002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9439
9440 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
9441 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
9442 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
9443 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
9444 scm_cell and all its uses to scm_t_cell in accordance to Guile's
9445 naming scheme for types.
9446
9447 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
9448 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
9449 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
9450 (scm_make_environment), eval.c (scm_closure), fports.c
9451 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
9452 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
9453 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
9454 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
9455 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
9456 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
9457 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
9458 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
9459 scm_alloc_cell to scm_cell.
9460
9461 * environments.c (core_environments_observe), gc.c
9462 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
9463 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
9464 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
9465 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
9466 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
9467 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
9468 (allocate_weak_vector): Renamed scm_alloc_double_cell to
9469 scm_double_cell.
9470
9471 2002-02-27 Stefan Jahn <stefan@lkcc.org>
9472
9473 * convert.i.c, convert.c: Better range checking.
9474
9475 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
9476
9477 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
9478 Windows (MinGW).
9479
9480 2002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
9481
9482 * Makefile.am: Update path to pre-inst-guile automake frag.
9483
9484 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9485
9486 * gc.c (scm_gc_sweep): Make it compile even when deprecated
9487 features are excluded.
9488
9489 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9490
9491 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
9492
9493 2002-02-25 Gary Houston <ghouston@arglist.com>
9494
9495 * convert.c: include <string.h> for convert_i.c.
9496
9497 2002-02-24 Rob Browning <rlb@defaultvalue.org>
9498
9499 * .cvsignore: add stamp-h1.
9500
9501 2002-02-21 Neil Jerram <neil@ossau.uklinux.net>
9502
9503 * unif.c (scm_array_to_list): Correct name, which had been
9504 accidentally changed to scm_t_arrayo_list!
9505
9506 2002-02-20 Mikael Djurfeldt <mdj@linnaeus>
9507
9508 * gc.c (scm_gc_sweep): Print an error message when aborting due to
9509 underflowing scm_mallocated.
9510
9511 2002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9512
9513 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
9514 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
9515 Reimplemented using the new scm_gc_malloc, etc., functions and
9516 deprecated.
9517
9518 2002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
9519
9520 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
9521 to `noinst_PROGRAMS'.
9522 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
9523 (noinst_PROGRAMS, noinst_SCRIPTS): New.
9524
9525 2002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9526
9527 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
9528 non-zero is returned from a port or smob free function.
9529 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
9530 scm_gc_register_collectable_memory,
9531 scm_gc_unregister_collectable_memory, scm_gc_malloc,
9532 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
9533
9534 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
9535 debug-malloc.c, dynl.c, environments.c, environments.h,
9536 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
9537 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
9538 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
9539 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
9540 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
9541 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
9542 appropriate. Return zero from smob and port free functions.
9543
9544 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
9545
9546 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
9547 messages while the GC is running.
9548 (scm_c_issue_deprecation_warning_fmt): New.
9549
9550 * fports.c (scm_setvbuf): Reset read buffer to saved values when
9551 it is pointing to the putback buffer.
9552
9553 2002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9554
9555 * gsubr.c (create_gsubr): On "too many args" error,
9556 also display arg count and name. Thanks to Bill Schottstaedt.
9557
9558 2002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
9559
9560 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
9561
9562 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
9563 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
9564 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
9565
9566 * guile-snarf-docs-texi.in: Bye bye.
9567
9568 2002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9569
9570 * symbols.c (scm_make_symbol): Fix typo in docstring.
9571
9572 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9573 scm_make_symbol): New prototypes.
9574
9575 2002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
9576
9577 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
9578 (SCM_SYMBOL_INTERNED_P): New.
9579 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
9580 SCM_MAKINUM since hash values can well be bignums.
9581 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
9582 This signals a interned symbol.
9583 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9584 scm_make_symbol): New.
9585
9586 * print.c (scm_iprin1): Print uninterned symbols unreadably.
9587
9588 2002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
9589
9590 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
9591 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
9592 Thanks to Dave Love.
9593
9594 2002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
9595
9596 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
9597 This might help to make unintended clashes less likely.
9598 (scm_string_to_symbol): Protect the string until the symbols is
9599 created.
9600
9601 2002-01-31 Stefan Jahn <stefan@lkcc.org>
9602
9603 * convert.c, convert.h, convert.i.c: New files containing C
9604 array to Scheme conversion helpers meant to be replacement
9605 functions for the deprecated gh interface.
9606
9607 * Makefile.am: Setup rules for new `convert.*' files.
9608
9609 2002-01-28 Stefan Jahn <stefan@lkcc.org>
9610
9611 * symbols.c (scm_c_symbol2str): New function, replacement for
9612 `gh_scm2newsymbol()'.
9613
9614 * strings.c (scm_c_substring2str): New function. Proper
9615 replacement for `gh_get_substr()'.
9616
9617 * socket.c: Include `stdint.h' if available for the `uint32_t'
9618 declaration.
9619
9620 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
9621 compiler warning).
9622
9623 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
9624
9625 2002-01-22 Neil Jerram <neil@ossau.uklinux.net>
9626
9627 Other changes unrelated to Elisp...
9628
9629 * eval.c (scm_m_if): Use s_if rather than repeating string literal
9630 "if".
9631 (comments): Fix a few typos.
9632 (scm_for_each): Add parentheses around oddly unparenthesized
9633 if/while conditions.
9634
9635 * read.c (scm_read_opts): Add full stop at end of doc for
9636 `keywords' option.
9637
9638 * script.c (scm_compile_shell_switches): Use scm_str2symbol
9639 instead of gh_symbol2scm.
9640
9641 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
9642 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
9643
9644 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
9645 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
9646
9647 First batch of changes for Elisp support...
9648
9649 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
9650 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
9651 throw.c, vectors.c, weaks.c: Add #include for lang.h.
9652
9653 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
9654 conditionalize compilation and initialization of Elisp support
9655 function.
9656
9657 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
9658 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
9659 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
9660 filesys.c (fill_select_type, retrieve_select_type), fluids.c
9661 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
9662 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
9663 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
9664 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
9665 options.c (change_option_setting, scm_options), posix.c
9666 (environ_list_to_c), print.c (scm_iprlist), throw.c
9667 (scm_exit_status), vectors.c (scm_vector), weaks.c
9668 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
9669
9670 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
9671 just SCM_FALSEP.
9672
9673 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
9674 of just SCM_BOOLP.
9675
9676 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
9677 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
9678 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
9679 (scm_m_atfop): Support function aliasing. Support both function
9680 args, which need transformation, and macro args, which do not.
9681 Add explanatory comments.
9682 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
9683 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
9684 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
9685 SCM_NULLP || SCM_NILP instead of checks against (removed)
9686 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
9687 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
9688
9689 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
9690 scm_m_while, scm_nil_eq): Commented out; I don't think we need
9691 these, but I don't want to remove them yet, just in case.
9692 (scm_init_lang): Define `%nil' variable on Scheme level to hold
9693 Elisp nil value.
9694
9695 * lang.h (SCM_NILP): Test against Elisp nil value instead of
9696 against (removed) scm_lisp_nil.
9697 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
9698 (SCM_NULL_OR_NIL_P): New.
9699
9700 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
9701 SCM_VALIDATE_NULL.
9702
9703 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
9704 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
9705 value).
9706
9707 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
9708 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
9709 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9710 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9711
9712 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9713 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9714 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9715 Numbering shifted down accordingly.
9716 (SCM_ELISP_NIL): New IFLAG.
9717
9718 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
9719
9720 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9721
9722 * eval.c: Removed outdated references to "everr". Improved some
9723 comments.
9724
9725 (scm_deval_args, deval_args): Renamed scm_deval_args to
9726 deval_args, since it is not part of the interface.
9727
9728 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9729 use references to debug.vect[0] before it exists. Add parentheses
9730 to switch statement.
9731
9732 * goops.h: Added local emacs variables.
9733
9734 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9735
9736 * eval.[ch] (scm_deval_args): Made static.
9737
9738 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9739 test.
9740
9741 * strings.c (scm_c_string2str): Clarified comment. Replaced
9742 THINKME by FIXME for uniformness. Removed question about whether
9743 arguments need to be protected from garbage collection: Arguments
9744 must be protected as any other variable.
9745
9746 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9747
9748 * procs.h (SCM_CLOSURE_BODY): New Macro.
9749
9750 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9751 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9752 get_slot_value, set_slot_value), procs.c
9753 (scm_procedure_documentation), sort.c (closureless), stacks.c
9754 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9755 SCM_CLOSURE_BODY.
9756
9757 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9758
9759 2001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9760
9761 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9762 use "cp" instead.
9763
9764 2001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9765
9766 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9767 everywhere.
9768
9769 * continuations.c (scm_make_continuation): Do not retain the
9770 throw_value when the continuation is invoked.
9771
9772 2001-12-08 Stefan Jahn <stefan@lkcc.org>
9773
9774 * strings.c (scm_c_string2str): New function. Converts a
9775 given Scheme string into a C string. Also put in two
9776 THINKME's regarding the malloc policy for the missing converter
9777 routines.
9778
9779 2001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9780
9781 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9782 gh_symbol2scm.
9783
9784 2001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9785
9786 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9787 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9788
9789 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9790 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9791 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9792 macros.
9793
9794 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9795
9796 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9797 SCM_GC_CELL_* macros when accessing free cells.
9798
9799 2001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9800
9801 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
9802 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
9803 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9804 * strings.h (SCM_MAKE_STRING_TAG): New.
9805 * procs.h (SCM_MAKE_CCLO_TAG): New.
9806 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9807
9808 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9809 !SCM_ENABLE_DEPRECATED.
9810
9811 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9812 New.
9813
9814 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9815 signal handlers are allowed to divert the flow of control. Call
9816 scm_system_async_mark_from_signal_handler instead of
9817 scm_system_async_mark.
9818
9819
9820 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9821 scm_alloc_double_cell in their place.
9822
9823 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9824 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9825 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9826 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9827 scm_deprecated_newcell and scm_deprecated_newcell2.
9828
9829 gc.c (scm_tc16_allocated): Only define when including deprecated
9830 features.
9831 (scm_debug_newcell, scm_debug_newcell2): Removed.
9832 (scm_init_storage): Do not initialize scm_tc16_allocated.
9833 (scm_init_gc): Do it here.
9834 (allocated_mark): New, from old code.
9835 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9836
9837 * inline.c, inline.h: New files.
9838 * Makefile.am: Added them in all the right places.
9839
9840 * _scm.h: Include "libguile/inline.h".
9841
9842 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9843 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9844 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9845 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9846 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9847 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9848 scm_alloc_double_cell, respectively.
9849
9850 2001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9851
9852 * modules.c (scm_c_use_module): Adapt to changes to
9853 `process-use-modules'.
9854
9855 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9856
9857 * numbers.c (scm_divide): Fix more division by zero errors.
9858
9859 2001-11-21 Gary Houston <ghouston@arglist.com>
9860
9861 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9862 obsolete. autogen.sh says:
9863 invalid unused variable name: `OMIT_DEPENDENCIES'
9864
9865 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9866
9867 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9868 reporting the bug.
9869
9870 2001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9871
9872 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9873 Thanks to Eric Gillespie, Jr!
9874
9875 2001-11-21 Stefan Jahn <stefan@lkcc.org>
9876
9877 * win32-socket.c (getservent, setservent, endservent,
9878 getprotoent, setprotoent, endprotoent): New functions.
9879 Appropriate replacements for M$-Windows.
9880
9881 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9882 these definitions for GUILE_DEBUG.
9883
9884 * net_db.c: Include "win32-socket.h" if compiling with a native
9885 M$-Windows compiler. Include some pieces of code (protoent and
9886 servent interface) protected by HAVE_* macros when using a
9887 native M$-Windows compiler.
9888
9889 2001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9890
9891 * modules.c (scm_c_export): Do nothing when the first argument is
9892 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9893
9894 2001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9895
9896 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9897 also include `buildstamp'.
9898
9899 2001-11-18 Rob Browning <rlb@defaultvalue.org>
9900
9901 * version.c
9902 (s_scm_major_version): use SCM_MAJOR_VERSION.
9903 (s_scm_minor_version): use SCM_MINOR_VERSION.
9904 (s_scm_micro_version): use SCM_MICRO_VERSION.
9905 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9906 SCM_MICRO_VERSION.
9907
9908 * version.h.in
9909 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9910 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9911 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9912
9913 2001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9914
9915 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9916 Rewrite docstrings without reference to substring-move-left/right,
9917 since the latter no longer exist.
9918
9919 2001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9920
9921 * eval.c: Removed bogus comment about acros.
9922
9923 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9924 Minimize scope of local variable. Eliminate dependency on
9925 macro DEBUG_EXTENSIONS.
9926
9927 (s_splicing): New error message string.
9928
9929 (scm_m_body): Issue 'bad body' message rather than 'missing
9930 expression' message.
9931
9932 (scm_m_quote): Eliminate unnecessary copying.
9933
9934 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9935 checking of the body to scm_m_body.
9936
9937 (scm_m_do): Move comment to function header. Rename arg1 to
9938 binding. Made the code a bit easier to read.
9939
9940 (evalcar): Removed.
9941
9942 (iqq): Added a comment. Changed the depth parameter to
9943 unsigned. Use size_t for vector lengths. Make sure vector object
9944 is gc protected as long as its contents are read. Add some syntax
9945 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9946 control structure a bit.
9947
9948 (scm_m_delay): Added comment about the implementation of
9949 scm_m_delay.
9950
9951 (scm_m_define): Add comment about guile's currying define
9952 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9953 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9954
9955 (scm_m_letrec1): Removed. Part of the functionality is taken
9956 over by the new function 'transform_bindings'.
9957
9958 (transform_bindings): New function. Takes over some of the
9959 functionality of removed function 'scm_m_letrec1', namely to split
9960 a list of bindings into a reversed list of variables and a list of
9961 initializers.
9962
9963 (scm_m_letrec): Call 'transform_bindings'.
9964
9965 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9966 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9967 test. Use 'transform_bindings'. Fixed scoping error with named
9968 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9969 Jerram for suggesting the fix). Cleaned up the control structure
9970 a bit.
9971
9972 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9973 unnecessary consing. Eliminated unnecessary
9974 SCM_DEFER/ALLOW_INTS.
9975
9976 (SCM_CEVAL): Un-obfuscated some loops.
9977
9978 2001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9979
9980 * gc.h (scm_unhash_name): Old declaration removed.
9981
9982 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9983 @code{primitive-eval}.
9984
9985 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9986 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9987 Change @deffnx lines in docstrings to say {Scheme Procedure}
9988 rather than primitive or procedure.
9989
9990 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9991 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9992 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9993 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9994 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9995 (scm_string_split, scm_string_ci_to_symbol), strings.c
9996 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9997 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9998 Docstring fixes and improvements reflecting edits that have been
9999 made in the reference manual source.
10000
10001 * objprop.c (scm_object_properties, scm_set_object_properties_x,
10002 scm_object_property, scm_set_object_property_x): Remove invalid
10003 @deffnx lines for corresponding procedure property primitives.
10004
10005 These changes add a @deffnx C function declaration and function
10006 index entries for each Guile primitive to the copy of the doc
10007 snarf output that is used for reference manual synchronization.
10008 Online help is unchanged.
10009
10010 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
10011 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
10012 name to SCM_SNARF_DOCS.
10013
10014 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
10015 snarf-check-and-output-texi.
10016
10017 * Makefile.am (guile-procedures.texi): New rule.
10018 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
10019 Changed so that the last stage of doc snarfing is now performed
10020 twice, once to produce guile-procedures.txt for online help, and
10021 once to produce guile.texi for reference manual synchronization.
10022
10023 2001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
10024
10025 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
10026 safely usable as a single statement followed by a ';', for example
10027 in an if statement.
10028
10029 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
10030
10031 2001-11-13 Neil Jerram <neil@ossau.uklinux.net>
10032
10033 * random.c (scm_random_solid_sphere_x,
10034 scm_random_hollow_sphere_x): Correct "shere" typos.
10035
10036 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
10037
10038 * version.c (scm_version): Update docstring to include
10039 `micro-version'.
10040
10041 2001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
10042
10043 * modules.c (scm_c_export): Call va_end after collecting the
10044 symbols.
10045
10046 * strop.h, strop.c (scm_substring_move_left_x,
10047 scm_substring_move_right_x): Removed.
10048
10049 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
10050 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
10051 configure does.
10052
10053 2001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
10054
10055 * numbers.c: Document macros to define when including
10056 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
10057 now rely on SIZEOF_ macros that have been figured out at
10058 configure time.
10059
10060 * num2integral.i.c: Adapt to new interface.
10061 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
10062 target type by casting it and checking whether it is still the
10063 same. Do not try to handle bignums for integral types that are
10064 smaller than fixnums. When handling bignums, collect the
10065 magnituse first into a unsigned type, and correctly check for
10066 overflow.
10067 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
10068 only -MIN_VALUE can still be negative of all negative numbers (in
10069 twos-complement).
10070
10071 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
10072
10073 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
10074 HAVE_LONG_LONG depending on whether their size is non-zero.
10075
10076 2001-11-11 Thien-Thi Nguyen <ttn@glug.org>
10077
10078 * strop.c (scm_string_null_p): Docfix; nfc.
10079 Thanks to Scott Lenser.
10080
10081 2001-11-07 Neil Jerram <neil@ossau.uklinux.net>
10082
10083 * extensions.c (scm_load_extension): Canonicalize docstring
10084 whitespace.
10085
10086 * unif.c (scm_uniform_array_write), ports.c
10087 (scm_current_output_port, scm_force_output), dynwind.c
10088 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
10089 filesys.c (scm_open, scm_lstat), struct.c
10090 (scm_make_struct_layout), random.c (scm_random,
10091 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
10092 (scm_i_index): Remove superfluous whitespace from end of docstring
10093 lines.
10094
10095 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
10096 strings.c (scm_make_string), variable.c (scm_make_variable,
10097 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
10098 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
10099 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
10100 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
10101 newline at end of docstrings.
10102
10103 * modules.c (scm_set_current_module): Add missing newline to
10104 docstring.
10105
10106 2001-11-07 Stefan Jahn <stefan@lkcc.org>
10107
10108 * win32-socket.[ch]: New files. Defines Winsock-API error codes
10109 and makes them available through Guile. That is because the
10110 Winsock-API does not store its errors in `errno' and thus cannot
10111 return error messages via `strerror (errno)'.
10112
10113 * socket.c (scm_init_socket): Initialize `win32-socket' part
10114 here under M$-Windows.
10115
10116 * numbers.h: Added missing declaration of
10117 `scm_sys_check_number_conversions()'.
10118
10119 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
10120 and use in `(strerror)' and `(system-error)'.
10121
10122 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
10123 `win32-socket.[ch]' to extra source and header files.
10124
10125 2001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
10126
10127 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
10128 a call to turn-on-debugging when --debug has been given instead of
10129 turning it on directly. Also, handle new `--no-debug' option,
10130 which might suppress the call to turn-on-debugging.
10131
10132 2001-11-05 Stefan Jahn <stefan@lkcc.org>
10133
10134 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
10135
10136 2001-11-04 Stefan Jahn <stefan@lkcc.org>
10137
10138 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
10139 here (was at guile_LDADD) which describes the dependency
10140 correctly and allows a clean build on Win32.
10141
10142 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
10143 into FOO.
10144
10145 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
10146 import macros for external libraries (libcrypt, libqthreads,
10147 libreadline and libregex).
10148
10149 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
10150
10151 * posix.c (flock): Added support for flock() in M$-Windows.
10152
10153 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
10154 of __SCM_IMPORT__.
10155
10156 * fports.c (getflags): Differentiate reading and writing pipes
10157 descriptors.
10158
10159 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
10160 M$-Windows.
10161
10162 * coop.c (coop_condition_variable_timed_wait_mutex): Use
10163 conditionalized error code if `ETIMEDOUT' is not available.
10164 (scm_thread_usleep): Remove bogus declaration of `struct timeval
10165 timeout'.
10166
10167 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
10168 belongs. That is because NO_PREPRO_MAGIC gets undefined after
10169 each inclusion of `num2integral.i.c'.
10170 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
10171
10172 2001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
10173
10174 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
10175 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
10176
10177 2001-11-02 Mikael Djurfeldt <mdj@linnaeus>
10178
10179 * print.c (scm_iprin1): Mark print state as revealed when
10180 dispatching to generic write or display.
10181
10182 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
10183
10184 2001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
10185
10186 Support for native Win32. Thanks to Stefan Jahn!
10187
10188 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
10189 and win32-dirent.h to extra source and header files. These
10190 include the uname() and the POSIX dirent interface implementation
10191 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
10192 linkers which do not allow unresolved symbols inside shared
10193 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
10194 dependency.
10195
10196 * __scm.h: Defined SCM_API. This macro gets prepended to all
10197 function and data definitions which should be exported or imported
10198 in the resulting dynamic link library in the Win32 port.
10199
10200 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
10201 chars.h, continuations.h, coop-defs.h, coop-threads.h,
10202 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
10203 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
10204 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
10205 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
10206 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
10207 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
10208 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
10209 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
10210 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
10211 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
10212 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
10213 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
10214 vports.h, weaks.h:
10215 Prefixed each each exported symbol with SCM_API.
10216
10217 * continuations.c: Added comment about the use of the extern
10218 declarations of {get,set}context() functions used in the ia64 port.
10219
10220 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
10221 is meant to be a `unsigned long *'.
10222
10223 * filesys.c: Include `direct.h' if possible. Use local
10224 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
10225 macros for M$-Windows. Implementation of `fstat_Win32()' which is
10226 able to differentiate between sockets and other file descriptors.
10227 Use this function as wrapper in `scm_fstat()'. Fixed typo in
10228 `scm_dirname()'.
10229
10230 * fports.c: Include `io.h' is possible. Put `*fp' into referring
10231 statement block in `scm_fport_buffer_add()'.
10232 Some corrections in `getflags()'.
10233
10234 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
10235
10236 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
10237 build on Win32. Disable preloaded symbols on Win2 platforms.
10238
10239 * ioext.c, ports.c: Include `io.h' is possible.
10240
10241 * mkstemp.c: Include `process.h' is possible.
10242
10243 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
10244 too.
10245 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
10246
10247 * posix.c: Remove unnecessary dirent includes and defines. Include
10248 local `win32-uname.h' for MinGW. Extern declaration of
10249 `mkstemp()' for systems where it does not exists. Make
10250 `getlogin()' available on M$-Windows.
10251
10252 * scmsigs.c: Made `usleep()' avalable on MinGW.
10253
10254 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
10255
10256 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
10257
10258 * win32-uname.c: Include "win32-uname.h", not "uname.h".
10259
10260 2001-10-28 Mikael Djurfeldt <mdj@linnaeus>
10261
10262 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
10263 Don't apply scm_uniform_vector_length on arrays.
10264
10265 2001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
10266
10267 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
10268 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
10269 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
10270 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
10271 scm_list_<n> over scm_cons[2]?.
10272
10273 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
10274 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
10275 SCM_C[AD][AD]R instead of explicit form.
10276
10277 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
10278 comparison parameters.
10279
10280 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
10281 !SCM_NULLP instead of SCM_NIMP.
10282
10283 (scm_m_case): Don't copy the form. Renamed proc to clause and
10284 minimized its scope. Renamed x to clauses. Removed side
10285 effecting operation from macro call.
10286
10287 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
10288 minimized its scope. Renamed x to clauses. Minimized the scope
10289 of variable 'len'. Make sure the else clause is treated specially
10290 even in case of '=>' occurences. Don't change the else to #t in
10291 order to be able to distinguish this case in the evaluator. Leave
10292 type checking of the recipient to the evaluator.
10293
10294 (scm_c_improper_memq): Made the comment somewhat clearer.
10295
10296 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
10297 test for SCM_IM_LET at the place of the formal parameters.
10298 Simplified the formal parameter checking.
10299
10300 (scm_m_letstar): Added Comment. Renamed proc to bindings.
10301 Renamed arg1 to binding and minimized its scope. Eliminated
10302 unnecessary consing.
10303
10304 (scm_m_do): Renamed proc to bindings. Minimized the scope of
10305 variable 'len'.
10306
10307 (build_binding_list): New static function.
10308
10309 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
10310 Further, split up the 'letrec' unmemoizing code to the
10311 corresponding parts for 'do', 'let' and 'letrec', adding comments
10312 to each form. Cleanup the handling of the do form (This removes
10313 some *real* code :-).
10314
10315 (SCM_CEVAL): Removed side effecting operation from macro call.
10316 Handle the 'else clause of the 'cond form specially - the symbol
10317 'else is not replaced with #t any more.
10318
10319 2001-10-14 Gary Houston <ghouston@arglist.com>
10320
10321 * version.c (scm_version): use sprintf instead of snprintf,
10322 for portability. thanks to Bill Schottstaedt.
10323
10324 2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
10325
10326 * read.c (scm_lreadr): When user-defined hash procedure returns
10327 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
10328 an exception. (This prevents parsing of uniform vectors from
10329 interfering with parsing of numbers.)
10330
10331 2001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
10332
10333 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
10334 PTRDIFF_MIN. Thanks to Ken Raeburn.
10335
10336 2001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
10337
10338 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
10339
10340 * eval.c (scm_m_atbind): First try to find the variable without
10341 defining it locally; when it has not been found, define it
10342 locally.
10343
10344 * modules.c (module_variable): Pass over variables that exist but
10345 are unbound.
10346
10347 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10348
10349 * backtrace.c (display_backtrace_file_and_line): Only use
10350 scm_basename when POSIX support is compiled in. Thanks to Chris
10351 Cramer.
10352
10353 2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10354
10355 * numbers.c (mem2uinteger): Return number read so far when coming
10356 across a hexdigit after having read a # or if not reading a hex
10357 value. This will enable the calling code to correctly handle
10358 forms like 1e2. (The background is, that the exponent markers d,
10359 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
10360 providing this patch.
10361
10362 (mem2complex): Fix erroneous double-negation. Now, numbers like
10363 1-i will be read correctly.
10364
10365 2001-10-12 Mikael Djurfeldt <mdj@linnaeus>
10366
10367 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
10368
10369 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
10370
10371 2001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
10372
10373 * print.c (scm_print_state_vtable, print_state_pool):
10374 Initialize. These variables are now registered as gc roots.
10375
10376 (scm_current_pstate): Update documentation.
10377
10378 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
10379 scm_prin1, scm_init_print): print_state_pool is registered as a
10380 gc root and thus does not need to be protected by a surrounding
10381 pair any more.
10382
10383 (make_print_state): The car of print_state_pool no longer holds
10384 the scm_print_state_vtable.
10385
10386 (scm_current_pstate, scm_make_print_state, print_circref,
10387 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
10388 SCM_N<foo>.
10389
10390 (scm_prin1): When building lists, prefer scm_list_<n> over
10391 scm_cons[2]?.
10392
10393 (scm_iprlist): Removed a redundant SCM_IMP test.
10394
10395 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
10396
10397 2001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10398
10399 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
10400
10401 (scm_memcons, scm_mem_to_proc): When building lists, prefer
10402 scm_list_<n> over scm_cons[2]?.
10403
10404 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
10405
10406 (scm_procedure_name): Use SCM_CADR instead of explicit form.
10407
10408 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
10409 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
10410 for some reason his patch didn't make it into the cvs.
10411
10412 2001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
10413
10414 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
10415 little bit - should even be somewhat more accurate now.
10416
10417 2001-10-08 Rob Browning <rlb@defaultvalue.org>
10418
10419 * gc.c: support ia64 register backing store.
10420 (SCM_MARK_BACKING_STORE): new macro.
10421
10422 * continuations.h: support ia64 register backing store.
10423 (struct scm_t_contregs): add ia64 register backing store.
10424
10425 * continuations.c: support ia64 register backing store.
10426 (continuation_mark): mark ia64 register backing store.
10427 (continuation_free): free ia64 register backing store.
10428 (scm_make_continuation): capture ia64 register backing store.
10429 (copy_stack_and_call): copy ia64 register backing store.
10430
10431 2001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10432
10433 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
10434 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
10435 instead of SCM_NIMP to test for that case.
10436
10437 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
10438 scm_t_bits instead of long.
10439
10440 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10441
10442 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
10443 SCM_T_SIGNED_BITS_MIN): New.
10444 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
10445 Use them to make these macros computable by the preprocessor.
10446
10447 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
10448 whether the integral type fits in a fixnum, not the compiler.
10449 This removes a spurious compiler warning. Also, honor the
10450 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
10451 needed for `long long's.
10452
10453 * numbers.c: Define NO_PREPRO_MAGOC when including
10454 num2integral.c.i for `long long' and `signed long long'.
10455
10456 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
10457
10458 These changes fixes a race condition in the Guile coop - pthread
10459 compatibility code.
10460
10461 * coop.c (mother_awake_p): New variable.
10462 (coop_create): Set mother_awake_p before creating or signalling
10463 mother; wait until mother is going to sleep before returning.
10464 (mother): Reset mother_awake_p before going to sleep.
10465
10466 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10467
10468 * options.c (protected_objects, scm_init_options): The content of
10469 protected_objects is now protected from garbage collection using
10470 scm_gc_register_root instead of scm_permanent_object.
10471
10472 (get_option_setting): New static function that computes an option
10473 setting as it was formerly done in the function scm_options.
10474
10475 (get_documented_option_setting): New static function that
10476 returns option documentation as it was formerly done in the
10477 function scm_options. Note that documentation C strings are no
10478 longer precomputed into SCM objects. Instead, they are converted
10479 into SCM strings every time get_documented_option_setting is
10480 called.
10481
10482 (change_option_setting): New static functions that modifies the
10483 option setting as it was formerly done in the function
10484 scm_options. The function is now exception safe, i. e. won't
10485 cause a memory leak when interrupted. Further, only non-immediate
10486 option values are added to the protection list.
10487
10488 (scm_options): This function now has only the purpose to dispatch
10489 to to get_option_setting, get_documented_option_setting or
10490 change_option_setting, depending on the arguments given to
10491 scm_options.
10492
10493 (scm_init_opts): Don't convert documentation C strings into SCM
10494 strings. Further, don't protect any object values: They _must_
10495 be immediate values, otherwise there is no guarantee that they
10496 have not been collected before anyway.
10497
10498 * options.[ch] (scm_t_option): Made type unsigned, name into a
10499 constant char* and val into a scm_t_bits type.
10500
10501 (scm_options, scm_init_opts): The number of options is guaranteed
10502 to be larger or equal to zero. Thus, the type is changed to
10503 unsigned.
10504
10505 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10506
10507 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
10508 testing an unsigned value for being >= 0.
10509
10510 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10511
10512 * numbers.h: Removed old comment about using SCM_CAR to access
10513 non-pair cells.
10514
10515 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
10516 the return value is signed. Thanks to Brian Crowder for the bug
10517 report.
10518
10519 (SCM_SRS): Avoid unnecessary casting and don't unpack input
10520 values. With this patch, SCM_SRS can be safely used for other
10521 types than scm_t_signed_bits. However, it should still better be
10522 an internal macro and thus be renamed to SCM_I_SRS.
10523
10524 (SCM_MAKINUM, SCM_INUM): Use proper casting.
10525
10526 2001-10-03 Gary Houston <ghouston@arglist.com>
10527
10528 * continuations.h, unif.h: in the descriptions of the bit patterns
10529 of the heap cells, make bit 0 the least significant.
10530
10531 2001-09-25 Thien-Thi Nguyen <ttn@glug.org>
10532
10533 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
10534 Thanks to Golubev I. N.
10535
10536 2001-09-25 Gary Houston <ghouston@arglist.com>
10537
10538 * ports.c (scm_drain_input): extended the docstring. thanks to
10539 Alex Schroeder and Thien-Thi Nguyen.
10540
10541 2001-09-23 Mikael Djurfeldt <mdj@linnaeus>
10542
10543 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
10544 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
10545 macros. (The NUM names might soon change.)
10546
10547 * numbers.h: Added missing declarations.
10548
10549 2001-09-22 Mikael Djurfeldt <mdj@linnaeus>
10550
10551 * Makefile.am: Distribute num2float.i.c.
10552
10553 * num2float.i.c: New file, multiply included by numbers.c, used
10554 to "templatize" the float <-> num conversion routines.
10555
10556 * numbers.c: New functions: scm_num2float, scm_float2num,
10557 scm_num2double, scm_double2num.
10558
10559 2001-09-21 Rob Browning <rlb@defaultvalue.org>
10560
10561 * .cvsignore: really add version.h
10562
10563 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
10564 Otherwise it fails on the alpha. However, we might rather choose
10565 this size conditionally.
10566
10567 * numbers.c (scm_gcd): change "k" to a long from an int.
10568 Otherwise it fails on the alpha. However, we might rather choose
10569 this size conditionally.
10570
10571 * error.c (scm_wta): coerce char* to intptr_t before int
10572 assignment.
10573
10574 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
10575 int.
10576
10577 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
10578
10579 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10580
10581 * numbers.c (scm_integer_expt): Accept inexact integer in second
10582 argument. (Thanks to Bill Schottstaedt.)
10583
10584 2001-09-20 Rob Browning <rlb@defaultvalue.org>
10585
10586 * .cvsignore: add version.h
10587
10588 * versiondat.h.in: removed (obsolete).
10589
10590 * version.h.in: renamed from version.h.
10591 (SCM_GUILE_MAJOR_VERSION): new public macro.
10592 (SCM_GUILE_MINOR_VERSION): new public macro.
10593 (SCM_GUILE_MICRO_VERSION): new public macro.
10594
10595 * version.h: renamed to version.h.in.
10596
10597 * version.c
10598 (scm_major_version): support integer *_VERSION macros.
10599 (scm_minor_version): support integer *_VERSION macros.
10600 (scm_micro_version): support integer *_VERSION macros.
10601 (scm_version): support integer *_VERSION macros.
10602
10603 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10604
10605 * error.c, error.h: Made error keys globally accessible.
10606 Applications might want to test for these or use them in a direct
10607 call to scm_error.
10608
10609 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
10610 routines are passed an inexact. This change in behavior is
10611 motivated by concordance with R5RS: It is more common that a
10612 primitive doesn't want to accept an inexact for an exact.
10613
10614 2001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10615
10616 The following patch partially undoes my patch from 2001-06-30,
10617 where I added the function scm_gc_mark_cell_conservatively. The
10618 function is buggy, since it breaks guile during conservative
10619 marking if a pointer on the stack points directly into the list of
10620 free cells on the heap: With conservative cell marking this will
10621 cause the whole free list to be scanned and marked - boom!
10622
10623 * gc.c (allocated_mark, MARK, heap_segment,
10624 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
10625 (scm_gc_mark_cell_conservatively): Remove function
10626 scm_gc_mark_cell_conservatively and update the corresponding
10627 comments and uses accordingly. Thanks to Christopher Cramer for
10628 the patch. (Minor corrections by me.)
10629
10630 2001-09-15 Gary Houston <ghouston@arglist.com>
10631
10632 * root.h (scm_root_state): removed the continuation_stack and
10633 continuation_stack_ptr members, which have no apparent purpose.
10634 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
10635 removed.
10636
10637 * root.c (root_mark), init.c (restart_stack, start_stack), gc
10638 (scm_igc): remove all references to contination_stack and
10639 continuation_stack_ptr, avoiding allocation of a vector and
10640 useless processing during gc.
10641
10642 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10643
10644 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
10645
10646 (TCONC_IN): Make sure that the cell word 0 is initialized last.
10647
10648 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
10649
10650 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
10651
10652 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
10653 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
10654
10655 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10656
10657 * guardians.c (mark_dependencies_in_tconc,
10658 whine_about_self_centered_zombies, scm_init_guardians): Register
10659 the static global variable `self_centered_zombies' via
10660 scm_gc_register_root, to make some cdr-ing unnecessary.
10661
10662 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10663
10664 * backtrace.c (display_backtrace_file,
10665 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
10666 values, use SCM_FALSEP when comparing SCM values against #f.
10667 Thanks to Rob Browning for the bug report.
10668
10669 2001-09-12 Martin Baulig <martin@home-of-linux.org>
10670
10671 * strings.[ch] (scm_str2string): New function.
10672
10673 2001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
10674
10675 * gc.c (scm_done_free): Always subtract size from scm_mallocated
10676 when computing nm, even if it's negative.
10677 (scm_must_malloc): Abort on overflow of scm_mtrigger.
10678 (scm_must_realloc): Likewise.
10679
10680 2001-09-01 Michael Livshin <mlivshin@bigfoot.com>
10681
10682 * numbers.c (scm_sys_check_number_conversions): new function,
10683 defined if Guile is compiled in debugging mode. currently checks
10684 `scm_num2ulong', should check much much more.
10685
10686 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
10687 unsigned, ensure that it's positive. thanks to Martin Baulig!
10688
10689 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10690
10691 * __scm.h: Added new section about compile time selectable
10692 features.
10693
10694 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
10695 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
10696 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
10697 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
10698 Removed.
10699
10700 * deprecation.c (scm_include_deprecated_features): Simplified.
10701
10702 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
10703 `SCM_IMP' instead of `!SCM_CELLP´.
10704
10705 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
10706 Extract side-effecting operations from macros.
10707
10708 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
10709 scm_top_level_lookup_closure_var and scm_system_transformer.
10710
10711 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10712
10713 (heap_segment): Use CELL_P instead of SCM_CELLP.
10714
10715 * init.c (start_stack): Don't initialize
10716 scm_top_level_lookup_closure_var and scm_system_transformer.
10717
10718 * modules.c (scm_set_current_module): Don't access
10719 scm_top_level_lookup_closure_var and scm_system_transformer.
10720
10721 (scm_sym2var): Don't call scm_variable_set_name_hint.
10722
10723 (scm_post_boot_init_modules): Removed deprecated initializations.
10724
10725 * print.c (scm_ipruk): Don't access cell contents of non cells.
10726
10727 * strings.c (scm_string_set_x): All strings are writable.
10728
10729 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10730 type. There is only one string type now.
10731
10732 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10733
10734 * tags.h: Remove comments about two different string types.
10735
10736 (SCM_CELLP, SCM_NCELLP): Deprecated.
10737
10738 * variable.c (make_variable): Remove code variant for vcells.
10739
10740 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10741 SCM_VARIABLE_LOC): Remove code variant for vcells.
10742
10743 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10744 SCM_ENABLE_DEPRECATED with the logic reversed.
10745
10746 * dynl.c (moddata, registered_mods), dynl.[ch]
10747 (scm_register_module_xxx, scm_registered_modules,
10748 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10749 (*top-level-lookup-closure*), eval.[ch]
10750 (scm_top_level_lookup_closure_var, scm_system_transformer,
10751 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10752 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10753 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10754 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10755 scm_unprotect_object), modules.c (root_module_lookup_closure,
10756 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10757 beautify_user_module_x_var, try_module_autoload_var,
10758 scm_module_full_name), modules.[ch] (scm_the_root_module,
10759 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
10760 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
10761 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10762 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10763 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10764 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10765 scm_make_shared_substring), tags.h (scm_tc7_substring,
10766 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10767 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10768 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10769 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10770 Removed.
10771
10772 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10773 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10774 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10775 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10776 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10777 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10778 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10779 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10780 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10781 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10782 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10783 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10784 (setzone, scm_strftime, scm_strptime), vports.c
10785 (scm_make_soft_port): Remove calls to
10786 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10787 gone, all strings are 0-terminated anyway.
10788
10789 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10790 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10791 double inclusion of the same headers to the SCM_<filename>_H
10792 format.
10793
10794 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10795 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10796 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10797 any more.
10798
10799 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10800 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10801 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10802 !SCM_<foo> over SCM_N<foo>.
10803
10804 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10805
10806 * Makefile.am: Remove references to symbols-deprecated.c.
10807
10808 * symbols.c (scm_init_symbols): Don't initialize deprecated
10809 symbol functions.
10810
10811 * symbols-deprecated.c: Removed.
10812
10813 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10814 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10815 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10816 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10817 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10818 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10819 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10820 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10821 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10822 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10823 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10824 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10825 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10826 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10827 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10828 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10829 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10830 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10831 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10832 scm_intern0, scm_sysintern, scm_sysintern0,
10833 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10834 scm_string_to_obarray_symbol, scm_intern_symbol,
10835 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10836 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10837 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10838 vectors.[ch] (scm_vector_set_length_x): Removed.
10839
10840 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10841 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10842 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10843 Renamed the macros that are defined to inhibit double inclusion of
10844 the same headers to the SCM_<filename>_H format.
10845
10846 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10847 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10848 SCM_N<foo>.
10849
10850 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10851
10852 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10853 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10854 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10855 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10856 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10857 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10858 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10859 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10860 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10861 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10862 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10863 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10864
10865 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10866 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10867 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10868 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10869 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10870 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10871 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10872 double inclusion of the same headers to the SCM_<filename>_H
10873 format.
10874
10875 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10876 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10877 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10878 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10879 !SCM_<foo> over SCM_N<foo>.
10880
10881 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10882
10883 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10884 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10885 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10886 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10887 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10888 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10889 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10890 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10891 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10892 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10893 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10894 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10895 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10896 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10897 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10898 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10899 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10900 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10901 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10902 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10903 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10904 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10905 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10906 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10907 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10908 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10909 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10910 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10911 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10912 the macros that are defined to inhibit double inclusion of the
10913 same headers to the SCM_<filename>_H format.
10914
10915 2001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10916
10917 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10918 "scm_t_portable" with "scm_port_table" which was an artifact from
10919 the great "scm_*_t -> scm_t_" renaming.
10920
10921 2001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10922
10923 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10924 used; nfc. Thanks to Bill Schottstaedt.
10925
10926 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10927 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10928 Thanks to Chris Cramer.
10929
10930 2001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10931
10932 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10933
10934 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10935 dynamic scope.
10936 * dynwind.h (scm_swap_bindings): Declare.
10937 * dynwind.c (scm_swap_bindings): Make non-static.
10938
10939 2001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10940
10941 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10942 doing exactly nothing about them). thanks Neil!
10943
10944 2001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10945
10946 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
10947
10948 2001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10949
10950 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10951 (proto) in the case when either `GUILE_DEBUG' or
10952 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10953
10954 (map_free_list): Fix typo: Ref `f' correctly.
10955
10956 Thanks to Chris Cramer.
10957
10958 2001-08-15 Rob Browning <rlb@defaultvalue.org>
10959
10960 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10961 variables.
10962 (libpath.h): change libguileversion to libguileinterface.
10963
10964 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10965
10966 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10967 ChangeLog-2000. Thanks to Daniel Skarda!
10968
10969 2001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10970
10971 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10972 do it from the Makefile.
10973
10974 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10975 are of a reasonable size.
10976
10977 2001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10978
10979 * stacks.c (scm_make_stack): Improve docstring by explaining use
10980 of cutting args.
10981
10982 2001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10983
10984 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10985 scm_char_whitespace_p, scm_char_upper_case_p,
10986 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10987 characters to fulfill isascii in addition to the primary
10988 predicate.
10989
10990 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10991
10992 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10993 scm_istr2flo, scm_istring2number): Removed.
10994
10995 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10996 SCM_SLOPPY_<foo>.
10997
10998 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10999 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
11000 Added.
11001
11002 (scm_string_to_number): Use new number parser.
11003
11004 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
11005 handles complex numbers.
11006
11007 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
11008 SCM_<foo>_H.
11009
11010 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
11011 SCM_N<pred>.
11012
11013 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
11014
11015 (scm_i_mem2number): Added.
11016
11017 (scm_exact_to_inexact): Changed signature.
11018
11019 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
11020 here instead of within scm_i_mem2number. Call scm_i_mem2number
11021 instead of scm_istr2int and scm_istring2number.
11022
11023 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11024
11025 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
11026 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
11027 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
11028 !SCM_<pred> over SCM_N<pred>.
11029
11030 (scm_eval_body): Remove side effecting code from macro call.
11031
11032 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
11033 SCM_NIMP test.
11034
11035 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11036
11037 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
11038
11039 2001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
11040
11041 Removed vcell slot from structs.
11042
11043 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
11044 subsequent indices.
11045
11046 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
11047 zero. Use scm_vtable_index_layout instead of "0" when accessing
11048 said slot.
11049 (scm_init_struct): Remove vcell slot layout code from
11050 required_vtable_fields.
11051
11052 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
11053
11054 * goops.c (build_class_class_slots): Removed vcell slot
11055 definition.
11056
11057 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
11058 Removed vcell slot layout code.
11059 (scm_si_vcell): Removed.
11060
11061 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
11062
11063 "Glocs" have been removed.
11064
11065 * tags.h: Update tag system docs.
11066 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
11067 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
11068 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
11069 or SCM_NCONSP, respectively.
11070
11071 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
11072 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
11073 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
11074
11075 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
11076 tell glocs from structs.
11077
11078 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
11079
11080 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
11081 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
11082 instead of with glocs.
11083 (EVALCAR): Do not test for glocs.
11084 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
11085 condition.
11086 (scm_unmemocar): Do not handle glocs.
11087 (scm_m_atfop): Memoize as a variable, not as a gloc.
11088 (scm_eval_args, scm_deval_args): Do not handle glocs.
11089 (scm_ceval, scm_deval): Likewise.
11090
11091 * eval.h (SCM_XEVALCAR): Do not test for glocs.
11092 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
11093 Removed.
11094
11095 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
11096
11097 * dynwind.c (scm_swap_bindings): Likewise.
11098 (scm_dowinds): Updated to recognize lists of variables instead of
11099 lists of glocs.
11100
11101 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
11102
11103
11104 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
11105 where it is needed.
11106
11107 2001-07-25 Gary Houston <ghouston@arglist.com>
11108
11109 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
11110 docstrings to reflect the n-ary implementation.
11111
11112 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
11113
11114 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
11115 value of a variable, not the plain "return" statement.
11116
11117 2001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
11118
11119 * eval.c: Allow variables in memoized code (in addition to glocs).
11120 (scm_lookupcar): Handle variables in lost races. Replace symbol
11121 with variable directly, do not make a gloc.
11122 (scm_unmemocar): Rewrite variables using a reverse lookup, just
11123 like glocs.
11124 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
11125 the main switch.
11126
11127 2001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
11128
11129 * variable.c (scm_i_variable_print): Use "value" instead of
11130 "binding" since a binding is the mapping between symbols and
11131 variables, not between variables and their values.
11132
11133 * tags.h (scm_tc7_variable): New.
11134 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
11135 * print.c (scm_iprin1): Likewise.
11136
11137 * variable.h (scm_tc16_variable): Removed.
11138 (SCM_VARIABLEP): Test for new tc7 code.
11139 (scm_i_variable_print): New.
11140 * variable.c (scm_tc16_variable): Removed.
11141 (variable_print): Renamed to scm_i_variable_print and made
11142 non-static.
11143 (variable_equal_p): Removed.
11144 (make_variable): Construct a tc7 object instead of a smob.
11145 (scm_init_variable): Do not register smob.
11146
11147 2001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
11148
11149 * tags.h: Include inttypes.h when we have it.
11150
11151 2001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
11152
11153 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
11154 is taken by the new SCM_IM_CALL_WITH_VALUES.
11155 * print.c (scm_isymnames): Update table accordingly.
11156
11157 2001-07-22 Gary Houston <ghouston@arglist.com>
11158
11159 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
11160 SCM_MAKINUM to convert regoff_t value to SCM.
11161
11162 2001-07-21 Gary Houston <ghouston@arglist.com>
11163
11164 * scmsigs.c: include sys/time.h for itimer stuff.
11165
11166 2001-07-19 Rob Browning <rlb@defaultvalue.org>
11167
11168 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
11169
11170 * c-tokenize.lex: add option %nounput to quiet warning.
11171 Add prototype for yylex to quiet warning.
11172
11173 * scmconfig.h.in: add flags for setitimer and getitimer.
11174
11175 * scmsigs.h (scm_init_scmsigs): new prototype.
11176 (scm_init_scmsigs): new prototype.
11177
11178 * scmsigs.c (s_scm_setitimer): new function.
11179 (s_scm_setitimer): new function.
11180
11181 2001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11182
11183 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
11184 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
11185 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
11186 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
11187 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
11188 guile-func-name-check.in, guile-snarf-docs-texi.in,
11189 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
11190 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
11191 objprop.c, objprop.h, options.c, options.h, random.h,
11192 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
11193 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
11194 version.c, version.h: Updated copyright notice.
11195
11196 2001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11197
11198 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
11199 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
11200 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
11201 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
11202 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
11203 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
11204 sym_environment, scm_sym_change_class): New static variables to
11205 hold predefined symbols.
11206
11207 (build_class_class_slots): Build the list using scm_list_n
11208 instead of cons. Also, slots are already created as lists, thus
11209 making a call to maplist unnecessary.
11210
11211 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
11212 scm_class_direct_subclasses, scm_class_direct_methods,
11213 scm_class_precedence_list, scm_class_slots, scm_class_environment,
11214 scm_method_procedure, create_standard_classes, purgatory): Use
11215 predefined symbols.
11216
11217 (build_slots_list, compute_getters_n_setters,
11218 scm_sys_initialize_object, scm_sys_inherit_magic_x,
11219 get_slot_value_using_name, set_slot_value_using_name,
11220 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
11221 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
11222 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
11223
11224 (scm_sys_prep_layout_x): Minimize variable scopes.
11225
11226 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
11227 scm_sys_fast_slot_set_x): Fix signedness.
11228
11229 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
11230 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
11231 scm_memoize_method, scm_wrap_object): Use packing and unpacking
11232 when converting to and from SCM values.
11233
11234 (scm_enable_primitive_generic_x): Add rest argument checking.
11235
11236 (map, filter_cpl, maplist, scm_sys_initialize_object,
11237 scm_sys_prep_layout_x, slot_definition_using_name,
11238 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
11239 call_memoize_method, scm_make, scm_make_class): Prefer explicit
11240 predicates over SCM_N?IMP tests.
11241
11242 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
11243 checking.
11244
11245 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
11246 alias.
11247
11248 2001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11249
11250 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
11251
11252 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
11253
11254 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
11255
11256 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
11257
11258 2001-07-12 Michael Livshin <mlivshin@bigfoot.com>
11259
11260 * strings.c (s_scm_string): fix arg position in assert.
11261
11262 2001-07-11 Gary Houston <ghouston@arglist.com>
11263
11264 * strports.c (st_write): use memcpy, not strncpy. thanks to
11265 Dale P. Smith.
11266
11267 2001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
11268
11269 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
11270 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
11271 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
11272 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
11273 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
11274 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
11275 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
11276 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
11277 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
11278 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
11279 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
11280 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
11281 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
11282 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
11283 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
11284 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
11285 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
11286 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
11287 weaks.c, weaks.h: Remove "face-lift" comment.
11288
11289 2001-07-08 Rob Browning <rlb@defaultvalue.org>
11290
11291 * .cvsignore: add stamp-h.in.
11292
11293 2001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11294
11295 * hooks.c (scm_make_hook, scm_add_hook_x),
11296 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
11297 value info to the docstrings.
11298
11299 2001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11300
11301 Some more compatibility patches for Windows.
11302
11303 * posix.c (getlogin): getlogin() implementation for Windows.
11304
11305 * backtrace.c, ioext.c: Include <stdio.h>.
11306
11307 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
11308 exist.
11309
11310 * cpp_sig_symbols.in: Added SIGBREAK.
11311
11312 2001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
11313
11314 * strports.c (scm_read_0str, scm_eval_0str): Call
11315 scm_c_read_string and scm_c_eval_string respectively, not
11316 themselves. Thanks to Dale P. Smith!
11317
11318 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11319
11320 * unif.c (scm_array_set_x): The variable args does not
11321 necessarily have to be a list. Further, got rid of a redundant
11322 SCM_NIMP test.
11323
11324 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11325
11326 * list.c (SCM_I_CONS): Make sure the cell type is initialized
11327 last.
11328
11329 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
11330 init_heap_seg): Fixed signedness.
11331
11332 (init_heap_seg): Replaced strange for-loop with a while loop.
11333
11334 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
11335
11336 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
11337
11338 The following patch adds conservative marking for the elements of
11339 free or allocated cells.
11340
11341 * gc.c (allocated_mark, heap_segment): New static functions.
11342
11343 (which_seg): Deleted, since the functionality is now provided by
11344 function heap_segment.
11345
11346 (map_free_list): Use heap_segment instead of which_seg.
11347
11348 (MARK): If cell debugging is disabled, mark free cells
11349 conservatively.
11350
11351 (scm_mark_locations, scm_cellp): Extracted the search for the
11352 heap segment of a SCM value into function heap_segment.
11353
11354 (scm_init_storage): Allocated cells must be marked
11355 conservatively.
11356
11357 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
11358
11359 The following patch changes the representation of weak vectors to
11360 double cells instead of using an extension of the vector's
11361 allocated memory.
11362
11363 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
11364 the result of SCM_WVECT_GC_CHAIN.
11365
11366 (scm_gc_sweep): Weak vectors don't have extra fields any more.
11367
11368 * weaks.c (allocate_weak_vector): New static function. It does
11369 not patch any previously created vector object during the
11370 construction of a weak vector, and thus doesn't need to switch
11371 off interrupts during vector creation.
11372
11373 (scm_make_weak_vector, scm_make_weak_key_hash_table,
11374 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11375 Use allocate_weak_vector to provide the new weak vector object.
11376
11377 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
11378 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
11379 now stored in the double cell.
11380
11381 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
11382 Use SCM_WVECT_TYPE.
11383
11384 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
11385 using an entry of the double cell.
11386
11387 2001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
11388
11389 * stamp-h.in: bye bye
11390
11391 2001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
11392
11393 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
11394 scm_eval_0str.
11395
11396 * load.c, load.h (scm_c_primitive_load,
11397 scm_c_primitive_load_path): New.
11398
11399 * strports.c, strports.h (scm_c_read_string): Renamed from
11400 scm_read_0str. Also, added "const" qualifier to argument.
11401 (scm_c_eval_string): Renamed from scm_eval_0str.
11402 (scm_read_0str, scm_eval_0str): Deprecated.
11403
11404 2001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11405
11406 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
11407 SCM_LIST1.
11408
11409 2001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
11410
11411 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
11412 scm_list_n): New functions.
11413 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
11414 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
11415 (lots of files): Use the new functions.
11416
11417 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
11418
11419 * strings.c: #include "libguile/deprecation.h".
11420
11421 2001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11422
11423 * read.c (scm_lreadr): When reading a hash token, check for a
11424 user-defined hash procedure first, so that overriding the builtin
11425 hash characters is possible (this was needed for implementing
11426 SRFI-4's read synax `f32(...)').
11427
11428 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
11429 because the latter is unsigned now and breaks comparisons like
11430 (n < (scm_t_signed_bits)MIN_VALUE).
11431
11432 2001-06-26 Neil Jerram <neil@ossau.uklinux.net>
11433
11434 * eval.h, eval.c (scm_call_4): New function.
11435
11436 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
11437 directly rather than dispatching to them via scm_ithrow and a lazy
11438 catch.
11439
11440 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
11441 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
11442 for trap handler procedures.
11443
11444 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
11445 procedures not being #f.
11446
11447 2001-06-27 Michael Livshin <mlivshin@bigfoot.com>
11448
11449 * Makefile.am (c-tokenize.c): add rule to generate it.
11450 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
11451
11452 filter-doc-snarfage.c: remove.
11453
11454 2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11455
11456 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
11457
11458 The following set of changes makes compiling Guile under various
11459 Windows compilers easier. Compilation under GNU systems should
11460 not be affected at all.
11461
11462 Thanks to Stefan Jahn for all necessary information, patches and
11463 testing.
11464
11465 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
11466 getpgrp, ttyname, primitive-fork and some header inclusion for
11467 Windows.
11468
11469 * random.c: Define M_PI, if not predefined and use __int64 for
11470 LONG64 under Windows.
11471
11472 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
11473 Windows and conditionalize some signal names.
11474
11475 * socket.c (scm_getsockopt): Added missing comma.
11476 Include socket library header under Windows.
11477
11478 * stime.c (CLKTCK): Add cast to int, to make it compile under
11479 Windows.
11480
11481 * ports.c (truncate): New function, compiled only under Windows.
11482
11483 * net_db.c: Do not declare errno under Windows.
11484
11485 * iselect.h, inet_aton.c: Include socket library headers under
11486 Windows.
11487
11488 * guile.c (inner_main): Under Windows, initialize socket library
11489 and initialize gdb_interface data structures.
11490
11491 * gdb_interface.h: Under Windows, gdb_interface cannot be
11492 initialized statically. Initialize at runtime instead.
11493
11494 * fports.c (write_all): ssize_t -> size_t.
11495 (fport_print): Conditionalize call to ttyname().
11496 (getflags): New function, compiled only under Windows.
11497
11498 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
11499 primitives chown, link, fcntl.
11500 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
11501 as path seperator.
11502
11503 * backtrace.c: Include <io.h> under Windows.
11504
11505 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
11506
11507 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
11508 declaration.
11509
11510 2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
11511
11512 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11513 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
11514 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11515 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
11516 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
11517 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
11518 (scm_dynamic_wind, scm_dowinds), environments.c
11519 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
11520 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
11521 goops.c (GETVAR, purgatory, make_class_from_template,
11522 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
11523 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
11524 (scm_primitive_load), modules.c (scm_resolve_module,
11525 scm_c_define_module, scm_c_use_module, scm_c_export,
11526 module_variable, scm_eval_closure_lookup, scm_sym2var,
11527 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
11528 ports.c (scm_port_for_each), print.c (scm_printer_apply),
11529 properties.c (scm_primitive_property_ref), ramap.c (ramap,
11530 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
11531 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
11532 (scm_object_to_string, scm_call_with_output_string,
11533 scm_call_with_input_string), throw.c (scm_body_thunk,
11534 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
11535 scm_make_shared_array), vports.c (sf_flush, sf_write,
11536 sf_fill_input, sf_close): Use one of the above functions.
11537 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
11538
11539 2001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11540
11541 * filesys.c (scm_close), ports.c (scm_close_port,
11542 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
11543 instead of SCM_NEGATE_BOOL.
11544
11545 * filesys.c (scm_stat): Clean up type dispatch.
11546
11547 * filesys.c (scm_stat), ports.c (scm_input_port_p,
11548 scm_output_port_p): Get rid of redundant IM type check.
11549
11550 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
11551 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
11552 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
11553 scm_return_entry), numbers.c (scm_number_to_string), objects.c
11554 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
11555 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
11556 scm_addr_vector), stime.c (scm_strftime), strings.c
11557 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
11558 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
11559 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11560 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
11561 instead of scm_makfromstr.
11562
11563 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
11564 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
11565 scm_read_hash_extend), stime.c (scm_strftime), strings.c
11566 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
11567 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
11568 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
11569 !SCM_<pred> over SCM_N<pred>.
11570
11571 * strings.[ch] (scm_makfromstr): Deprecated.
11572
11573 (scm_mem2string): New function, replaces scm_makfromstr.
11574
11575 * strings.c (scm_substring), strop.c (string_copy,
11576 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11577 (scm_symbol_to_string): Fix gc problem.
11578
11579 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
11580 SCM_<foo>_H.
11581
11582 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
11583 warning about comparing signed and unsigned values. This fix is
11584 not optimal, since it won't work reliably if sizeof (c_start) >
11585 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
11586 solution is to define this macro as an inline function, thus
11587 allowing to specifiy the types of c_start and c_end.
11588
11589 2001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
11590
11591 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
11592 scm_t_debug_frame*.
11593
11594 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
11595 Rename <foo>H to SCM_<foo>_H.
11596
11597 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
11598 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11599
11600 (narrow_stack): Make i unsigned. Don't use side-effecting
11601 operations in conditions.
11602
11603 (narrow_stack, scm_make_stack, scm_stack_id,
11604 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
11605
11606 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
11607 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
11608 more.
11609
11610 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
11611 signedness.
11612
11613 (scm_last_stack_frame): Remove bogus `;'.
11614
11615 * stacks.h (SCM_FRAMEP): Fix type check.
11616
11617 2001-06-25 Michael Livshin <mlivshin@bigfoot.com>
11618
11619 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
11620 c-tokenize.c when doing maintainer-clean.
11621
11622 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
11623
11624 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
11625 simplify.
11626
11627 * eval.c: all hash signs are in column 0.
11628
11629 * Makefile.am (guile_filter_doc_snarfage): build using
11630 c-tokenize.c, not filter-doc-snarfage.c.
11631 rearrange snarfing dependencies a bit.
11632
11633 * c-tokenize.lex: new file.
11634
11635 2001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
11636
11637 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
11638 scm_t_srcpropso_plist. See the big type renaming.
11639 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
11640 Thanks to Seth Alves!
11641
11642 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
11643 they aren't defined already.
11644
11645 2001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
11646
11647 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
11648 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
11649 problem.
11650
11651 * backtrace.c (display_expression, scm_set_print_params_x,
11652 display_application, display_frame, scm_backtrace), numbers.c
11653 (scm_istring2number), objects.c (scm_class_of,
11654 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
11655 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11656
11657 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
11658 always positive.
11659
11660 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
11661 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
11662
11663 * objects.c (scm_class_of): Type fix.
11664
11665 (scm_mcache_lookup_cmethod): Improved comment, simplified,
11666 eliminated goto.
11667
11668 * pairs.h (scm_error_pair_access): The function can return if
11669 called recursively.
11670
11671 2001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11672
11673 * init.c (scm_init_guile_1): Removed initialization of tag.c.
11674
11675 * gdbint.c, init.c: Removed inclusion of tag.h.
11676
11677 * tag.h, tag.c: Removed files.
11678
11679 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
11680
11681 2001-06-20 Gary Houston <ghouston@arglist.com>
11682
11683 * deprecation.c, extensions.c, rw.c: include string.h.
11684
11685 2001-06-19 Gary Houston <ghouston@arglist.com>
11686
11687 * filter-doc-snarfage.c (process): added ungetc in
11688 MULTILINE_COOKIE case since otherwise it fails when there's no
11689 space between the '(' and the quote of the following string
11690 (gcc 3.0).
11691
11692 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11693
11694 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
11695
11696 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11697
11698 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
11699 extension takes place.
11700 * strings.h (SCM_STRING_LENGTH): Likewise.
11701 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
11702
11703 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
11704 it.
11705
11706 * tags.h: Include <stdint.h> when we have it.
11707 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
11708 available. Else use "unsigned long".
11709 (scm_signed_bits_t): New.
11710
11711 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11712 (SCM_INUM): Cast result to scm_signed_bits_t.
11713
11714 2001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11715
11716 * mkstemp.c: Update path to #include file scmconfig.h.
11717 Thanks to Golubev I. N.
11718
11719 2001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11720
11721 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11722
11723 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
11724 the macro definition.
11725
11726 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11727 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11728 instead of SCM_INST_TYPE.
11729
11730 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11731 the object is a struct before accessing its struct flags.
11732
11733 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11734
11735 2001-06-10 Gary Houston <ghouston@arglist.com>
11736
11737 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11738 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11739 work reliably anymore. try it from boot-9.scm instead.
11740
11741 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11742
11743 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
11744 Thanks to Matthias Köppe!
11745
11746 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11747
11748 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11749 space-happy C preprocessors.
11750
11751 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
11752 inside cookies. thanks to Matthias Köppe!
11753
11754 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11755
11756 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11757 keywords. Fix gc protection.
11758
11759 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11760 operations in macro calls.
11761
11762 * pairs.c (scm_error_pair_access): Avoid recursion.
11763
11764 Thanks to Matthias Koeppe for reporting the bugs that correspond
11765 to the following set of patches.
11766
11767 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11768 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11769 bitvector base address using SCM_BITVECTOR_BASE.
11770
11771 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11772 unsigned long*.
11773
11774 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11775
11776 * goops.c (SCM_CLASS_REDEF): Removed.
11777
11778 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11779 SCM_<foo>_H.
11780
11781 Thanks to Matthias Koeppe for reporting the bugs that correspond
11782 to the following set of patches.
11783
11784 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11785 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11786 scm_sys_allocate_instance, clear_method_cache,
11787 scm_sys_invalidate_method_cache_x, scm_make,
11788 create_standard_classes, scm_make_port_classes, scm_make_class,
11789 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11790
11791 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11792
11793 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11794
11795 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11796 UNARY_ELTS_CODE): Remove bogus break statement.
11797
11798 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11799 Don't access bit vectors elements as SCM objects.
11800
11801 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11802 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11803 Don't assign to an unpacked value.
11804
11805 2001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11806
11807 * __scm.h (SCM_NORETURN): Moved here from error.h.
11808
11809 (SCM_UNUSED): New macro.
11810
11811 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11812
11813 * backtrace.c (display_error_handler), continuations.c
11814 (continuation_print), debug.c (debugobj_print), dynwind.c
11815 (guards_print), environments.c (observer_print,
11816 core_environments_finalize, leaf_environment_cell,
11817 leaf_environment_print, eval_environment_print,
11818 eval_environment_observer, import_environment_define,
11819 import_environment_undefine, import_environment_print,
11820 import_environment_observer, export_environment_define,
11821 export_environment_undefine, export_environment_print,
11822 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11823 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11824 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11825 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11826 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11827 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11828 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11829 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11830 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11831 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11832 set_slot_value, test_slot_existence, scm_change_object_class,
11833 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11834 default_setter), guardians.c (guardian_print, guardian_gc_init,
11835 guardian_zombify, whine_about_self_centered_zombies), guile.c
11836 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11837 mallocs.c (malloc_print), numbers.c (scm_print_real,
11838 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11839 end_input_default, scm_port_print, fill_input_void_port,
11840 write_void_port), root.c (root_print), smob.c (scm_mark0,
11841 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11842 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11843 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11844 (scm_struct_free_0, scm_struct_free_standard,
11845 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11846 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11847 scm_handle_by_throw, scm_ithrow), weaks.c
11848 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11849 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11850 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11851
11852 * error.h (SCM_NORETURN): Moved to __scm.h.
11853
11854 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11855 Renamed <foo>H to SCM_<foo>_H.
11856
11857 * gc.c (debug_cells_gc_interval): New static variable.
11858
11859 (scm_assert_cell_valid): If selected by the user, perform
11860 additional garbage collections.
11861
11862 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11863 if additional garbage collections are desired.
11864
11865 (mark_gc_async): If additional garbage collections are selected
11866 by the user, don't call the after-gc-hook. Instead require the
11867 user to run the hook manually.
11868
11869 * pairs.c (scm_error_pair_access): New function. Only compiled
11870 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11871
11872 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11873
11874 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11875 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11876 is a real pair object. (Glocs are also accepted, but that may
11877 change.) If not, abort with an error message.
11878
11879 2001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11880
11881 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11882
11883 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11884 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11885
11886 2001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11887
11888 * extensions.c (scm_c_register_extension): Allow NULL as library
11889 name.
11890 (load_extension): Ignore NULL library names when comparing.
11891
11892 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11893 non-pointers are being compared. Thanks to Alexander Klimov!
11894
11895 2001-06-04 Gary Houston <ghouston@arglist.com>
11896
11897 * rw.c (scm_write_string_partial): new procedure implementing
11898 write-string/partial in (ice-9 rw).
11899 * rw.h: declare scm_write_string_partial.
11900
11901 2001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11902
11903 * keywords.c (keyword_print): Substract 1 from length of symbol
11904 name, accounting for the silly dash.
11905
11906 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11907 Do not emit deprecation warning.
11908
11909 Added exception notice to all files.
11910
11911 * dynl.c: Include "deprecation.h".
11912
11913 2001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11914
11915 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11916 scm_clear_registered_modules): Deprecated.
11917
11918 2001-06-02 Rob Browning <rlb@cs.utexas.edu>
11919
11920 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11921 guile-snarf-docs-texi.
11922
11923 * fports.c: HAVE_ST_BLKSIZE changed to
11924 HAVE_STRUCT_STAT_ST_BLKSIZE.
11925 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11926 HAVE_STRUCT_STAT_ST_BLKSIZE.
11927
11928 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11929 HAVE_STRUCT_STAT_ST_RDEV.
11930 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11931 HAVE_STRUCT_STAT_ST_BLKSIZE.
11932 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11933 HAVE_STRUCT_STAT_ST_BLOCKS.
11934
11935 2001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11936
11937 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11938 of scm_eval_x to allow module changes between the forms in the
11939 string. Set/restore module using scm_c_call_with_current_module.
11940
11941 * mkstemp.c: New file, slightly modified from libiberties
11942 mkstemps.c.
11943
11944 2001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11945
11946 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11947 filter-doc-snarfage.c: new files.
11948
11949 * Makefile.am: add stuff to [build,] use and distribute
11950 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11951
11952 * guile-snarf.in: grok the new snarf output.
11953
11954 * snarf.h: make the output both texttools- and `read'-friendly.
11955
11956 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11957 guile-snarf-docs. (should also deprecate, I guess. maybe not).
11958
11959 2001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11960
11961 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11962 error for unsupported format controls and for superflous
11963 arguments. Thanks to Daniel Skarda!
11964
11965 * print.h, print.c (scm_print_symbol_name): Factored out of
11966 scm_iprin1.
11967 (scm_iprin1): Call it.
11968
11969 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11970 weird names are printed correctly.
11971
11972 * print.c (scm_print_symbol_name): Symbols whose name starts with
11973 `#' or `:' or ends with `:' are considered weird.
11974
11975 2001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11976
11977 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11978 and /.
11979
11980 2001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11981
11982 * debug.h: Removed prototype for scm_eval_string.
11983
11984 2001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11985
11986 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
11987 (make-string 2000 #\!))' in an older version).
11988
11989 Change strncpy to memcpy to allow embedded NUL characters in
11990 symbol prefix.
11991
11992 2001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11993
11994 * hooks.c (scm_create_hook): deprecated.
11995 (make_hook): deleted.
11996 (scm_make_hook): all the hook creation code is now here.
11997
11998 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11999 a hook, make it permanent, and do a `scm_c_define' on it.
12000
12001 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
12002
12003 * socket.c (s_scm_inet_pton): fix docstring quoting.
12004 (s_scm_inet_ntop): ditto.
12005
12006 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
12007
12008 * hashtab.c (scm_internal_hash_fold): fix argument position in
12009 SCM_ASSERT.
12010
12011 * environments.c (s_scm_import_environment_set_imports_x): fix
12012 argument position in SCM_ASSERT.
12013
12014 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
12015 (s_scm_make_iloc): ditto.
12016
12017 2001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
12018
12019 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
12020
12021 * eval.c (promise_print): Read the promise's value as an object.
12022
12023 (SCM_CEVAL): Don't perform side-effecting operations in macro
12024 parameters.
12025
12026 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
12027 conditional expression.
12028
12029 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
12030 initializer.
12031
12032 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
12033 text, removed redundant computation of effective_length and fixed
12034 the overflow check.
12035
12036 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
12037 values.
12038
12039 (wrap_init): Don't use SCM_C[AD]R for non pairs.
12040
12041 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
12042
12043 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
12044 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
12045
12046 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
12047
12048 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
12049 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
12050 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
12051 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
12052
12053 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
12054
12055 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
12056
12057 * ramap.c (ramap_rp): Removed bogus `;'.
12058
12059 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
12060 problem.
12061
12062 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
12063 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
12064 Read SCM objects rather than scm_bits_t values.
12065
12066 * tags.h (SCM_VOIDP_TEST): Removed.
12067
12068 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
12069 value of 2 now corresponds to the former 1, the current 1
12070 corresponds to the former situation that SCM_VOIDP_TEST was
12071 defined.
12072
12073 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
12074 If this appears to be not ANSI compliant, we will change it to
12075 typedef struct scm_unused_struct { } * SCM;
12076 Thanks to Han-Wen Nienhuys for the suggestion.
12077
12078 * unif.c (scm_array_set_x): Fix typing problem, and use
12079 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
12080 dealing with uniform vectors.
12081
12082 2001-05-27 Michael Livshin <mlivshin@bigfoot.com>
12083
12084 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
12085 (scm_igc): mark from them, too (precisely, not conservatively!).
12086
12087 * root.h (scm_gc_registered_roots): new object in
12088 scm_sys_protects.
12089
12090 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
12091 `scm_protect_object'. shouldn't call it at all, though, it seems.
12092
12093 * gc.c (scm_[un]protect_object): deprecated.
12094 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
12095 (scm_gc_[un]register_root[s]): new.
12096
12097 * gc.h: add prototypes for scm_gc_[un]protect_object,
12098 scm_gc_[un]register_root[s].
12099
12100 2001-05-26 Michael Livshin <mlivshin@bigfoot.com>
12101
12102 revert the controversial part of the 2001-05-24 changes.
12103
12104 2001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
12105
12106 * modules.c (scm_env_module): Exported to Scheme.
12107
12108 * eval.c (scm_debug_opts): New option `show-file-name'.
12109
12110 * debug.h (SCM_SHOW_FILE_NAME): New.
12111
12112 * backtrace.c: Include "libguile/filesys.h".
12113 (sym_base, display_backtrace_get_file_line,
12114 display_backtrace_file, display_backtrace_file_and_line): New.
12115 (display_frame): Call display_backtrace_file_and_line if that is
12116 requested.
12117 (display_backtrace_body): Call scm_display_backtrace_file if
12118 requested.
12119
12120 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
12121 Prototypes removed since there's no definition for these
12122 functions.
12123
12124 2001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12125
12126 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
12127 Changed use of scm_array->scm_array_t and
12128 scm_array_dim->scm_array_dim_t to enable build with
12129 --disable-deprecated.
12130
12131 2001-05-24 Michael Livshin <mlivshin@bigfoot.com>
12132
12133 The purpose of this set of changes is to regularize Guile's usage
12134 of ANSI C integral types, with the following ideas in mind:
12135
12136 - SCM does not nesessarily have to be long.
12137 - long is not nesessarily enough to store pointers.
12138 - long is not nesessarily the same size as int.
12139
12140 The changes are incomplete and possibly buggy. Please test on
12141 something exotic.
12142
12143 * validate.h
12144 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
12145 new macros.
12146
12147 * unif.h: type renaming:
12148 scm_array -> scm_array_t
12149 scm_array_dim -> scm_array_dim_t
12150 the old names are deprecated, all in-Guile uses changed.
12151
12152 * tags.h (scm_ubits_t): new typedef, representing unsigned
12153 scm_bits_t.
12154
12155 * stacks.h: type renaming:
12156 scm_info_frame -> scm_info_frame_t
12157 scm_stack -> scm_stack_t
12158 the old names are deprecated, all in-Guile uses changed.
12159
12160 * srcprop.h: type renaming:
12161 scm_srcprops -> scm_srcprops_t
12162 scm_srcprops_chunk -> scm_srcprops_chunk_t
12163 the old names are deprecated, all in-Guile uses changed.
12164
12165 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
12166 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
12167 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
12168 vectors.c, vports.c, weaks.c:
12169 various int/size_t -> size_t/scm_bits_t changes.
12170
12171 * random.h: type renaming:
12172 scm_rstate -> scm_rstate_t
12173 scm_rng -> scm_rng_t
12174 scm_i_rstate -> scm_i_rstate_t
12175 the old names are deprecated, all in-Guile uses changed.
12176
12177 * procs.h: type renaming:
12178 scm_subr_entry -> scm_subr_entry_t
12179 the old name is deprecated, all in-Guile uses changed.
12180
12181 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
12182 type renaming:
12183 scm_option -> scm_option_t
12184 the old name is deprecated, all in-Guile uses changed.
12185
12186 * objects.c: various long -> scm_bits_t changes.
12187 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
12188
12189 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
12190 SCM_I_FIXNUM_BIT.
12191
12192 * num2integral.i.c: new file, multiply included by numbers.c, used
12193 to "templatize" the various integral <-> num conversion routines.
12194
12195 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
12196 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
12197 deprecated.
12198 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
12199 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
12200 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
12201 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
12202 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
12203 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
12204 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
12205 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
12206 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
12207 scm_num2size): new functions.
12208
12209 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
12210
12211 * load.c: change int -> size_t in various places (where the
12212 variable is used to store a string length).
12213 (search-path): call scm_done_free, not scm_done_malloc.
12214
12215 * list.c (scm_ilength): return a scm_bits_t, not long.
12216 some other {int,long} -> scm_bits_t changes.
12217
12218 * hashtab.c: various [u]int -> scm_bits_t changes.
12219 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
12220 (scm_ihashx): n: uint -> scm_bits_t
12221 use scm_bits2num instead of scm_ulong2num.
12222
12223 * gsubr.c: various int -> scm_bits_t changes.
12224
12225 * goops.[hc]: various {int,long} -> scm_bits_t changes.
12226
12227 * gh_data.c (gh_num2int): no loss of precision any more.
12228
12229 * gh.h (gh_str2scm): len: int -> size_t
12230 (gh_{get,set}_substr): start: int -> scm_bits_t,
12231 len: int -> size_t
12232 (gh_<num>2scm): n: int -> scm_bits_t
12233 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
12234 (gh_length): return scm_bits_t, not unsigned long.
12235
12236 * gc.[hc]: various small changes relating to many things stopping
12237 being long and starting being scm_[u]bits_t instead.
12238 scm_mallocated should no longer wrap around.
12239
12240 * fports.h: type renaming:
12241 scm_fport -> scm_fport_t
12242 the old name is deprecated, all in-Guile uses changed.
12243
12244 * fports.c (fport_fill_input): count: int -> scm_bits_t
12245 (fport_flush): init_size, remaining, count: int -> scm_bits_t
12246
12247 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
12248 those prototypes, as the functions they prototype don't exist.
12249
12250 * fports.c (default_buffer_size): int -> size_t
12251 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
12252 default_size: int -> size_t
12253 (scm_setvbuf): csize: int -> scm_bits_t
12254
12255 * fluids.c (n_fluids): int -> scm_bits_t
12256 (grow_fluids): old_length, i: int -> scm_bits_t
12257 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
12258 scm_bits_t
12259 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
12260
12261 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
12262 the new and shiny SCM_NUM2INT.
12263
12264 * extensions.c: extension -> extension_t (and made a typedef).
12265
12266 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
12267 there are no nasty surprises if/when the various deeply magic tag
12268 bits move somewhere else.
12269
12270 * eval.c: changed the locals used to store results of SCM_IFRAME,
12271 scm_ilength and such to be of type scm_bits_t (and not int/long).
12272 (iqq): depth, edepth: int -> scm_bits_t
12273 (scm_eval_stack): int -> scm_bits_t
12274 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
12275 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
12276 i: int -> scm_bits_t
12277
12278 * environments.c: changed the many calls to scm_ulong2num to
12279 scm_ubits2num.
12280 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
12281
12282 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
12283
12284 * debug.h: type renaming:
12285 scm_debug_info -> scm_debug_info_t
12286 scm_debug_frame -> scm_debug_frame_t
12287 the old names are deprecated, all in-Guile uses changed.
12288 (scm_debug_eframe_size): int -> scm_bits_t
12289
12290 * debug.c (scm_init_debug): use scm_c_define instead of the
12291 deprecated scm_define.
12292
12293 * continuations.h: type renaming:
12294 scm_contregs -> scm_contregs_t
12295 the old name is deprecated, all in-Guile uses changed.
12296 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
12297 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
12298
12299 * continuations.c (scm_make_continuation): change the type of
12300 stack_size from long to scm_bits_t.
12301
12302 * ports.h: type renaming:
12303 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
12304 scm_port -> scm_port_t
12305 scm_ptob_descriptor -> scm_ptob_descriptor_t
12306 the old names are deprecated, all in-Guile uses changed.
12307 (scm_port_t.entry): int -> scm_bits_t.
12308 (scm_port_t.line_number): int -> long.
12309 (scm_port_t.putback_buf_size): int -> size_t.
12310
12311 * __scm.h (long_long, ulong_long): deprecated (they pollute the
12312 global namespace and have little value beside that).
12313 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
12314 SCM handle).
12315 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
12316 exist (for size_t & ptrdiff_t).
12317 (scm_sizet): deprecated.
12318
12319 * Makefile.am (noinst_HEADERS): add num2integral.i.c
12320
12321 2001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
12322
12323 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
12324 SCM_VARIABLE_INIT since that it what it used to be.
12325
12326 * deprecation.c (scm_include_deprecated_features): Make docstring
12327 ANSIsh. Thanks to Matthias Köppe!
12328
12329 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
12330
12331 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
12332 needed for weak-key hashtables.
12333
12334 * procs.c (scm_make_subr_with_generic): Add missing last argument
12335 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
12336
12337 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
12338 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
12339
12340 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
12341
12342 2001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
12343
12344 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
12345 `duplicate_string'. Do not use an indirect cell, store symbol
12346 directly in collision list of hash table.
12347 (duplicate_string): Removed.
12348
12349 * init.c (scm_init_guile_1): Call scm_init_extensions.
12350
12351 * Makefile.am: Add "extensions.c" and related files in all the
12352 right places.
12353
12354 * extensions.h, extension.c: New files.
12355
12356 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
12357
12358 * modules.h (scm_system_module_env_p): Move out of deprecated
12359 section.
12360
12361 * rw.h (scm_init_rw): Added prototype.
12362
12363 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
12364 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
12365 New functions. They replace scm_make_gsubr and
12366 scm_make_gsubr_with_generic. The `make' variants only create the
12367 gsubr object, while the `define' variants also put it into the
12368 current module. Changed all callers.
12369 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
12370
12371 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
12372 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
12373 functions. They replace scm_make_subr, scm_make_subr_opt and
12374 scm_make_subr_with_generic. The `make' variants only create the
12375 subr object, while the `define' variants also put it into the
12376 current module. Changed all callers.
12377 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
12378 Deprecated.
12379
12380 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
12381 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
12382 the comments above.
12383
12384 2001-05-19 Neil Jerram <neil@ossau.uklinux.net>
12385
12386 * throw.c (scm_lazy_catch): Slight docstring clarification.
12387
12388 2001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
12389
12390 * throw.c: Lazy-catch handlers are no longer allowed to return.
12391 Fixed comments throughout.
12392 (scm_ithrow): Signal an error when a lazy-catch handler returns.
12393 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
12394 recognized as such.
12395
12396 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
12397 refered to s_scm_minor_version previously.
12398
12399 * modules.h, modules.c: Moved around a lot of code so that
12400 deprecated features appear at the bottom.
12401 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
12402 module_prefix, make_modules_in_var, beautify_user_module_x_var,
12403 scm_the_root_module, scm_make_module, scm_ensure_user_module,
12404 scm_load_scheme_module): Deprecated.
12405 (scm_system_module_env_p): Return SCM_BOOL_T directly for
12406 environments corresponding to the root module.
12407 (convert_module_name, scm_c_resolve_module,
12408 scm_c_call_with_current_module, scm_c_define_module,
12409 scm_c_use_module, scm_c_export): New.
12410 (the_root_module): New static variant of scm_the_root_module. Use
12411 it everywhere instead of scm_the_root_module.
12412
12413 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
12414 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
12415 (scm_c_with_fluid): New.
12416 (scm_with_fluids): Use scm_c_with_fluids instead of
12417 scm_internal_with_fluids.
12418
12419 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
12420 `scm_init_goops'. Do not explicitly create/switch modules.
12421 Return SCM_UNSPECIFIED.
12422 (scm_init_goops): Only register `%init-goops-builtins' procedure.
12423 (scm_load_goops): Use scm_c_resolve_module instead of
12424 scm_resolve_module.
12425
12426 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
12427 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
12428 `scm_init_rw' prior to loading the startup files.
12429
12430 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
12431 scm_init_rdelim. Do not explicitly create/switch modules.
12432 Return SCM_UNSPECIFIED.
12433 (scm_init_rdelim): Only register `%init-rdelim-builtins'
12434 procedure.
12435
12436 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
12437 explicitly create/switch modules. Return SCM_UNSPECIFIED.
12438 (scm_init_rw): Only register `%init-rw-builtins' procedure.
12439
12440 * script.c (scm_shell): Evaluate the compiled switches in the
12441 current module, not in the root module.
12442
12443 2001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
12444
12445 * fluids.c (scm_c_with_fluids): Rename from
12446 scm_internal_with_fluids.
12447 (scm_internal_with_fluids): Deprecated.
12448 (scm_c_with_fluid): New.
12449
12450 2001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12451
12452 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
12453
12454 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
12455 accessed with SCM_C[AD]R.
12456
12457 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
12458
12459 2001-05-16 Rob Browning <rlb@cs.utexas.edu>
12460
12461 * version.c (s_scm_major_version): doc fixes.
12462 (s_scm_minor_version): doc fixes.
12463 (s_scm_minor_version): new function.
12464
12465 * version.h (scm_init_version): new function.
12466
12467 * versiondat.h.in: add GUILE_MICRO_VERSION.
12468
12469 2001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
12470
12471 * deprecation.c (scm_init_deprecation): Renamed
12472 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
12473
12474 2001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
12475
12476 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
12477 dependent on cpp_cnvt.awk
12478
12479 2001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12480
12481 * script.c (scm_compile_shell_switches): New command line option
12482 `--use-srfi' for loading a list of SRFIs on startup.
12483 (scm_shell_usage): Added `--use-srfi' to help message.
12484
12485 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12486
12487 Merged from mvo-vcell-cleanup-1-branch.
12488
12489 The concept of vcells has been removed from Guile. With it,
12490 explicit obarrays and associated operations are gone. Use
12491 hashtables instead of obarrays.
12492
12493 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
12494 result as variable instead of vcell. Glocs no longer point to a
12495 vcell but to a variable. Use scm_c_define instead of
12496 scm_sysintern and treat the result as a variable (which it is),
12497 not a vcell.
12498
12499 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
12500 SCM_DEFVARIABLEP): Deprecated.
12501 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
12502 (variable_print): Do not print name of variable.
12503 (variable_equalp): Compare values, not vcells.
12504 (anonymous_variable_sym): Removed.
12505 (make_vcell_variable): Removed.
12506 (make_variable): New, as replacement.
12507 (scm_make_variable, scm_make_undefined_variable): Do not take name
12508 hint parameter.
12509 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
12510 error in that case.
12511 (scm_builtin_variable): Deprecated.
12512
12513 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
12514 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
12515 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
12516 scm_sysintern, scm_sysintern0, scm_symbol_value0,
12517 scm_string_to_obarray_symbol, scm_intern_symbol,
12518 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
12519 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
12520 Deprecated and moved to "symbols-deprecated.c".
12521 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
12522 (scm_init_symbols): Call scm_init_symbols_deprecated.
12523 * symbols-deprecated.c: New file.
12524 * Makefile.am: Added symbols-deprecated.c and related files in all
12525 the right places.
12526
12527 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
12528 SCM_GLOBAL_VCELL_INIT): Deprecated.
12529 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
12530 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
12531
12532 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
12533 SCM_GLOC_SYM.
12534
12535 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
12536 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
12537 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
12538 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
12539 Changed according to the `throughout' comments.
12540
12541 * modules.h, modules.c (scm_module_system_booted_p): Changed type
12542 to `int'.
12543 (scm_module_type): Removed.
12544 (the_root_module): Renamed to the_root_module_var. Now points to
12545 a variable instead of a vcell. Updated all uses.
12546 (scm_the_root_module): Return SCM_BOOL_F when module systems
12547 hasn't been booted yet.
12548 (SCM_VALIDATE_STRUCT_TYPE): Removed.
12549 (scm_post_boot_init_modules): Made static.
12550 (scm_set_current_module): Call scm_post_boot_init_modules on first
12551 call.
12552 (make_modules_in, beautify_user_module_x, resolve_module,
12553 try_module_autoload, module_make_local_var_x): Tacked on "_var"
12554 suffix. Now point to variables instead of vcells. Updated all
12555 uses.
12556 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
12557 and return SCM_BOOL_F in that case.
12558 (scm_module_transformer): Likewise.
12559 (sym_module, scm_lookup_closure_module, scm_env_module): New.
12560 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
12561 (scm_eval_closure_lookup): Do not allow new definitions when
12562 `interface' flag is set.
12563 (scm_standard_interface_eval_closure): New.
12564 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
12565 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
12566 scm_c_lookup, scm_c_module_define, scm_c_define,
12567 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
12568 scm_modules_prehistory): New.
12569 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
12570 instead of scm_intern0.
12571
12572 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
12573 symbol.
12574
12575 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
12576 hashtable operations to maintain the keywords, not obarray ones.
12577
12578 * init.c (scm_load_startup_files): Do not call
12579 scm_post_boot_init_modules. This is done by
12580 scm_set_current_module now.
12581 (scm_init_guile_1): Call scm_modules_prehistory. Call
12582 scm_init_variable early on.
12583
12584 * goops.c (s_scm_sys_goops_loaded): Get
12585 var_compute_applicable_methods from scm_sym2var, not from a direct
12586 invocation of scm_goops_lookup_closure.
12587
12588 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
12589
12590 * gc.c: Added simple debugging hack to mark phase of GC: When
12591 activated, do not tail-call scm_gc_mark. This gives nice
12592 backtraces.
12593 (scm_unhash_name): Removed.
12594
12595 * feature.c (features): Renamed to features_var. Now points to a
12596 variable instead of a vcell. Updated all uses.
12597
12598 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
12599 `scm_current_module_lookup_closure' which will do the right thing
12600 when the module system hasn't been booted yet.
12601 (SCM_GLOC_SYM): Removed.
12602 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
12603 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
12604
12605 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
12606 instead of with vcells. Do not overwrite `var' with the result of
12607 the lookup, use the new `real_var' instead. Remove `var2' in
12608 exchange (which was only used with threads).
12609 (sym_three_question_marks): New.
12610 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
12611 `SCM_GLOC_SYM'.
12612 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
12613 (scm_m_atfop): Expect the function definition to be a variable
12614 instead of a vcell.
12615 (scm_macroexp): Do not use `unmemocar', explicitely remember the
12616 symbol instead.
12617 (scm_unmemocopy): Removed thoughts about anti-macro interface.
12618 (scm_eval_args): Use more explicit code in the gloc branch of the
12619 atrocious struct ambiguity test. The optimizer will sort this
12620 out.
12621 (scm_deval_args): Likewise.
12622 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
12623 remember the symbol instead. Added some comments where
12624 scm_tc3_cons_gloc really exclusively refers to structs.
12625 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
12626 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
12627 of scm_sysintern in general.
12628
12629 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
12630 explicit magic.
12631
12632 * debug.c (s_scm_make_gloc): Only allow proper variables, no
12633 pairs. Put the variable directly in the gloc.
12634 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
12635 (scm_init_debug): Use scm_c_define instead scm_sysintern.
12636
12637 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
12638
12639 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
12640 scm_the_last_stack_fluid_var. It now points to a variable instead
12641 of a vcell. Updated all uses.
12642 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
12643 instead of a vcell. Updated all uses.
12644
12645 * _scm.h: Include "variables.h" and "modules.h" since almost
12646 everybody needs them now.
12647
12648 * root.h (scm_symhash, scm_symhash_vars): Removed.
12649 * gc.c (scm_init_storage): Do not initialize them.
12650
12651 2001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12652
12653 * eval.c (scm_init_eval): Initialize scm_undefineds and
12654 scm_listofnull.
12655
12656 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
12657 like the SCM_NEWCELL macro counterparts.
12658
12659 (scm_init_storage, scm_init_gc): Moved initialization of
12660 scm_tc16_allocated from scm_init_gc to scm_init_storage.
12661
12662 (scm_init_storage): Moved initialization of scm_undefineds and
12663 scm_listofnull to eval.c, initializion of scm_nullstr to
12664 strings.c, initializion of scm_nullvect to vectors.c.
12665
12666 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
12667 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
12668
12669 * init.c (scm_init_guile_1): Reordered some initializations and
12670 added dependcy information comments.
12671
12672 * load.c (scm_init_load): Use scm_nullstr.
12673
12674 * strings.c (scm_init_strings): Initialize scm_nullstr.
12675
12676 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
12677
12678 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
12679
12680 * values.c (print_values): Print as a unreadable object, not as
12681 multiple lines. Thanks to Matthias Köppe!
12682
12683 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
12684
12685 * deprecation.c: Fixed copyright date.
12686
12687 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
12688 DEPRECATION_H to SCM_DEPRECATION_H.
12689
12690 2001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
12691
12692 * guile-doc-snarf.in: Update copyright.
12693 Fix relative path bug. Thanks to Sergey Poznyakoff.
12694
12695 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12696
12697 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
12698 accept open ports. Thanks to Quetzalcoatl Bradley!
12699
12700 2001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12701
12702 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
12703 has 779 primitives on startup.
12704
12705 2001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
12706
12707 * eval.c (scm_i_eval): Copy expression before passing it to
12708 SCM_XEVAL. The copy operation was removed unintendedly during my
12709 change on 2001-03-25.
12710
12711 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12712
12713 from Matthias Köppe (thanks!):
12714
12715 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12716 portable.
12717
12718 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12719 docstring.
12720
12721 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12722
12723 * gc.c (scm_init_gc): Added FIXME comment.
12724
12725 * hooks.c: Since hooks don't have a name any more, it is not
12726 necessary to include objprop.h.
12727
12728 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12729
12730 (symbol_name, scm_make_hook_with_name): Removed.
12731
12732 (scm_create_hook): Don't set the hook's name property.
12733
12734 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12735
12736 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12737
12738 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12739
12740 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12741 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12742 FLOBUFLEN and define it unconditionally.
12743
12744 2001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12745
12746 * gh_data.c (gh_lookup): Call gh_module_lookup with
12747 `scm_current_module ()', not `#f'.
12748 (gh_module_lookup): Expect a module instead of an obarray as first
12749 argument and do lookup in that module.
12750
12751 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12752 arrays. The length of array is already determined differently and
12753 scm_uniform_vector_length does not work on arrays.
12754
12755 2001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12756
12757 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12758 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12759
12760 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12761 they are not used. Changed `wrong type' error into `wrong num
12762 args' error. Changed all callers.
12763
12764 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12765 arguments are supplied.
12766
12767 2001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12768
12769 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12770 describe `regexp/notbol' and `regexp/noteol' execution flags.
12771
12772 * strop.c (scm_substring_move_x): Doc fix; nfc.
12773
12774 2001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12775
12776 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12777 (scm_set_object_procedure_x): Use it to check argument. Fix
12778 docstring.
12779
12780 * evalext.c (scm_definedp): Fix docstring.
12781
12782 2001-05-05 Gary Houston <ghouston@arglist.com>
12783
12784 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12785 support.
12786
12787 2001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12788
12789 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12790 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12791 Change R4RS references to R5RS.
12792
12793 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12794 docstring source are correctly reproduced in the output (ii)
12795 we don't anymore get occasional trailing quotes. Also reorganized
12796 and commented the code a little.
12797
12798 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12799 fixes.
12800
12801 2001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12802
12803 * strop.c (scm_string_split): New procedure.
12804
12805 * strop.h (scm_string_split): Added prototype.
12806
12807 2001-05-04 Gary Houston <ghouston@arglist.com>
12808
12809 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12810 Dale P. Smith.
12811
12812 2001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12813
12814 * rw.c: Include "modules.h" and "strports.h".
12815
12816 * net_db.h (scm_gethost): Added prototype.
12817
12818 * deprecation.h, deprecation.c: New.
12819 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12820 (DOT_X_FILES): Added "deprecation.x".
12821 (modinclude_HEADERS): Added "deprecation.h".
12822
12823 * init.c: Include "deprecation.h".
12824 (scm_init_guile_1): Call scm_init_deprecation.
12825
12826 2001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12827
12828 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12829 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12830 New.
12831
12832 2001-04-29 Gary Houston <ghouston@arglist.com>
12833
12834 * rw.c: new file, implementing C part of module (ice-9 rw).
12835 (scm_read_string_x_partial): moved from ioext.c
12836 (scm_init_rw): new proc.
12837 * rw.h: new file.
12838 init.c: include rw.h and call scm_init_rw.
12839 Makefile.am: include rw.c and rw.h.
12840
12841 2001-04-28 Rob Browning <rlb@cs.utexas.edu>
12842
12843 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12844 know what's supposed to happen to it.
12845
12846 * list.h (scm_list_star): deprecation expired - removed.
12847
12848 * numbers.h (scm_dblproc): deprecation expired - removed.
12849 (SCM_UNEGFIXABLE): deprecation expired - removed.
12850 (SCM_FLOBUFLEN): deprecation expired - removed.
12851 (SCM_INEXP): deprecation expired - removed.
12852 (SCM_CPLXP): deprecation expired - removed.
12853 (SCM_REAL): deprecation expired - removed.
12854 (SCM_IMAG): deprecation expired - removed.
12855 (SCM_REALPART): deprecation expired - removed.
12856 (scm_makdbl): deprecation expired - removed.
12857 (SCM_SINGP): deprecation expired - removed.
12858 (SCM_NUM2DBL): deprecation expired - removed.
12859 (SCM_NO_BIGDIG): deprecation expired - removed.
12860
12861 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12862 (scm_tc_dblr): deprecation expired - removed.
12863 (scm_tc_dblc): deprecation expired - removed.
12864 (scm_tc16_flo): deprecation expired - removed.
12865 (scm_tc_flo): deprecation expired - removed.
12866
12867 * tag.h (scm_tag): deprecation expired - removed.
12868
12869 * tag.c: (scm_tag): deprecation expired - removed.
12870
12871 * ioext.c: (scm_fseek): deprecation expired - removed.
12872
12873 * ioext.h (scm_fseek): deprecation expired - removed.
12874
12875 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12876
12877 * gh.h (gh_int2scmb): deprecation expired - removed.
12878
12879 2001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12880
12881 * stacks.c (scm_make_stack): Fix typo in docstring.
12882
12883 2001-04-27 Rob Browning <rlb@cs.utexas.edu>
12884
12885 * error.c (scm_sysmissing): deprecation expired - removed.
12886
12887 * error.h (scm_sysmissing): deprecation expired - removed.
12888
12889 * gc.c
12890 (scm_init_gc): gc-thunk deprecation expired - removed.
12891 (scm_gc_vcell): deprecation expired - removed.
12892 (gc_async_thunk): scm_gc_vcell related code removed.
12893
12894 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12895
12896 * strings.h
12897 (SCM_NSTRINGP): deprecation expired - removed.
12898 (SCM_NRWSTRINGP): deprecation expired - removed.
12899
12900 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12901
12902 * chars.h
12903 (SCM_ICHRP): deprecation expired - removed.
12904 (SCM_ICHR): deprecation expired - removed.
12905 (SCM_MAKICHR): deprecation expired - removed.
12906
12907 * ports.h
12908 (SCM_INPORTP): deprecation expired - removed.
12909 (SCM_OUTPORTP): deprecation expired - removed.
12910
12911 2001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12912
12913 * modules.c (scm_module_type): New.
12914 (scm_post_boot_init_modules): Initialize from Scheme value.
12915 (the_module, scm_current_module, scm_init_modules): the_module is
12916 now a C only fluid.
12917 (scm_current_module): Export to Scheme.
12918 (scm_set_current_module): Do not call out to Scheme, do all the
12919 work in C. Export procedure to Scheme. Only accept modules, `#f'
12920 is no longer valid as the current module. Only set
12921 scm_top_level_lookup_closure_var and scm_system_transformer when
12922 they are not deprecated.
12923 (scm_module_transformer, scm_current_module_transformer): New.
12924
12925 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12926 scm_current_module_transformer, scm_module_transformer): New.
12927
12928 * gh_data.c: Removed FIXME comment about gh_lookup returning
12929 SCM_UNDEFINED. That's the right thing to do.
12930
12931 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12932 into the conditionally compiled sections.
12933 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12934 scm_current_module_transformer instead of scm_system_transformer.
12935 * init.c (start_stack): Move initialization of
12936 scm_system_transformer to the deprecated section.
12937
12938 2001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12939
12940 * throw.c (scm_throw): Correct docstring.
12941
12942 2001-04-22 Gary Houston <ghouston@arglist.com>
12943
12944 * socket.c: attempted to improve the docstrings slightly.
12945
12946 * net_db.c: remove bogus "close" declaration.
12947 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12948 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12949 moved to socket.c.
12950 * net_db.h: declarations moved too.
12951
12952 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12953 long.
12954 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12955 (VALIDATE_INET6): new macro.
12956 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12957 inet-pton and inet-ntop.
12958 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12959 (scm_addr_vector): use ipv6_net_to_num.
12960
12961 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12962
12963 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12964 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12965
12966 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12967 when compiled in debug mode.
12968
12969 (scm_gc_sweep): Only call smob's free function if it is defined.
12970
12971 * print.c (scm_iprin1): No need to check for validity of smob
12972 type or existence of print function.
12973
12974 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12975 Resizing will not work well with preemptive threading.
12976
12977 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12978
12979 (scm_make_smob_type): Extracted initialization of smob
12980 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12981 of the critical section.
12982
12983 (scm_smob_prehistory): Initialize all smob descriptors. By
12984 default, don't assign a smob free function: Most smob types don't
12985 need one.
12986
12987 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12988
12989 2001-04-21 Gary Houston <ghouston@arglist.com>
12990
12991 * socket.c (FLIP_NET_HOST_128): new macro.
12992 (scm_fill_sockaddr): use new macro.
12993 (scm_addr_vector): completed IPv6 address support. added const
12994 to the address parameter.
12995
12996 2001-04-20 Gary Houston <ghouston@arglist.com>
12997
12998 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12999 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
13000 is defined.
13001 (scm_addr_vector): use a switch instead of multiple if statements.
13002 Add support for IPv6 (incomplete) .
13003 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
13004
13005 2001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
13006
13007 * struct.c (scm_free_structs): Only pairs may be accessed with
13008 SCM_C[AD]R.
13009
13010 2001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13011
13012 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
13013
13014 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13015 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
13016 parentheses in order to get the correct associativity.
13017
13018 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13019
13020 * unif.c (scm_array_to_list): Added missing handling of arrays of
13021 bytes. Thanks to Masao Uebayashi for the bug report.
13022
13023 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13024
13025 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
13026 consistently.
13027
13028 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13029
13030 * procs.h (SCM_CLOSURE_FORMALS): New macro.
13031
13032 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
13033 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
13034 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
13035 SCM_CLOSURE_FORMALS.
13036
13037 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
13038 (scm_i_procedure_arity): Prefer stronger predicates like
13039 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13040
13041 * macros.c (macro_print): Extracted macro printing code from
13042 print.c and simplified it.
13043
13044 (scm_macro_type): Use SCM_MACRO_TYPE;
13045
13046 (scm_init_macros): Use macro_print for printing macros.
13047
13048 * print.c (scm_print_opts): Improved option documentation.
13049
13050 (scm_iprin1): Extracted printing of macros to macros.c.
13051 Simplified printing of ordinary closures.
13052
13053 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
13054 Martin Grabmueller for the bug report.
13055
13056 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13057
13058 This patch eliminates some further applications of SCM_C[AD]R to
13059 non pair cells.
13060
13061 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
13062 never been applied to real pairs.
13063
13064 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
13065
13066 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
13067
13068 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
13069 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
13070 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
13071
13072 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
13073 Added.
13074
13075 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
13076 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
13077
13078 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
13079 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
13080 SCM_SET{AND,OR}_CAR.
13081
13082 2001-04-17 Gary Houston <ghouston@arglist.com>
13083
13084 * some initial support for IPv6:
13085
13086 * socket.c (scm_fill_sockaddr): improve the argument validation.
13087 don't allocate memory until all args are checked. instead of
13088 unconditional memset of soka, try setting sin_len to 0 if
13089 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
13090 (scm_socket, scm_connect): extend docstrings for IPv6.
13091 (scm_init_socket): intern AF_INET6 and PF_INET6.
13092
13093 2001-04-17 Niibe Yutaka <gniibe@m17n.org>
13094
13095 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
13096 matches SCM_DEFER_INTS at the beginning of the function.
13097
13098 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
13099
13100 * gc.c (scm_igc): Unconditionally call
13101 SCM_CRITICAL_SECTION_START/END.
13102
13103 * fluids.c (next_fluid_num): Unconditionally call
13104 SCM_CRITICAL_SECTION_START/END.
13105 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
13106
13107 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
13108 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
13109 Removed.
13110
13111 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
13112 Defined as nothing for the case of !defined(USE_THREADS).
13113 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
13114 Removed.
13115 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
13116 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
13117 LINE.
13118 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
13119 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
13120 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
13121 SCM_CRITICAL_SECTION_START/END.
13122 (SCM_REALLOW_INTS: Bug fix. Don't call
13123 SCM_THREAD_SWITCHING_CODE.
13124 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
13125 SCM_THREAD_SWITCHING_CODE directly.
13126 (SCM_ENTER_A_SECTION): Unconditionally use
13127 SCM_CRITICAL_SECTION_START/END. (was:
13128 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
13129
13130 2001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13131
13132 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
13133 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
13134 allowed to explicitly set this macro via the CFLAGS variable
13135 during make.
13136
13137 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
13138 (SCM_THREAD_CRITICAL_SECTION_START,
13139 SCM_THREAD_CRITICAL_SECTION_END): Renamed
13140 SCM_THREAD_CRITICAL_SECTION_START/END to
13141 SCM_CRITICAL_SECTION_START/END.
13142
13143 2001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
13144
13145 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
13146 instead of bzero.
13147
13148 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
13149 (MISSING_BZERO_DECL): Remove the declaration.
13150
13151 Thanks to NIIBE Yutaka.
13152
13153 2001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13154
13155 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
13156 goops module should be registered in order to work for an
13157 application which uses libguile statically linked.)
13158
13159 2001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
13160
13161 * numbers.[ch] (scm_num2long, scm_num2long_long,
13162 scm_num2ulong_long, scm_num2ulong): Argument position is an
13163 unsigned integer.
13164
13165 * environments.c (eval_environment_folder,
13166 import_environment_folder), gh_data.c (gh_scm2longs,
13167 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
13168 for integers and pointers, respectively.
13169
13170 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
13171 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
13172 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
13173 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
13174
13175 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
13176 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
13177 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
13178 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
13179 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
13180 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
13181
13182 2001-04-09 Neil Jerram <neil@ossau.uklinux.net>
13183
13184 * strings.c (scm_read_only_string_p): Update docstring to reflect
13185 current (non-)usage of "read only" strings.
13186 (scm_make_shared_substring): Clarify docstring by changing
13187 "semantics" to "arguments".
13188
13189 2001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13190
13191 * hooks.c (scm_make_hook, scm_make_hook_with_name),
13192 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
13193 improvements.
13194
13195 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13196
13197 The following changes make the documentation more consistent.
13198
13199 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
13200 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
13201 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
13202 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
13203 ... @end lisp.
13204
13205 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
13206 (scm_array_dimensions, scm_make_shared_array),
13207 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
13208 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
13209 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
13210 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
13211 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
13212 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
13213 macros.c (scm_makmmacro), list.c (scm_append), environments.c
13214 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
13215 @example ... @end example to @lisp ... @end lisp.
13216
13217 * weaks.c (scm_weak_vector): Corrected docstring.
13218
13219 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
13220 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
13221 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
13222 (scm_hashx_set_x, scm_hashx_get_handle),
13223 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
13224 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
13225 vectors.c (scm_vector_fill_x), strings.c
13226 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
13227 objprop.c (scm_set_object_properties_x):
13228 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
13229 strports.c (scm_call_with_input_string), ports.c
13230 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
13231 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
13232 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
13233 (scm_make_weak_vector,scm_weak_vector_p),
13234 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
13235 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
13236 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13237 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
13238 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
13239 Made parameter names match documentation by renaming parameters
13240 and/or fixing docstrings.
13241
13242 * numbers.c (scm_ash): Corrected Texinfo markup.
13243
13244 * strop.c (scm_string_index, scm_string_rindex),
13245 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
13246
13247 * vports.c (scm_make_soft_port), unif.c
13248 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
13249 (scm_dimensions_to_uniform_array, scm_transpose_array),
13250 (scm_array_in_bounds_p, scm_uniform_vector_ref),
13251 (scm_bit_count, scm_bit_position, scm_bit_count_star),
13252 (scm_array_to_list, scm_list_to_uniform_array),
13253 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
13254 (scm_open_input_string, scm_open_output_string),
13255 (scm_get_output_string), strop.c (scm_string_copy),
13256 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
13257 (scm_get_internal_real_time, scm_times),
13258 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
13259 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
13260 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
13261 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
13262 simpos.c (scm_system), random.c (scm_random_uniform),
13263 (scm_random_normal, scm_random_exp), ramap.c
13264 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
13265 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
13266 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
13267 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
13268 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
13269 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
13270 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
13271 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
13272 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
13273 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
13274 (scm_logand, scm_logior, scm_logxor, scm_lognot),
13275 (scm_integer_expt, scm_bit_extract, scm_logcount),
13276 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
13277 net_db.c (scm_inet_netof, scm_lnaof), modules.c
13278 (scm_interaction_environment), macros.c (scm_makacro),
13279 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
13280 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
13281 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
13282 (scm_fluid_ref), filesys.c (scm_open_fdes),
13283 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
13284 Docstring correction: `Returns' -> `Return'
13285
13286 * gc.c (scm_set_debug_cell_accesses_x):
13287 (s_scm_gc_set_debug_check_freelist_x):
13288 * fluids.c (scm_fluid_p): Added texinfo markup.
13289
13290 * error.c (scm_strerror): Made docstring more precise.
13291
13292 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
13293 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
13294 (scm_symbol_p, scm_symbol_to_string), strorder.c
13295 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
13296 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
13297 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
13298 (scm_string_ci_geq_p), strop.c (scm_string_copy),
13299 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
13300
13301 2001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
13302
13303 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
13304 mode, as suggested by Michael Livshin.
13305
13306 2001-03-31 Michael Livshin <mlivshin@bigfoot.com>
13307
13308 * backtrace.c (display_backtrace_body): since the `print_state'
13309 variable is not used (instead its data field is used directly as
13310 `pstate'), protect it from the hungry compiler optimizations.
13311 thanks to Bill Schottstaedt for the report.
13312
13313 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13314
13315 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
13316 It is only defined and used if guile is compiled with
13317 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
13318 let cells with a free_cell type tag be visible outside of the
13319 garbage collector when in debug mode.
13320
13321 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
13322
13323 (scm_assert_cell_valid): Use a local static variable to avoid
13324 recursion.
13325
13326 (MARK): Only check for rogue cell pointers in debug mode. Use
13327 scm_cellp for this purpose and place all checks for rogue pointers
13328 into that function. Further, since due to conservative scanning
13329 we may encounter free cells during marking, don't use the standard
13330 cell type accessor macro to determine the cell type.
13331
13332 (scm_cellp): Check if the cell pointer actually points into a
13333 card header.
13334
13335 (scm_init_gc): Initalize scm_tc16_allocated.
13336
13337 * gc.h (GCH): Renamed to SCM_GC_H.
13338
13339 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
13340 might be unnecessary, but I feel better this way :-)
13341
13342 (SCM_GC_CELL_TYPE): New macro.
13343
13344 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
13345 in guile, and it is unlikely that they will be applied to real
13346 pairs anyway.
13347
13348 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
13349
13350 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
13351 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
13352
13353 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
13354 make sure that in debug mode no free cell will ever be visible
13355 outside of the garbage collector.
13356
13357 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13358
13359 * async.c (scm_asyncs_pending): Don't use != to compare SCM
13360 values.
13361
13362 * async.c (scm_system_async), variable.c (scm_make_variable,
13363 scm_make_undefined_variable): Use scm_cons to create a pair.
13364
13365 * debug.c (scm_reverse_lookup): Perform proper type checking.
13366 Remove suspicious use of SCM_SLOPPY_CONSP.
13367
13368 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
13369 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
13370 the corresponding optimization.
13371
13372 * eval.c (iqq): Use proper type check.
13373
13374 (scm_m_expand_body): Remove redundant type checks.
13375
13376 (promise_print): Don't access promise cells as pairs.
13377
13378 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
13379 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
13380 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
13381 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
13382 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
13383
13384 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
13385 (scm_iprin1): Use new macro predicate and accessors.
13386
13387 * eval.h (scm_tc16_macro): Removed declaration. It is declared
13388 in macros.h.
13389
13390 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
13391 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
13392 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
13393 SCM_VARIABLE_H. Even the macros that are used to inhibit
13394 including a header file twice should be in the SCM_ namespace.
13395
13396 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
13397 properties.c (scm_primitive_property_ref,
13398 scm_primitive_property_del_x): Prefer stronger predicates like
13399 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13400
13401 * gc.c (MARK): Use proper macros to access procedure-with-setter
13402 cell elements and closure cell elements.
13403
13404 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
13405 access free cells as pairs.
13406
13407 (scm_unprotect_object): scm_hashq_get_handle returns #f if
13408 no hashtab entry is found.
13409
13410 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
13411 SCM_CLR_PORT_OPEN_FLAG.
13412
13413 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
13414 use SCM_SET_C[AD]R for uninitialized cells.
13415
13416 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
13417 If the hashtable has no slots, return #f instead of '(). This
13418 unifies the return value with most assoc-functions.
13419
13420 (scm_hash_fn_ref): Use proper type check.
13421
13422 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
13423 Removed references to non-existing functions from documentation.
13424
13425 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
13426 access keyword cell elements.
13427
13428 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
13429 macros.
13430
13431 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
13432
13433 * print.c (scm_iprlist): Added comment. Improved loop
13434 conditions.
13435
13436 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
13437 pairs.
13438
13439 * smob.c (scm_markcdr): Don't access smob cells as pairs.
13440
13441 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
13442
13443 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
13444 cells as pairs.
13445
13446 * variable.c (variable_print, variable_equalp, scm_variable_ref,
13447 scm_variable_set_x): Use proper macros to access variable cell
13448 elements.
13449
13450 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
13451
13452 * variable.h (SCM_VARVCELL): Don't access variable cells as
13453 pairs.
13454
13455 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
13456 added FIXME comment, removed register specifier.
13457
13458 2001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
13459
13460 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
13461 * init.c (scm_init_guile_1): Don't init goopscore module.
13462
13463 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13464
13465 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
13466
13467 2001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13468
13469 * strop.c (scm_string_to_list): Fixed docstring markup.
13470 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
13471 (scm_string_downcase, scm_string_capitalize_x),
13472 (scm_string_capitalize): Rewrote and corrected docstrings.
13473 (scm_string_ci_to_symbol): Made docstring more explicit.
13474
13475 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13476
13477 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
13478 eval.c can use it.
13479 (scm_call_with_values): Removed.
13480 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
13481 so that it can be exported.
13482 (scm_call_with_values): Removed.
13483
13484 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
13485 * eval.c: Include "libguile/values.h"
13486 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
13487 New.
13488 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
13489 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
13490 New delcarations to support above change.
13491
13492 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
13493 errors with last change.
13494
13495 2001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
13496
13497 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
13498 scm_i_eval): Moved the application of the system transformer from
13499 scm_i_eval to scm_primitive_eval.
13500
13501 2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
13502
13503 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
13504
13505 * strop.c (scm_string_index): Fix docstring line break
13506 regression.
13507
13508 * list.c (scm_cons_star): Fix docstring typo.
13509
13510 2001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13511
13512 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
13513 (big2str), ports.c (scm_drain_input), read.c (scm_read,
13514 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
13515 scm_make_string, scm_string_append), strports.c (st_resize_port,
13516 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
13517 scm_makstr with calls to scm_allocate_string.
13518
13519 * strings.[ch] (scm_allocate_string): New function.
13520
13521 * strings.[ch] (scm_makstr): Deprecated.
13522
13523 2001-03-18 Gary Houston <ghouston@arglist.com>
13524
13525 * posix.c (scm_tmpnam): check that return value from tmpnam is not
13526 NULL. rewrote the docstring.
13527 (scm_mkstemp): new procedure implementing "mkstemp!".
13528 * posix.h: declare scm_mkstemp.
13529
13530 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
13531 normally it would be found in netdb.h.
13532
13533 2001-03-17 Gary Houston <ghouston@arglist.com>
13534
13535 * sort.c (scm_sort): move sortvec variable to avoid a compiler
13536 warning when HAVE_ARRAYS is not defined. move len too.
13537
13538 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
13539 (EXTRA_DOT_X_FILES): let configure set the value.
13540 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
13541
13542 * gc.c (scm_must_malloc): changed the comment explaining when
13543 scm_must variants of malloc/free etc., should be used, based on
13544 explanation from Dirk Herrmann.
13545 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
13546 string with procedure name. use scm_must_malloc instead of malloc.
13547 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
13548 of malloc/free.
13549 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
13550 scm_ungetc): use scm_must variants of malloc/realloc/free.
13551 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
13552
13553 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13554
13555 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13556 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
13557 scm_wrong_type_arg instead.
13558
13559 (SCM_WNA): Deprecated.
13560
13561 * error.[ch] (scm_wta): Deprecated.
13562
13563 * numbers.c (s_i_log): Minor comment fix.
13564
13565 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
13566 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
13567 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
13568 wrong-num-args or misc errors.
13569
13570 * unif.c (scm_make_shared_array, scm_transpose_array,
13571 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
13572 Validate the rest argument (note: this is only done when guile is
13573 built with SCM_DEBUG_REST_ARGUMENT=1)
13574
13575 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
13576 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
13577
13578 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
13579 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
13580
13581 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13582
13583 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
13584 instead of scm_wrong_num_args.
13585
13586 * coop-threads.c: Don't include libguile/strings.h. (Was only
13587 needed for former implementation of SCM_WRONG_NUM_ARGS.)
13588
13589 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
13590 wrong-num-args errors.
13591
13592 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13593
13594 * error.[ch] (scm_error_num_args_subr): New function.
13595
13596 2001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13597
13598 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
13599 (scm_length, scm_append, scm_reverse, scm_list_ref),
13600 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
13601 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
13602 (scm_delete1_x), gc.c (scm_map_free_list),
13603 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
13604 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
13605 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
13606 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
13607 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
13608 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
13609 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
13610
13611 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
13612 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13613 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
13614 symbols.c (scm_symbol_interned_p), numbers.c
13615 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
13616 markup.
13617
13618 2001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
13619
13620 * snarf.h (SCM_CONST_LONG): Deprecated.
13621 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
13622
13623 2001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13624
13625 * numbers.c (scm_num2ulong): Check that a bignum is positive
13626 before looking at the magnitude. Correctly check for overflow
13627 during conversion.
13628 (scm_num2long_long): Likewise.
13629 (scm_num2ulong_long): New.
13630 (ULONG_LONG_MAX): Define if not already defined.
13631 * numbers.h: (scm_num2ulong_long): New prototype.
13632
13633 2001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13634
13635 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
13636
13637 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
13638 (SCM_OPOUTSTRPORTP): New predicate macros.
13639 (scm_open_input_string, scm_open_output_string),
13640 (scm_get_output_string): New prototypes.
13641
13642 * strports.c (scm_open_input_string, scm_open_output_string),
13643 (scm_get_output_string): New procedures (SRFI-6 compliant).
13644 Made scm_tc16_strport non-static.
13645
13646 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13647
13648 * macros.h (SCM_ASSYNT): Removed unused object argument from
13649 signature.
13650
13651 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
13652 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
13653 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
13654 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
13655 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
13656 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
13657 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
13658 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13659 scm_m_atdispatch): Removed unused object argument from call to
13660 SCM_ASSYNT.
13661
13662 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13663
13664 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
13665 const int* to reflect that the input array of integers remains
13666 unchanged. Thanks to Brett Viren for the hint.
13667
13668 2001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13669
13670 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
13671 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
13672 in various places.
13673 (gh_scm2newstr, gh_symbol2newstr): Change call to
13674 scm_must_malloc() to malloc(), because user-free()able memory is
13675 allocated.
13676
13677 * gc.c: Added declaration of `scm_debug_check_freelist'.
13678
13679 2001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13680
13681 * ports.c (scm_port_mode): Changed `mode' array size to 4.
13682
13683 2001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
13684
13685 * strports.c (scm_object_to_string): New procedure.
13686 (scm_strprint_obj): Deprecated.
13687 * strports.h: Reflect the changes.
13688
13689 2001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
13690
13691 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
13692
13693 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13694 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
13695 SCM_ASSYNT to check for correct argument types. Either use some
13696 SCM_VALIDATE_* macro or an explicit test.
13697
13698 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
13699 misc-errors.
13700
13701 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
13702 instead of calling scm_wta.
13703
13704 2001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13705
13706 * load.c (scm_primitive_load, scm_primitive_load_path),
13707 (scm_sys_search_load_path): Corrected docstrings (file ->
13708 filename).
13709
13710 * eval.c (scm_force): Added texinfo markup to docstring.
13711 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13712
13713 * debug-malloc.c: Reinserted #include <stdio.h>.
13714
13715 2001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13716
13717 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13718
13719 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13720 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13721 Use SCM_LISTn instead of scm_listify.
13722
13723 2001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13724
13725 * _scm.h: Removed #include <errno.h>.
13726
13727 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13728 errno variable (can be a macro on some systems, for example when
13729 using linux libc with threads).
13730
13731 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13732 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13733 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13734 #include <errno.h> in these 20 out of 100 files.
13735
13736 2001-03-10 Gary Houston <ghouston@arglist.com>
13737
13738 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13739 not already defined.
13740
13741 2001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13742
13743 * coop.c: Inserted #include <stdio.h>.
13744
13745 * iselect.c: Reinserted #include <stdio.h>.
13746
13747 2001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13748
13749 * posix.c: Replaced `#define' of __USE_XOPEN right before
13750 including unistd.h with a define of _GNU_SOURCE at the very top of
13751 the file.
13752
13753 2001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13754
13755 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13756 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13757 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13758 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13759 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13760 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13761 print.c, procprop.c, procs.c, properties.c, ramap.c,
13762 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13763 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13764 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
13765 Remove #include <stdio.h>
13766 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13767
13768 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13769
13770 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13771
13772 * posix.c (scm_gethostname): Set initial name length to 256 for
13773 Solaris.
13774
13775 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13776
13777 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13778 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13779 (scm_sethostname, scm_gethostname): New prototypes.
13780
13781 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13782 <sys/file.h>, if present.
13783 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13784 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13785 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13786 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13787 (scm_sethostname, scm_gethostname): New procedures.
13788
13789 2001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13790
13791 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13792 not optional (ii) "recommend" spelling correction.
13793
13794 2001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13795
13796 * ramap.c (racp): Removed optimization which caused array copying
13797 to fail if the two arrays shared storage. Re-inserted the IVDEP
13798 macros removed in the change of 2000-03-09. (Don't really have a
13799 complete grasp of what they are for, but they seem to be necessary
13800 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13801
13802 * hash.c (scm_string_hash): Don't downcase characters.
13803
13804 2001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13805
13806 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
13807 size from 277 --> 1009.
13808
13809 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13810 function.
13811
13812 * coop-threads.c: Fixed change of 2001-03-06.
13813
13814 * validate.h: Code formatting.
13815
13816 2001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13817
13818 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13819 (*.doc): Add dependency on guile-snarf.awk.in.
13820
13821 * guile-snarf.awk.in: Neglect spaces at the end of
13822 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13823 middle of docstrings. (To avoid the problem with gcc-2.96.)
13824
13825 2001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13826
13827 * coop-threads.c (scm_call_with_new_thread), load.c
13828 (scm_primitive_load, scm_sys_search_load_path), random.c
13829 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13830 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13831 (potentially) issue a scm-misc-error or wrong-num-args error
13832 message.
13833
13834 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13835 about the expected type with the wrong-type-arg error message.
13836
13837 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13838 a C level bug that can't be fixed from scheme anyway.
13839
13840 2001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13841
13842 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13843 Duplicate bindings are OK in a let* since a let* is semantically
13844 equivalent to a nested set of let:s.
13845
13846 2001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13847
13848 * print.c (scm_print_options): Fixed texinfo in docstring.
13849
13850 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13851 the underlying functions getservent, getprotoent or getnetent
13852 return NULL instead of signalling an error.
13853
13854 2001-03-04 Gary Houston <ghouston@arglist.com>
13855
13856 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13857 taking an unexpectedly large filename for an AF_UNIX socket from
13858 bind/connect/sendto (thanks to Martin Grabmueller).
13859
13860 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13861 former and adjusted the latter.
13862 (scm_socket, scm_socketpair): cosmetic changes.
13863 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13864 size_t as socklen_t substitute. don't restrict args/return values
13865 to INUM: allow full range of int or size_t.
13866 (scm_fill_sockaddr): check arguments before allocating memory, to
13867 avoid leakage. use malloc, not scm_must_malloc.
13868 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13869 substitute. free the sockaddr structure before throwing an error.
13870 (scm_init_add_buffer): procedure removed, together with its static
13871 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13872 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13873 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13874 scm_sendto): use a local buffer instead of scm_addr_buffer.
13875 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13876 not size_t.
13877 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13878 call to detect whether recvfrom could be bothered to set the address.
13879 (scm_init_socket): don't call scm_init_addr_buffer.
13880
13881 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13882
13883 * debug.c (scm_procedure_source, scm_procedure_environment),
13884 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13885 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13886 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13887 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13888 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13889 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13890 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13891 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13892 scm_array_to_list, scm_array_prototype), validate.h
13893 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13894 scm_misc_error or scm_wrong_type_arg instead.
13895
13896 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13897
13898 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13899
13900 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13901 (scm_sys_tag_body): Added.
13902
13903 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13904
13905 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13906 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13907 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13908 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13909 options.c (scm_options), ports.c (scm_remove_from_port_table),
13910 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13911 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13912 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13913 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13914 instead.
13915
13916 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13917
13918 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13919
13920 2001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13921
13922 * eval.c (scm_s_duplicate_bindings): New error message.
13923 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13924
13925 2001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13926
13927 * eval.h (SCM_EVALIM2): New macro. Use it when a
13928 immediate, literal constant should be evaluated.
13929 * eval.c (scm_s_duplicate_formals): New error message string.
13930 (scm_c_improper_memq): New function.
13931 (scm_m_lambda): Check for duplicate arguments.
13932 (scm_ceval, scm_deval): When executing a body: only cons a new
13933 toplevel environment frame when it is different from the
13934 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13935 check for empty combinations; use SCM_EVALIM2 for the same reason
13936 in the non-toplevel loop.
13937 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13938 New labels with the meaning of their non-"nontoplevel" partners,
13939 but they are used when it is known that the body is not evaluated at
13940 top-level.
13941 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13942 reporting for empty combinations.
13943
13944 2001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13945
13946 * Remove dump facilities.
13947 * dump.c, dump.h: Removed.
13948 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13949 * init.c: Remove #include "libguile/dump.h".
13950 (scm_init_guile_1): Remove scm_init_dump.
13951 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13952 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13953 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13954 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13955
13956 * keywords.c: Remove #include "libguile/dump.h".
13957 (keyword_dump, keyword_undump): Removed.
13958 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13959
13960 2001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13961
13962 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13963 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13964 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13965 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13966 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13967 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13968 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13969 to @code{} as the texinfo manual recommends, converted the
13970 examples to use a @lisp{}-environment.
13971
13972 * strports.c (scm_eval_string): Cleaned up the docstring.
13973
13974 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13975 markup.
13976
13977 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13978 (scm_number_to_string, scm_string_to_number, scm_number_p)
13979 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13980 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13981 (scm_ash): Added texinfo markup and removed obsolete @refill.
13982 (scm_gr_p): Corrected comment.
13983 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13984 docstring) comments.
13985 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13986 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13987 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13988 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13989 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13990 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13991 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13992 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13993
13994 2001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13995
13996 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13997 (Obviously nobody compiles with SCM_RECKLESS defined...)
13998
13999 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
14000
14001 2001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14002
14003 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
14004
14005 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
14006
14007 2001-02-24 Neil Jerram <neil@ossau.uklinux.net>
14008
14009 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
14010 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
14011 since use of `z' suggests that the arguments may be complex.
14012
14013 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
14014 typos.
14015
14016 2001-02-23 Neil Jerram <neil@ossau.uklinux.net>
14017
14018 * dump.c (scm_binary_write, scm_binary_read), eval.c
14019 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
14020 scm_guardian_greedy_p, scm_make_guardian), fports.c
14021 (scm_file_port_p): Minor docstring fixes.
14022
14023 2001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
14024
14025 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
14026
14027 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
14028 scm_i_eval.
14029 (make_class_from_template): Do not bother to set the current
14030 module around the call to DEFVAR, scm_eval takes care of that.
14031 (scm_init_goops): Make scm_module_goops and
14032 scm_goops_lookup_closure permanent objects.
14033
14034 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
14035 top level, create a fresh top-level environment for each
14036 expression instead of mutating the exisint frame. This is
14037 important when that frame is closed over.
14038
14039 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
14040 SCM_DIGSPERLONG instead of DIGSPERLONG.
14041
14042 2001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
14043
14044 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
14045 before applying arrow procedure in `cond' and before applying
14046 receiver procedure in call-with-current-continuation.
14047 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
14048 macro. The argument is expanded more than one time.
14049
14050 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
14051 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
14052
14053 2001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
14054
14055 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
14056 notice and license.
14057
14058 2001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14059
14060 * variable.c (scm_make_variable, scm_make_undefined_variable)
14061 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
14062 (scm_variable_bound_p), values.c (scm_values)
14063 (scm_call_with_values), unif.c (scm_bit_count)
14064 (scm_bit_set_star_x), symbols.c (scm_gentemp)
14065 (scm_gensym), strings.c (scm_string_p, scm_make_string)
14066 (scm_read_only_string_p, scm_string_length, scm_string_ref)
14067 (scm_string_set_x, scm_substring, scm_string_append), stime.c
14068 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
14069 (scm_copy_random_state, scm_random), print.c (scm_newline)
14070 (scm_write_char, scm_simple_format), debug-malloc.c
14071 (scm_malloc_stats), environments.c (scm_environment_p)
14072 (scm_environment_bound_p, scm_environment_ref)
14073 (scm_environment_fold, scm_environment_define)
14074 (scm_environment_undefine, scm_environment_set_x)
14075 (scm_environment_cell, scm_environment_observe)
14076 (scm_environment_observe_weak, scm_environment_unobserve)
14077 (scm_make_eval_environment, scm_eval_environment_p)
14078 (scm_eval_environment_set_local_x, scm_eval_environment_local)
14079 (scm_eval_environment_imported)
14080 (scm_eval_environment_set_imported_x, scm_make_import_environment)
14081 (scm_import_environment_p, scm_import_environment_imports)
14082 (scm_import_environment_set_imports_x, scm_make_export_environment)
14083 (scm_export_environment_p, scm_export_environment_private)
14084 (scm_export_environment_set_private_x)
14085 (scm_export_environment_signature)
14086 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
14087 Added texinfo markup.
14088
14089 * ports.c (scm_drain_input): Lowercased argument to @var.
14090 (scm_current_input_port, scm_current_output_port): Filled in
14091 missing explanation.
14092 (scm_current_load_port, scm_set_current_output_port)
14093 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
14094 Added texinfo markup.
14095
14096 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
14097 (scm_release_arbiter): Added texinfo markup to docstrings.
14098 Changed `Returns' to `Return'.
14099 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
14100
14101 2001-02-16 Neil Jerram <neil@ossau.uklinux.net>
14102
14103 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
14104 by doubling them to `@@'.
14105
14106 2001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14107
14108 * numbers.c (scm_lognot), random.c (scm_random,
14109 scm_random_normal, scm_random_solid_sphere_x,
14110 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
14111 scm_random_exp), dynwind.c
14112 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
14113
14114 * goops.c (scm_sys_initialize_object, scm_instance_p,
14115 scm_class_name, scm_class_precedence_list, scm_class_slots,
14116 scm_class_environment, scm_generic_function_name,
14117 scm_generic_function_methods, scm_method_generic_function,
14118 scm_method_specializers, scm_method_procedure, scm_make_unbound,
14119 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
14120 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
14121 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
14122 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
14123 scm_class_direct_supers, scm_class_direct_slots,
14124 scm_class_direct_subclasses, scm_class_direct_methods,
14125 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
14126 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
14127 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
14128 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
14129 scm_memoized_environment, scm_procedure_name,
14130 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
14131 objects.c
14132 (scm_class_of, scm_entity_p, scm_operator_p,
14133 scm_set_object_procedure_x, scm_object_procedure,
14134 scm_make_class_object), hooks.c (scm_make_hook_with_name,
14135 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
14136 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
14137 scm_hook_to_list), lang.c
14138 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
14139 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
14140 (scm_print_options, scm_port_with_print_state,
14141 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
14142 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
14143 scm_make_procedure_with_setter, scm_procedure), throw.c
14144 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
14145 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
14146 scm_stack_ref, scm_stack_length, scm_frame_p,
14147 scm_last_stack_frame, scm_frame_number, scm_frame_source,
14148 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
14149 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
14150 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
14151 (scm_dirname, scm_basename), dynwind.c
14152 (scm_wind_chain), read.c (scm_read_options, scm_read,
14153 scm_read_hash_extend), gc.c
14154 (scm_unhash_name), eval.c (scm_eval_options_interface,
14155 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
14156 (scm_display_error, scm_set_print_params_x,
14157 scm_display_application, scm_display_backtrace, scm_backtrace),
14158 async.c (scm_async, scm_system_async, scm_async_mark,
14159 scm_system_async_mark, scm_run_asyncs, scm_noop,
14160 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
14161 scm_mask_signals): Added docstrings.
14162
14163 2001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
14164
14165 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
14166 address of car/cdr. (Thanks to Dirk Herrmann)
14167 Use scm_sizet to obtain the length of strings.
14168 (Thanks to Matthias Koeppe)
14169
14170 2001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
14171
14172 * symbols.c (scm_mem2symbol): Put a empty statement after the
14173 next_symbol label. This is mandated by ANSI, appearantly.
14174
14175 2001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14176
14177 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
14178 sense to compile for a specific kernel version. Do not include
14179 <asm/signal.h> while defining __KERNEL__. This hack should no
14180 longer be needed and caused problems.
14181
14182 2001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
14183
14184 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
14185 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
14186 can not deal with immediates.
14187
14188 2001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
14189
14190 * list.c (scm_list_copy): Validate the first argument.
14191
14192 2001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
14193
14194 Fix evaluator so that top-level expressions are correctly
14195 evaluated with respect to the module system.
14196
14197 * modules.h. modules.c (scm_current_module_lookup_closure): New
14198 function.
14199
14200 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
14201 prototypes.
14202 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
14203 names to better reflect their meaning.
14204
14205 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
14206 evaluated at top-level and synronize lookup closure before
14207 executing every subform.
14208 (scm_primitve_eval_x, scm_primitive_eval): New functions.
14209 (scm_eval_x, scm_eval): Reimplement in terms of
14210 scm_primitive_eval_x and scm_primitive_eval, respectively.
14211
14212 2001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
14213
14214 * macros.c (scm_macro_name, scm_macro_transformer): Use
14215 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
14216 Thanks!
14217
14218 2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
14219
14220 * dump.c (scm_store_bytes): Store data size before data.
14221 (scm_restore_bytes): Restore data size. Takes a pointer to size.
14222 * dump.h (scm_restore_bytes): Updated.
14223
14224 2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
14225
14226 * dump.c: Use double cells for update schedule.
14227
14228 2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
14229
14230 * ports.c (scm_unread_char): Take an optional argument.
14231
14232 2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14233
14234 * modules.h (scm_selected_module, scm_current_module): Renamed
14235 scm_selected_module to scm_current_module to synchronize Scheme
14236 and C names.
14237 (scm_select_module, scm_set_current_module): Likewise. Changed
14238 all uses.
14239
14240 * ports.c (scm_port_for_each): Make a snapshot of the port table
14241 before iterating over it. The table might change while the user
14242 code is running. With the snapshot, the user can depend on the
14243 fact that each port that existed at the start of the iteration is
14244 encountered exactly once. (ice-9 popen) depends on this.
14245
14246 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14247
14248 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
14249
14250 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
14251 range checking for the size parameter. Thanks to Martin
14252 Grabmueller for the hint.
14253
14254 (scm_makstr): Reordered string initialization to make interrupt
14255 deferring unnecessary.
14256
14257 * vectors.c (scm_make_vector): Fixed range checking.
14258
14259 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14260
14261 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
14262
14263 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
14264 checking of the size parameter for type correctness and valid
14265 range. Thanks to Rob Browning for reporting the problem. Instead
14266 of deferring interrupts, scm_remember_upto_here_1 is used.
14267
14268 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14269
14270 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
14271 (scm_dump_cell_update): Removed.
14272 (scm_dump_update): Renamed from scm_dump_object_update.
14273 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
14274 a pointer instead of returning a value.
14275 * keywords.c (keyword_undump): Updated.
14276
14277 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14278
14279 * dump.c, dump.h: Modified a lot.
14280 (SCM_DUMP_COOKIE): Version 0.1
14281 (scm_dump_mark): Removed.
14282 (scm_restore_cell_object, scm_store_cell_object): New functions.
14283
14284 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
14285 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
14286 New slots: dump, undump.
14287 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
14288 Updated.
14289
14290 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
14291 (keyword_undump): Renamed from keyword_alloc.
14292 (scm_init_keywords): Set keyword_dump and keyword_undump.
14293
14294 2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
14295
14296 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
14297 the deprecated SCM_DOUBLE_CELLP.
14298
14299 * tags.h (SCM_DOUBLE_CELLP): deprecated.
14300
14301 2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
14302
14303 * dump.c, dump.h: New files.
14304 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
14305 * init.c: #include "libguile/dump.h".
14306 (scm_init_guile_1): Call scm_init_dump.
14307 * smob.h (scm_smob_descriptor): New slots: dump_mark,
14308 dump_dealloc, dump_store, undump_alloc, undump_restore,
14309 undump_init.
14310 * smob.c (scm_make_smob_type): Init the new slots.
14311 (scm_set_smob_dump, scm_set_smob_undump): New functions.
14312 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
14313
14314 * keywords.c: #include "libguile/dump.h".
14315 (keyword_dealloc, keyword_alloc): New functions.
14316 (scm_init_keywords): Set smob_dump and smob_undump.
14317
14318 2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
14319
14320 * vectors.c (scm_c_make_vector): New function.
14321 * vectors.h (scm_c_make_vector): Declared.
14322 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
14323 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
14324 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
14325 (scm_make_method_cache, scm_i_vector2list,
14326 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
14327 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
14328 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
14329 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
14330 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
14331 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
14332 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
14333 (scm_vector, scm_make_vector): Use scm_c_make_vector.
14334
14335 * hashtab.c (scm_c_make_hash_table): New function.
14336 * hashtab.h (scm_c_make_hash_table): Declared.
14337 * environments.c (scm_make_leaf_environment,
14338 scm_make_eval_environment), gc.c (scm_init_storage),
14339 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
14340 Use scm_c_make_hash_table.
14341
14342 2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14343
14344 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
14345
14346 2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14347
14348 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
14349 end of docstring.
14350
14351 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
14352 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
14353 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
14354 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
14355 srcprop.c (scm_source_properties, scm_set_source_properties_x,
14356 scm_source_property, scm_set_source_property_x), sort.c
14357 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
14358 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
14359 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
14360 docstrings.
14361
14362 2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14363
14364 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
14365 really get that arg.
14366
14367 2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
14368
14369 * goops.c (s_scm_get_keyword): Bug fix.
14370
14371 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14372
14373 The following patch was sent by Martin Grabmueller. It makes sure
14374 that in case of parameter errors the correct function name is
14375 shown, and that parameter types are only checked once.
14376
14377 * strop.c (string_copy, string_upcase_x, string_downcase_x,
14378 string_capitalize_x): New functions. Each one performs the core
14379 functionality of the corresponding scm_* function.
14380
14381 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
14382 scm_string_downcase_x, scm_string_downcase,
14383 scm_string_capitalize_x, scm_string_capitalize): Reduced to
14384 parameter checking wrappers of the above functions.
14385
14386 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14387
14388 * continuations.c, dynl.c, keywords.c, load.c: Include
14389 strings.h. Thanks to Bill Schottstaedt for the bug report.
14390
14391 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14392
14393 * backtrace.c (display_header): Make sure that line and column
14394 information is shown independent of whether the port the code was
14395 read from had an associated filename. Thanks to Martin
14396 Grabmueller for providing this patch.
14397
14398 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14399
14400 * fports.[ch] (scm_file_port_p): New primitive.
14401
14402 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14403
14404 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
14405 These are now defined in fports.c, strports.c and vports.c.
14406
14407 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
14408 vports.c (scm_tc16_sfport): Made variables (were macros defined in
14409 tags.h).
14410
14411 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
14412 (scm_make_sfptob): Made static. These return a type code now.
14413
14414 fports.c (scm_init_fports), strports.c (scm_init_strports),
14415 vports.c (scm_init_vports): Create the corresponding port types.
14416
14417 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
14418 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
14419
14420 * init.c (scm_init_guile_1): Make sure strports are initialized
14421 before gdbint.
14422
14423 * ports.[ch] (scm_make_port_type): Changed the return type to
14424 scm_bits_t.
14425
14426 * ports.c (scm_ports_prehistory): Don't create any port types
14427 here.
14428
14429 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
14430 against scm_tc16_fport directly.
14431
14432 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14433
14434 * srcprop.c (scm_set_source_property_x): Fix to handle
14435 (set-source-property! <obj> 'copy <datum>) correctly.
14436
14437 2001-01-24 Gary Houston <ghouston@arglist.com>
14438
14439 * filesys.c (scm_link): docstring fix.
14440 * fports.h (scm_setfileno): obsolete declaration removed.
14441 * posix.c: bogus popen declaration removed.
14442
14443 * rdelim.c: new file, split from ioext.c.
14444 * rdelim.h: new file, split from ioext.h
14445 * Makefile.am: add rdelim.c and related files.
14446 * init.c: call scm_init_rdelim. include rdelim.h.
14447
14448 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14449
14450 This patch was sent by Martin Grabmueller and makes sure that
14451 parameter errors are reported correctly by the lexicographic
14452 ordering predicates.
14453
14454 * strorder.c (string_less_p, string_ci_less_p): New functions.
14455
14456 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
14457 functionality into string_less_p, string_ci_less_p respectively.
14458 The remaining code is just a wrapper to do the parameter
14459 checking.
14460
14461 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
14462 parameters and call string_less_p instead of scm_string_less_p.
14463
14464 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
14465 Check the parameters and call string_less_ci_p instead of
14466 scm_string_ci_less_p.
14467
14468 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14469
14470 This patch modifies scm_display_error to perform parameter
14471 checking. Thanks to Neil Jerram for the bug report.
14472
14473 * backtrace.[ch] (scm_i_display_error): New function.
14474
14475 * backtrace.c (scm_display_error): Added parameter check and
14476 extracted the core functionality into function
14477 scm_i_display_error.
14478
14479 * throw.c (handler_message): Call scm_i_display_error to display
14480 the error message.
14481
14482 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14483
14484 * eval.c (SCM_APPLY): Added # args check for application of
14485 procedures with arity 3. (Thanks to Anders Holst.)
14486
14487 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14488
14489 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
14490
14491 (SCM_OPDIRP): Deprecated.
14492
14493 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
14494 SCM_OPN.
14495
14496 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
14497 Instead, give an explicit error message in case the directory is
14498 closed.
14499
14500 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
14501 instead of SCM_OPENP and SCM_CLOSEDP.
14502
14503 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
14504
14505 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
14506
14507 * eval.c (inner_eval, scm_eval): Move all real functionality into
14508 inner_eval. Avoid to copy the expression twice by inlining some
14509 code from scm_i_eval.
14510
14511 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
14512
14513 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
14514 now has to be the last clause, as required by R5RS. Thanks to
14515 Martin Grabmueller for the patch.
14516
14517 2001-01-18 Gary Houston <ghouston@arglist.com>
14518
14519 * ioext.c: further simplify scm_read_string_x_partial by defining
14520 a macro SCM_EBLOCK.
14521
14522 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14523
14524 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
14525
14526 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14527
14528 * __scm.h: Added comment about architecture and compiler
14529 properties that are required by guile.
14530
14531 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14532 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
14533
14534 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
14535
14536 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
14537
14538 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14539 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
14540
14541 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
14542
14543 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
14544 to the names in limits.h.
14545
14546 * numbers.c (abs_most_negative_fixnum): Added.
14547
14548 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
14549 fixnum-min) special case.
14550
14551 (scm_big_and): Fix for negative first parameter.
14552
14553 (scm_bit_extract): Fix for fixnum paramters.
14554 Thanks to Rob Browning for the bug report.
14555
14556 (scm_init_numbers): Initialize abs_most_negative_fixnum.
14557
14558 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
14559
14560 * symbols.c (scm_symbol_bound_p): Fixed comment.
14561 Thanks to Chris Cramer.
14562
14563 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
14564
14565 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
14566 Thanks to Bill Schottstaedt.
14567
14568 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
14569
14570 from Matthias Köppe:
14571
14572 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
14573 casts its result, so doesn't yield an lvalue per ANSI C.
14574
14575 * goops.c (s_scm_sys_set_object_setter_x): use
14576 SCM_SET_ENTITY_SETTER.
14577 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
14578
14579 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
14580 its result, so doesn't yield an lvalue per ANSI C.
14581 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
14582 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
14583 SCM_GC_SET_CARD_FLAGS.
14584 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
14585
14586 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
14587
14588 2001-01-08 Gary Houston <ghouston@arglist.com>
14589
14590 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
14591 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
14592 socket.c (scm_recvfrom): use the new macro, plus minor docstring
14593 changes.
14594 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
14595 for fdes. if current input port is used, check that it's a file
14596 port.
14597
14598 2001-01-06 Gary Houston <ghouston@arglist.com>
14599
14600 * ioext.c (scm_read_string_x_partial): new procedure, implements
14601 read-string!/partial.
14602 * ports.c (scm_take_from_input_buffers): new procedure used by
14603 scm_read_string_x_partial.
14604 (scm_drain_input): use scm_take_from_input_buffers.
14605
14606 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
14607
14608 * validate.h (SCM_VALIDATE_NUMBER): New.
14609
14610 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
14611
14612 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
14613 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
14614 SET_DESTROYED): new defines/macros.
14615 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
14616 (add_to_live_list): takes a `guardian_t *' now, not SCM.
14617 (guardian_print): print more info.
14618 (guardian_apply): check if the guardian is destroyed, and throw an
14619 error if so. take one more optional argument `throw_p'.
14620 (scm_guard): depending on the value of `throw_p', return a boolean
14621 result.
14622 (scm_get_one_zombie): remove redundant property test.
14623 (guardian_t): represent the various (currently 3, I hope nothing
14624 more gets added) boolean fields as bit flags.
14625 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
14626 (scm_destroy_guardian_x): new procedure.
14627
14628 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
14629 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
14630
14631 2001-01-01 Gary Houston <ghouston@arglist.com>
14632
14633 * fports.c (fport_write): bugfix: handle short writes for
14634 unbuffered ports too. optimize the buffered case by minimizing
14635 the number of write/flush calls.
14636 (write_all): new helper procedure.
14637
14638 The ChangeLog continues in the file: "ChangeLog-2000"
14639
14640 ;; Local Variables:
14641 ;; coding: utf-8
14642 ;; End: