Don't declare `scm_i_locale_mutex' as `SCM_INTERNAL'.
[bpt/guile.git] / libguile / ChangeLog
1 2008-07-04 Ludovic Courtès <ludo@gnu.org>
2
3 * posix.h (scm_i_locale_mutex): Don't declare as `SCM_INTERNAL'
4 since it's needed by `libguile-i18n'. Reported by Patrick
5 Horgan <phorgan1@gmail.com>.
6
7 * __scm.h (SCM_INTERNAL): Add `extern' so that these symbols are
8 not considered as "common" by GCC 4.3. Reported by Patrick
9 Horgan <phorgan1@gmail.com>.
10
11 2008-06-28 Ludovic Courtès <ludo@gnu.org>
12
13 * Makefile.am (INCLUDES): Renamed to...
14 (AM_CPPFLAGS): this, to match current Automake conventions.
15 Users updated.
16
17 * tags.h (SCM_UNPACK): Disable type-checking for `__DECC' and
18 `__HP_cc'. Reported by Peter O'Gorman <pogma@thewrittenword.com>.
19
20 2008-06-02 Ludovic Courtès <ludo@gnu.org>
21
22 * deprecated.c (maybe_close_port): Rename EXCEPT to EXCEPT_SET
23 to workaround `#define except' on Tru64. Reported by Peter
24 O'Gorman <pogma@thewrittenword.com>.
25
26 2008-05-31 Ludovic Courtès <ludo@gnu.org>
27
28 * __scm.h (SCM_INTERNAL): New macro.
29 * *.h: Use it to mark as internal `scm_i_' and `scm_init_'
30 functions that are not used by public macros or inline
31 functions.
32
33 2008-05-14 Julian Graham <joolean@gmail.com>
34
35 * threads.c (fat_mutex)[recursive]: New field.
36 (make_fat_mutex): Adjust initialization to reflect changes to
37 mutex lock level semantics.
38 (fat_mutex_lock, fat_mutex_unlock): Add support for unowned
39 mutexes and locking mutexes on behalf of other threads.
40 (scm_lock_mutex, scm_lock_mutex_timed): Update to reflect
41 signature change to fat_mutex_lock.
42 (scm_mutex_owner, scm_mutex_level, scm_mutex_locked_p): New /
43 re-enabled functions.
44 * threads.h (scm_mutex_owner, scm_mutex_level,
45 scm_mutex_locked_p): Prototypes for new functions.
46
47 2008-05-12 Neil Jerram <neil@ossau.uklinux.net>
48
49 * discouraged.c: Expand DEFFROM and DEFTO macros, to avoid
50 compiler warnings about excess semicolons. (Reported by Didier
51 Godefroy.)
52
53 2008-05-08 Neil Jerram <neil@ossau.uklinux.net>
54
55 * throw.c (scm_ithrow): For IA64 add a return statement, to
56 appease GCC.
57
58 * threads.h (scm_i_thread): New IA64 fields:
59 register_backing_store_base and pending_rbs_continuation.
60
61 * threads.c (guilify_self_1): For IA64: cap RBS base address at
62 the current value of scm_ia64_ar_bsp, and store the capped value
63 in thread state.
64 (SCM_MARK_BACKING_STORE): Use thread->register_backing_store_base
65 instead of scm_ia64_register_backing_store_base().
66 (scm_threads_mark_stacks): Add "&" in "&t->regs", so that the code
67 works both for jmp_buf defined as an array, and jmp_buf defined as
68 a struct.
69
70 * continuations.h (scm_t_contregs): Remove `fresh' and `ctx'
71 fields; these are now inside the IA64 definition of `jmp_buf'.
72
73 * continuations.c (scm_make_continuation): Simplify, by moving
74 some of the IA64 code inside the definition of "setjmp", and by
75 some obvious commonizations. For IA64 register backing store
76 (RBS) stack base, use thread->register_backing_store_base instead
77 of scm_ia64_register_backing_store_base().
78 (copy_stack): For IA64, store pointer to continuation being
79 invoked in thread state, so we can restore the continuation's RBS
80 stack just before the next setcontext call.
81 (copy_stack_and_call): Don't restore RBS stack explicitly here.
82 It will be restored, if appropriate, inside the longjmp call.
83 (scm_ia64_longjmp): New function.
84
85 * __scm.h (setjmp, longjmp, jmp_buf): For IA64, implement using
86 getcontext and setcontext.
87
88 2008-05-07 Ludovic Courtès <ludo@gnu.org>
89
90 * numbers.c (scm_from_complex_double): Mark as `SCM_UNUSED'.
91 This fixes compilation with `-Werror' on FreeBSD 6.2 (i386).
92
93 2008-05-05 Neil Jerram <neil@ossau.uklinux.net>
94
95 * c-tokenize.lex: #define YY_NO_INPUT.
96
97 2008-04-26 Ludovic Courtès <ludo@gnu.org>
98
99 * read.c (scm_read_sexp): Remove extraneous semi-colon at
100 end-of-line, which broke compilation with GCC 2.7. Reported by
101 Alain Guibert <alguibert+bts@free.fr>.
102
103 2008-04-24 Ludovic Courtès <ludo@gnu.org>
104
105 * Makefile.am (DEFAULT_INCLUDES): New. Fixes compilation on
106 Tru64 where our "random.h" would shadown libc's one.
107 (INCLUDES): Add "-I$(top_buildir)", which is normally in
108 `DEFAULT_INCLUDES'.
109 * gen-scmconfig.c: Include <libguile/gen-scmconfig.h>, not
110 "gen-scmconfig.h" since that file is under `$(builddir)'.
111
112 2008-04-16 Ludovic Courtès <ludo@gnu.org>
113
114 * ports.c (scm_getc, scm_putc, scm_puts): Moved...
115 * inline.h: ... here. Noticeably improves `read' performance.
116
117 2008-04-15 Ludovic Courtès <ludo@gnu.org>
118 Julian Graham <joolean@gmail.com>
119
120 * read.c (scm_keyword_postfix): New.
121 (scm_read_opts): Update docstring for `keywords'.
122 (scm_read_mixed_case_symbol): Add support for postfix keywords.
123
124 2008-04-13 Ludovic Courtès <ludo@gnu.org>
125
126 * inline.h (SCM_C_USE_EXTERN_INLINE): New macro. Use it to make
127 sure "extern" declarations are produced when "extern inline" is
128 used. Simplify macrology around inline definitions.
129
130 2008-04-10 Ludovic Courtès <ludo@gnu.org>
131
132 * inline.h (SCM_C_EXTERN_INLINE): Special-case Apple's GCC
133 4.0-based compiler, which doesn't support GNU inline semantics
134 at all in C99 mode but doesn't define `__GNUC_STDC_INLINE__'.
135 See http://thread.gmane.org/gmane.network.gnutls.general/1135 .
136
137 2008-04-10 Andy Wingo <wingo@pobox.com>
138
139 * struct.c (scm_struct_ref, scm_struct_set_x): "Light" structs
140 have no hidden words (members of the SCM_STRUCT_DATA(x) array
141 accessed with negative indices). In that case, determine the
142 number of fields from the length of the struct layout
143 descriptor. (Most GOOPS instances are light structs.)
144
145 * goops.c (wrap_init): Initialize 'u' slots to 0, not some random
146 SCM value.
147
148 * goops.c (get_slot_value, set_slot_value): In the struct
149 allocation case, don't poke the slots array directly -- we should
150 go through struct-ref/struct-set! code so that we get the
151 permissions and allocation ('u' versus 'p') correct.
152
153 2008-04-03 Ludovic Courtès <ludo@gnu.org>
154
155 * inline.h (SCM_C_EXTERN_INLINE): New macro, addresses the
156 "extern inline" semantic change in C99 mode with GCC 4.3 and
157 later and the warning in C99 mode with GCC 4.2. Use it in the
158 inline function definitions.
159
160 2008-03-24 Neil Jerram <neil@ossau.uklinux.net>
161
162 Applying patch from Julian Graham, containing minor fixes to his
163 thread enhancements:
164
165 * threads.c (to_timespec): Change 1000000 multiplier to
166 1000000000.
167 (unchecked_unlock_sym, allow_external_unlock_sym,
168 recursive_sym): Use SCM_SYMBOL.
169 (scm_make_mutex_with_flags): When raising unsupported option
170 error, report what the unsupported option was.
171 (fat_mutex_unlock): When raising errors, unlock m->lock first.
172 (fat_cond_timedwait): Removed.
173 (scm_timed_wait_condition_variable): Call fat_mutex_unlock
174 directly instead of via fat_cond_timedwait.
175
176 2008-03-10 Ludovic Courtès <ludo@gnu.org>
177
178 * eval.c, filesys.c: Enclose `alloca' blob in `#ifndef alloca',
179 as per Gnulib's `alloca'. This should fix compilation on
180 FreeBSD 6.
181
182 2008-03-09 Neil Jerram <neil@ossau.uklinux.net>
183
184 * numbers.c: Only define scm_from_complex_double if it will
185 actually be used.
186
187 2008-03-08 Julian Graham <joolean@gmail.com>
188
189 * threads.c (scm_join_thread_timed, scm_thread_p,
190 scm_make_mutex_with_flags, scm_lock_mutex_timed,
191 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p): New
192 functions.
193 (thread_mark): Updated to mark new struct field `mutexes'.
194 (do_thread_exit): Notify threads waiting on mutexes locked by exiting
195 thread.
196 (scm_join_thread, scm_make_mutex, scm_make_recursive_mutex,
197 scm_mutex_lock): Reimplement in terms of their newer
198 counterparts.
199 (scm_abandoned_mutex_error_key): New symbol.
200 (fat_mutex)[unchecked_unlock, allow_external_unlock]: New fields.
201 (fat_mutex_lock): Reimplement to support timeouts and abandonment.
202 (fat_mutex_trylock, scm_try_mutex): Remove fat_mutex_trylock and
203 reimplement scm_try_mutex as a lock attempt with a timeout of zero.
204 (fat_mutex_unlock): Allow unlocking from other threads and unchecked
205 unlocking; implement in terms of condition variable wait.
206 (scm_timed_wait_condition_variable): Reimplement in terms of
207 fat_mutex_unlock.
208 * threads.h (scm_i_thread)[mutexes]: New field.
209 (scm_join_thread_timed, scm_thread_p, scm_lock_mutex_timed,
210 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p):
211 Prototypes for new functions.
212
213 2008-03-06 Ludovic Courtès <ludo@gnu.org>
214
215 * eval.c (scm_eval): If MODULE_OR_STATE is not a dynamic state,
216 make sure it's a module. Reported by David I. Lehn.
217
218 2008-03-02 Ludovic Courtès <ludo@gnu.org>
219
220 * pairs.h (scm_is_pair): Moved declaration to `inline.h'.
221 * inline.h: Make sure `extern' declarations are not produced
222 when `inline' is supported but GCC is not used. This
223 fixes "mixed linkage" errors with compilers such as
224 DEC/Compaq/HP CC.
225
226 2008-02-27 Neil Jerram <neil@ossau.uklinux.net>
227
228 * _scm.h (errno): Remove declarations that have been there
229 forever, and are known to conflict on some platforms with that
230 provided by <errno.h>, which we include unconditionally. If
231 <errno.h> doesn't provide a errno declaration, what is the point
232 of it?
233
234 2008-02-23 Ludovic Courtès <ludo@gnu.org>
235
236 * numbers.c (scm_make_rectangular): Rename argument to
237 `real_part' and `imaginary_part' to work around Solaris 2.10
238 headers which define `imaginary' as a macro. Patch by Tim
239 Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
240
241 2008-02-22 Ludovic Courtès <ludo@gnu.org>
242
243 * read.c (strncasecmp): Add declaration when
244 `HAVE_DECL_STRNCASECMP' is undefined. Fixes compilation on
245 NetBSD 1.6.
246
247 * gc.c (scm_ia64_ar_bsp)[linux]: Don't discard `const' qualifier
248 of OPAQUE.
249
250 2008-02-21 Ludovic Courtès <ludo@gnu.org>
251
252 Fix bug #22369.
253
254 * goops.c (scm_add_slot): Add `SCM_UNDEFINED' as last argument
255 to `scm_list_n ()'. Thanks to René Köcher
256 <shirk87@googlemail.com>.
257
258 2008-02-17 Ludovic Courtès <ludo@gnu.org>
259
260 * script.c (scm_compile_shell_switches): Update copyright year.
261
262 2008-02-16 Ludovic Courtès <ludo@gnu.org>
263
264 * gc_os_dep.c: Add NetBSD/alpha support. Patch by Greg Troxel
265 <gdt@ir.bbn.com>.
266
267 2008-02-12 Ludovic Courtès <ludo@gnu.org>
268
269 * guile-snarf.in (tempdir): Honor `$TMPDIR'.
270
271 2008-02-11 Neil Jerram <neil@ossau.uklinux.net>
272
273 * numbers.c (SCM_COMPLEX_VALUE): Use GUILE_I instead of _Complex_I
274 directly, and only if GUILE_I was defined by the configure step.
275 (scm_log, scm_log10, scm_exp, scm_sqrt): Use SCM_COMPLEX_VALUE
276 code only if SCM_COMPLEX_VALUE is defined.
277
278 2008-02-07 Ludovic Courtès <ludo@gnu.org>
279
280 Fix bug #21378.
281 Thanks to David Diffenbaugh <davediff@nbcs.rutgers.edu>.
282
283 * read.c (scm_read_quote): Don't use `__FUNCTION__' since it is
284 not supported by Sun CC on Solaris 9.
285 (scm_read_keyword): Likewise.
286 * strings.c (scm_take_locale_stringn): Remove
287 `SCM_C_INLINE_KEYWORD' to allow compilation with Sun CC.
288
289 2008-02-07 Julian Graham <joolean@gmail.com>
290
291 * threads.c (do_thread_exit, scm_cancel_thread,
292 scm_set_thread_cleanup_x, scm_thread_cleanup): Lock on thread-specific
293 admin mutex instead of `thread_admin_mutex'.
294 * threads.h (scm_i_thread)[admin_mutex]: New field.
295 * throw.c (make_jmpbuf): Don't enter critical section during thread
296 spawn -- there is a possibility of deadlock if other threads are
297 exiting.
298
299 2008-02-06 Neil Jerram <neil@ossau.uklinux.net>
300
301 * gc-malloc.c (scm_gc_malloc): Return NULL if requested size is 0.
302 (scm_gc_free): Don't call `free' if mem is NULL.
303
304 2008-02-06 Ludovic Courtès <ludo@gnu.org>
305
306 * numbers.c (scm_i_mkbig, scm_i_long2big, scm_i_ulong2big,
307 scm_i_clonebig, scm_i_bigcmp, scm_i_dbl2big, scm_i_dbl2num,
308 scm_i_normbig): Remove `SCM_C_INLINE_KEYWORD' since these are
309 declared as `extern' in `numbers.h'. This precluded compilation
310 on Solaris 9 with Sun CC (reported by David Halik
311 <dhalik@nbcs.rutgers.edu>).
312
313 2008-02-05 Neil Jerram <neil@ossau.uklinux.net>
314
315 * fports.c (fport_seek): Make dependent on GUILE_USE_64_CALLS.
316
317 * _scm.h: Make definition of CHOOSE_LARGEFILE depend on
318 GUILE_USE_64_CALLS.
319
320 2008-02-01 Neil Jerram <neil@ossau.uklinux.net>
321
322 * modules.c (the_root_module): Moved before scm_current_module.
323 (scm_current_module): Return the root module if `the-module' fluid
324 gives #f.
325
326 2008-01-22 Neil Jerram <neil@ossau.uklinux.net>
327
328 * COPYING: Removed.
329
330 * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL.
331
332 2008-01-18 Neil Jerram <neil@ossau.uklinux.net>
333
334 * hashtab.c (scm_hash_fn_create_handle_x): If supplied assoc_fn
335 returns neither a pair nor #f, signal a wrong-type-arg error.
336 (Thanks to Gregory Marton for reporting this.)
337
338 2007-12-29 Neil Jerram <neil@ossau.uklinux.net>
339
340 * gc.c (mark_gc_async): Change "func_data" to "fn_data", to avoid
341 clash with AIX header file.
342 * hooks.c (scm_c_hook_add, scm_c_hook_remove): Same again.
343 * hooks.h (scm_t_c_hook_function, scm_c_hook_add,
344 scm_c_hook_remove): Same again.
345
346 2007-12-08 Ludovic Courtès <ludo@gnu.org>
347
348 * __scm.h (SCM_EXPECT, SCM_LIKELY, SCM_UNLIKELY): New macros.
349 (SCM_ASSERT, SCM_ASSERT_TYPE, SCM_ASRTGO, SCM_GASSERT0,
350 SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Use them.
351 * eval.c (ASSERT_SYNTAX, ASSERT_SYNTAX_2): Likewise.
352 * eval.i.c (CEVAL): Use branch prediction hints for syntax
353 errors, wrong number of arguments and similar.
354 * numbers.c (scm_sum): Use `SCM_LIKELY' for the sum of two
355 immediate numbers.
356 (scm_difference, scm_product, scm_i_divide): Likewise.
357 * validate.h (SCM_ASSERT_RANGE): Use `SCM_UNLIKELY'.
358
359 2007-12-04 Ludovic Courtès <ludo@gnu.org>
360
361 * ports.c (scm_c_read): Validate PORT as an open input port.
362 (scm_c_write): Validate PORT as an open output port.
363
364 * socket.c (scm_accept): Leave guile mode using
365 `scm_std_select ()' before calling `accept(2)'. Reported by
366 dskr <dskr@mac.com>.
367
368 2007-10-27 Ludovic Courtès <ludo@gnu.org>
369
370 * fports.c (scm_i_evict_port): Expect a port, rather than a pair
371 containing the port. Fixes a bug in the new port table (2007-08-26).
372 (scm_evict_ports): Use `scm_c_port_for_each ()'.
373
374 2007-10-21 Neil Jerram <neil@ossau.uklinux.net>
375
376 * eval.c (unmemoize_delay): Extend the environment before
377 unmemoizing the promise thunk. This fixes a segmentation fault
378 reported by Frank Schwidom.
379
380 2007-10-20 Julian Graham <joolean@gmail.com>
381
382 Add support for thread cancellation and user-defined thread
383 cleanup handlers. Small rework by Ludovic Courtès.
384
385 * null-threads.h (scm_i_pthread_cancel,
386 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
387 * pthread-threads.h (scm_i_pthread_cancel,
388 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
389 * scmsigs.c (scm_i_signal_delivery_thread,
390 signal_delivery_thread_mutex): New.
391 (signal_delivery_thread): Leave when `read_without_guile ()'
392 returns zero.
393 (start_signal_delivery_thread): Acquire SIGNAL_DELIVERY_THREAD
394 before spawning the thread. Initialize
395 SCM_I_SIGNAL_DELIVERY_THREAD.
396 (ensure_signal_delivery_thread): Renamed to...
397 (scm_i_ensure_signal_delivery_thread): this.
398 (scm_i_close_signal_pipe): New.
399 * scmsigs.h: Updated.
400 * threads.c (thread_mark): Mark `t->cleanup_handler'.
401 (guilify_self_1): Initialize `t->cleanup_handler' and
402 `t->canceled'.
403 (do_thread_exit): Invoke `t->cleanup_handler'.
404 (on_thread_exit): Call `scm_i_ensure_signal_delivery_thread ()'.
405 Call `scm_i_close_signal_pipe ()' when the next-to-last thread
406 vanishes.
407 (scm_leave_guile_cleanup): New.
408 (scm_i_with_guile_and_parent): Use `scm_i_pthread_cleanup_push ()'
409 and `scm_leave_guile_cleanup ()' to leave guile mode, rather
410 than call `scm_leave_guile ()' after FUNC.
411 (scm_cancel_thread, scm_set_thread_cleanup_x,
412 scm_threads_cleanup): New.
413 (scm_all_threads): Remove SCM_I_SIGNAL_DELIVERY_THREAD from the
414 returned list.
415 * threads.h (scm_i_thread)[cleanup_handler, canceled]: New
416 fields.
417 Add declarations of new functions.
418
419 2007-10-17 Ludovic Courtès <ludo@gnu.org>
420
421 * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a
422 regression compared to 1.8.2. Reported by Puneet
423 <schemer@gmail.com>.
424
425 2007-10-10 Ludovic Courtès <ludo@gnu.org>
426
427 * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check
428 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
429 * gen-scmconfig.h.in
430 (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER): New.
431 * gen-scmconfig.c (main): Define
432 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
433
434 2007-10-04 Ludovic Courtès <ludo@gnu.org>
435
436 * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
437 `leave_locale_section ()' on failure of
438 `enter_locale_section ()' since the mutex is not held and locale
439 settings are unchanged.
440 (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
441 `restore_locale_settings ()' instead of `leave_locale_section ()'
442 since the mutex is not held.
443
444 2007-10-02 Ludovic Courtès <ludo@gnu.org>
445
446 * threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
447 since we're already in non-guile mode. Reported by Greg Toxel
448 for NetBSD.
449
450 2007-10-01 Ludovic Courtès <ludo@gnu.org>
451
452 * ports.c (flush_output_port): Expect directly a port instead of
453 a pair. Fixes a bug in the new port table (2007-08-26).
454
455 2007-09-11 Kevin Ryde <user42@zip.com.au>
456
457 * posix.c (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
458 putenv("NAME") as the fallback everywhere else. In particular this is
459 needed for solaris 9. Reported by Frank Storbeck.
460
461 2007-09-03 Ludovic Courtès <ludo@gnu.org>
462
463 * read.c (flush_ws): Handle SCSH block comments.
464
465 2007-09-03 Ludovic Courtès <ludo@gnu.org>
466
467 Fix alignment issues which showed up at least on SPARC.
468
469 * socket.c (scm_t_max_sockaddr, scm_t_getsockopt_result): New.
470 (scm_inet_pton): Change DST to `scm_t_uint32' for correct
471 alignment.
472 (scm_getsockopt): Change OPTVAL to `scm_t_getsockopt_result' for
473 correct alignment.
474 (_scm_from_sockaddr): Change ADDRESS to `scm_t_max_sockaddr *'.
475 (scm_from_sockaddr): Cast ADDRESS to `scm_t_max_sockaddr *'.
476 (MAX_SIZE_UN, MAX_SIZE_IN6): Removed.
477 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
478 Use `scm_t_max_sockaddr' instead of "char max_addr[MAX_ADDR_SIZE]".
479
480 2007-09-03 Kevin Ryde <user42@zip.com.au>
481
482 * numbers.c (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
483 before using clog(). It's possible for gcc to provide the "complex
484 double" type, but for the system not to have the complex funcs.
485 (scm_exp): Ditto HAVE_CEXP for cexp().
486 (clog, cexp, carg): Remove fallback definitions. These only
487 duplicated the code within scm_log and scm_exp, and the latter have to
488 exist for the case when there's no "complex double". So better just
489 fix up the conditionals selecting between the complex funcs and plain
490 doubles than worry about fallbacks.
491
492 2007-09-02 Ludovic Courtès <ludo@gnu.org>
493
494 * socket.c (scm_make_socket_address): Free C_ADDRESS after use.
495 This fixes a memory leak.
496
497 2007-08-26 Han-Wen Nienhuys <hanwen@lilypond.org>
498
499 * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
500 gc.c: replace port table with weak hash table. This simplifies
501 memory management, and fixes freed cells appearing in
502 port-for-each output.
503
504 * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
505 held.
506
507 2007-08-23 Ludovic Courtès <ludo@gnu.org>
508
509 * read.c (scm_read_quote): Record position and copy source
510 expression when asked to. Reported by Kevin.
511
512 * stime.c: Define `_REENTRANT' only if not already defined.
513
514 2007-08-21 Kevin Ryde <user42@zip.com.au>
515
516 * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
517 tc16 values so big, real, complex and fraction can be distinguished.
518
519 (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL. NULL
520 was making numbers come out as "type 23" in gc-live-object-stats.
521 Fix tests of the tc16 number types, they were checked under
522 scm_tc7_number, but the values went down the tag>=255 smob case.
523 Put smob case under scm_tc7_smob instead of using tag>=255, per
524 recommendation in comments with scm_tc7_smob to use symbolic values.
525 Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
526 code. Lose some unnecessary "break" statements.
527
528 (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
529 element returned, rather than two lookups scm_hashq_ref and
530 scm_hashq_set_x.
531
532 2007-08-17 Kevin Ryde <user42@zip.com.au>
533
534 * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
535 solaris 2.6. Reported by anirkko.
536
537 2007-07-29 Ludovic Courtès <ludo@gnu.org>
538
539 * Makefile.am (INCLUDES): Added Gnulib includes.
540 (gnulib_library): New.
541 (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
542 `$(gnulib_library)'.
543 (libguile_la_LIBADD): Likewise.
544
545 * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
546 to define it when available.
547 * srfi-14.c: Likewise.
548 * i18n.c: Likewise. Include Gnulib's <alloca.h>
549 * eval.c: Include Gnulib's <alloca.h>.
550 * filesys.c: Likewise.
551 * read.c: Don't include <strings.h> and don't provide an
552 `strncasecmp ()' replacement; use Gnulib's <string.h> and
553 `strncasecmp ()' instead.
554
555 2007-07-25 Ludovic Courtès <ludo@gnu.org>
556
557 * eval.c (macroexp): When `scm_ilength (res) <= 0', return
558 immediately. This used to produce a circular memoized
559 expression, e.g., for `(set (quote x) #t)'.
560
561 2007-07-22 Ludovic Courtès <ludo@gnu.org>
562
563 Overhauled the reader, making it faster.
564
565 * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
566 (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
567 of `scm_lreadr ()'.
568
569 * read.c: Overhauled. No longer use a token buffer. Use a
570 on-stack C buffer in the common case and use Scheme strings when
571 larger buffers are needed.
572 * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
573 scm_lreadr, scm_lreadrecparen): Removed.
574 (scm_i_input_error): Marked as `SCM_NORETURN'.
575
576 2007-07-15 Ludovic Courtès <ludo@gnu.org>
577
578 * script.c (scm_compile_shell_switches): Updated copyright year.
579
580 2007-07-11 Ludovic Courtès <ludo@gnu.org>
581
582 * goops.c (scm_sys_method_more_specific_p): Added docstring.
583 Make sure LEN is greater than or equal to the minimum length of
584 specializers of M1 and M2. This fixes a segfault later on in
585 `more_specificp ()' if TARGS is too small. Reported by Marco
586 Maggi <marco.maggi-ipsu@poste.it>.
587
588 2007-06-26 Ludovic Courtès <ludo@gnu.org>
589
590 * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
591 sure to free the previous array after the new one has been
592 installed. This leak is made visible by running
593 "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
594 from the REPL within Valgrind.
595
596 2007-06-12 Ludovic Courtès <ludo@chbouib.org>
597
598 * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
599 as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
600 bus error on SPARC (and possibly others) due to unaligned access.
601
602 2007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
603
604 * posix.c (scm_ttyname): Check whether RESULT is NULL before
605 making a string from it (reported by Dan McMahill). Don't call
606 `scm_from_locale_string ()' before the mutex is released.
607
608 2007-05-26 Ludovic Courtès <ludo@chbouib.org>
609
610 * eval.c (scm_m_define): Updated comment. Changed order for value
611 evaluation and `scm_sym2var ()' call, which is perfectly valid per
612 R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
613
614 2007-05-05 Ludovic Courtès <ludo@chbouib.org>
615
616 Implemented lazy duplicate binding handling.
617
618 * modules.c (scm_export): Renamed to...
619 (scm_module_export): This. Now public.
620 (module_variable): Removed.
621 (default_duplicate_binding_procedures_var): New variable.
622 (default_duplicate_binding_handlers, resolve_duplicate_binding,
623 module_imported_variable, scm_module_local_variable,
624 scm_module_variable): New functions.
625 (scm_module_import_interface): Rewritten.
626 (scm_module_reverse_lookup): Exported as a Scheme function.
627 * modules.h (scm_module_index_duplicate_handlers,
628 scm_module_index_import_obarray): New macros.
629 (scm_module_variable, scm_module_local_variable,
630 scm_module_export): New declarations.
631
632 2007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
633
634 * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
635 `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
636
637 2007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
638
639 * numbers.c (carg): provide carg, cexp, clog in case they are
640 missing.
641
642 2007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
643
644 * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
645 `FRAC_DIGITS', etc., which are GNU extensions. Reported by
646 Steven Wu.
647
648 2007-03-08 Kevin Ryde <user42@zip.com.au>
649
650 * struct.c, struct.h (scm_make_vtable): New function, providing
651 `make-vtable'.
652 * stacks.c (scm_init_stacks): Use it.
653
654 2007-03-06 Kevin Ryde <user42@zip.com.au>
655
656 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
657 allocating a tail array. If there's no such then those tail fields
658 are uninitialized and garbage SCMs there can cause a segv if printed
659 (after fetching with struct-ref).
660
661 2007-02-22 Kevin Ryde <user42@zip.com.au>
662
663 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
664 (scm_usleep): Update docstring per manual, cross reference sleep.
665
666 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
667 scm_struct_init is not within that section. scm_struct_init can
668 thrown an error, which within a critical section results in an
669 abort().
670
671 2007-02-19 Neil Jerram <neil@ossau.uklinux.net>
672
673 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
674 is included in the distribution.
675 (noinst_HEADERS): And the same for eval.i.c.
676
677 2007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
678
679 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
680 unconditionally. Include <langinfo.h> and <nl_types.h> when
681 available.
682 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
683 SCM_LIST_OR_INTEGER_P): New macros.
684 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
685 as powers of two instead of `(1 << LC_*)'.
686 (scm_i_locale_free): New function/macro.
687 (scm_global_locale): New global variable.
688 (smob_locale_free): Use `scm_i_locale_free ()'.
689 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
690 (get_current_locale_settings): Return `EINVAL' instead of `errno'
691 when `setlocale' fails.
692 (restore_locale_settings): Likewise.
693 (install_locale_categories): Likewise.
694 (install_locale): Likewise. Stop the locale stack traversal when
695 all categories have been handled.
696 (get_current_locale, category_to_category_mask,
697 category_list_to_category_mask): New function.
698 (scm_make_locale): Use them. Accept both lists of `LC_*' values
699 and single `LC_*' values as the first argument. Handle the case
700 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
701 duplicate C_BASE_LOCALE before using it.
702 (scm_nl_langinfo, define_langinfo_items): New functions.
703 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
704 `nl-langinfo' and invoke `define_langinfo_items ()'.
705 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
706 * posix.c: Include <xlocale.h> when available.
707 (scm_i_locale_mutex): Always define it. Statically initialized.
708 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
709 acquiring the locale mutex.
710 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
711
712 2007-01-27 Kevin Ryde <user42@zip.com.au>
713
714 * ports.c (scm_port_line, scm_set_port_line_x), read.c
715 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
716 port line number type, should be "long" not "int", as per line_number
717 field of scm_t_port. (Makes a difference only on 64-bit systems, and
718 only then for a linenum above 2Gig.)
719
720 2007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
721
722 * vector.c: remove comment as per kryde's request.
723
724 2007-01-25 Kevin Ryde <user42@zip.com.au>
725
726 * sort.c (scm_stable_sort): Return empty list for input empty list, as
727 done in guile 1.6 and as always done by plain `sort'. Was falling
728 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
729
730 2007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
731
732 * vectors.c (s_scm_vector_move_right_x): complain about naming.
733
734 * srcprop.c: regularize comments.
735
736 * eval.c: remove superfluous ifndef DEVAL.
737
738 * private-options.h: idem.
739
740 * eval.i.c: copyright nitpicking.
741
742 * eval.c: distangle. move duplicate code to eval.i.c and include
743 twice.
744
745 * eval.i.c: new file.
746
747 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
748 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
749 read.h, stacks.c, symbols.c, throw.c: use private-options.h
750
751 * private-options.h: new file: contain hardcoded option
752 definitions.
753
754 * private-gc.h: add FSF header.
755
756 2007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
757
758 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
759 memoize-symbol is set.
760
761 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
762
763 * eval.c (CEVAL): add memoize_symbol trap.
764
765 * options.c (scm_options_try): new function. This allows error
766 reporting before changing options in a critical section.
767
768 * srcprop.c: use double cell for storing source-properties. Put
769 filename in the plist, and share between srcprops if possible.
770 Remove specialized storage.
771
772 * srcprop.h: remove macros without SCM_ prefix from
773 interface. Remove specialized storage/type definitions.
774
775 * read.c: idem.
776
777 * print.c: idem.
778
779 * eval.c: terminate option lists with 0.
780
781 * options.c: remove n (for length) from scm_option_X
782 functions. Detect option list length by looking for NULL name.
783
784 2007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
785
786 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
787 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
788 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
789 added by `make-vtable-vtable'. Reported by Marco Maggi.
790
791 2007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
792
793 * throw.c (scm_ithrow): more refined error message: print symbols
794 too.
795
796 2007-01-16 Kevin Ryde <user42@zip.com.au>
797
798 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
799 implementing `set-program-arguments'.
800
801 * filesys.c (scm_init_filesys): Use scm_from_int rather than
802 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
803 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
804 O_LARGEFILE. These are all int not long, per arg to open().
805 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
806 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
807 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
808 an int arg to fcntl.
809
810 * posix.c (scm_putenv): Correction to "len" variable, was defined only
811 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
812 Move it to where it's used. Reported by Hugh Sasse.
813
814 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
815 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
816 meant #\nul in the input (detected by scm_to_locale_string) and a bad
817 flags arg (detected by scm_to_int) would throw from a critical
818 section, causing an abort().
819
820 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
821 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
822 REG_NOTEOL; they're all ints not longs (per args to regcomp and
823 regexec).
824
825 2007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
826
827 * throw.c (scm_ithrow): print out key symbol and string arguments
828 when error happens inside a critical section, and document why.
829
830 2007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
831
832 * read.c (s_scm_read_hash_extend): document #f argument to
833 read-hash-extend.
834
835 2007-01-04 Kevin Ryde <user42@zip.com.au>
836
837 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
838 scm_minor_version, scm_micro_version, scm_effective_version,
839 scm_version, scm_init_version): Use SCM_API instead of just extern,
840 for the benefit of mingw. Reported by Cesar Strauss.
841
842 2007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
843
844 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
845 too.
846 (gc_update_stats): update scm_gc_cells_allocated_acc too.
847
848 2006-12-27 Kevin Ryde <user42@zip.com.au>
849
850 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
851 the basic scm_get_stack_base. As advised by Nils Durner.
852
853 * threads.c (get_thread_stack_base): Add a version using
854 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
855 As advised by Heikki Lindholm.
856
857 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
858 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
859 Durner.
860
861 2006-12-24 Kevin Ryde <user42@zip.com.au>
862
863 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
864 error if pid is not our own process, instead of silently doing nothing.
865
866 * print.c (scm_write, scm_display, scm_write_char): Disable port close
867 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
868 check in configure.in unintentionally enabled it. Believe that
869 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
870 can leave errno in that state. popen.test "no duplicates" output test
871 provoked that.
872
873 2006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
874
875 * numbers.c (scm_i_fraction_reduce): move logic into
876 scm_i_make_ratio(), so fractions are only read.
877 scm_i_fraction_reduce() modifies a fraction when reading it. A
878 race condition might lead to fractions being corrupted by reading
879 them concurrently.
880
881 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
882 comparisons between reduced and unreduced fractions go wrong.
883
884 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
885 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
886 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
887 SCM_FRACTION_REDUCED.
888
889 2006-12-16 Kevin Ryde <user42@zip.com.au>
890
891 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
892 more direct for a procedure called raise.
893 (kill): Remove mingw fake fallback.
894
895 2006-12-15 Kevin Ryde <user42@zip.com.au>
896
897 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
898 _pipe on mingw.
899
900 2006-12-14 Kevin Ryde <user42@zip.com.au>
901
902 * threads.c (thread_print): Cope with the case where pthread_t is a
903 struct, as found on mingw. Can't just cast to size_t for printing.
904 Reported by Nils Durner.
905
906 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
907 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
908
909 2006-12-13 Kevin Ryde <user42@zip.com.au>
910
911 * eval.c (scm_m_define): Set 'name procedure property on any
912 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
913 procedures with setters as used in srfi-17.
914
915 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
916 linux man page says is a possibility.
917
918 2006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
919
920 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
921 instead of RES (reported by Szavai Gyula). This allows the use of
922 negative lower bounds.
923 (scm_i_read_array): Make sure LEN is non-negative (reported by
924 Szavai Gyula).
925
926 (scm_array_in_bounds_p): Iterate over S instead of always
927 comparing indices with the bounds of S[0]. This fixes
928 `array-in-bounds?' for arrays with a rank greater than one and
929 with different lower bounds for each dimension.
930
931 2006-12-05 Kevin Ryde <user42@zip.com.au>
932
933 * numbers.c (scm_product): For flonum*inum and complex*inum, return
934 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
935 and as per R5RS section "Exactness".
936
937 2006-12-03 Kevin Ryde <user42@zip.com.au>
938
939 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
940 allow $AWK from the environment to override. It had syntax gremlins,
941 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
942 Makefile stopped it having any effect. Use just $(AWK), which can be
943 overridden with "make AWK=xxx" in the usual way if desired.
944
945 2006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
946
947 * libguile/vectors.c (scm_vector_to_list): Fixed list
948 construction: elements were not copied when INC is zero (see
949 "shared array" example in `vectors.test'). Reported by
950 Szavai Gyula.
951
952 2006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
953
954 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
955 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
956 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
957 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
958 (DOT_X_FILES): Added `gettext.x'.
959 (DOT_DOC_FILES): Likewise.
960 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
961 (modinclude_HEADERS): Added `gettext.h'.
962 (EXTRA_DIST): Added `libgettext.h'.
963
964 * gettext.h: Renamed to...
965 * libgettext.h: New file.
966
967 * i18n.c: Renamed to...
968 * gettext.c: New file.
969
970 * i18n.h: Renamed to...
971 * gettext.h: New file.
972
973 * i18n.c, i18n.h, locale-categories.h: New files.
974
975 * init.c: Include "libguile/gettext.h" instead of
976 "libguile/i18n.h".
977 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
978 `scm_init_i18n ()'.
979
980 * posix.c: Include "libguile/gettext.h" instead of
981 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
982 (USE_GNU_LOCALE_API): New macro.
983 (scm_i_locale_mutex): New variable.
984 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
985
986 * posix.h: Include "libguile/threads.h".
987 (scm_i_locale_mutex): New declaration.
988
989 2006-11-17 Neil Jerram <neil@ossau.uklinux.net>
990
991 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
992
993 2006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
994
995 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
996 "sweep_stats" arguments; use them instead of accessing the global
997 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
998
999 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
1000 before each iteration of the loop.
1001 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
1002 (scm_i_get_new_heap_segment): Take an additional argument
1003 SWEEP_STATS. Compute MIN_CELLS as a function of it.
1004
1005 * libguile/gc.c (scm_gc_cells_collected,
1006 scm_gc_cells_collected_1): Removed.
1007 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
1008 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
1009 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
1010 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
1011 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
1012 `scm_gc_cells_(collected|swept)'.
1013 (gc_update_stats): New.
1014 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
1015 `scm_i_gc_sweep_stats_1' instead of the former globals.
1016 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
1017 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
1018 would keep allocating new segments instead of re-using collected
1019 cells (because `scm_gc_cells_collected' would remain zero).
1020
1021 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
1022 scm_gc_cell_yield_percentage): Removed.
1023
1024 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
1025 (scm_i_adjust_min_yield): Updated.
1026 (scm_i_get_new_heap_segment): Updated.
1027
1028 2006-11-02 Neil Jerram <neil@ossau.uklinux.net>
1029
1030 * modules.c: Correct comment saying that low-level environments
1031 will be used "in the next release".
1032
1033 * init.c: Comment out #include of environments.h.
1034 (scm_i_init_guile): Comment out scm_environments_prehistory() and
1035 scm_init_environments() calls.
1036
1037 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
1038 (DOT_X_FILES): Remove environments.x.
1039 (DOT_DOC_FILES): Remove environments.doc.
1040 (modinclude_HEADERS): Remove environments.h.
1041
1042 2006-10-25 Neil Jerram <neil@ossau.uklinux.net>
1043
1044 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
1045
1046 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
1047 scm_ia64_register_backing_store_base() instead of Linux-specific
1048 implementations.
1049
1050 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
1051 New declarations.
1052
1053 * gc.c (__libc_ia64_register_backing_store_base): Declaration
1054 removed.
1055 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
1056 implementations for Linux and HP-UX.
1057
1058 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
1059 and scm_ia64_register_backing_store_base() instead of
1060 Linux-specific implementations.
1061
1062 * continuations.h (__libc_ia64_register_backing_store_base):
1063 Declaration removed.
1064 (scm_t_contregs): New "fresh" field.
1065
1066 * continuations.c (ia64_getcontext): Removed.
1067 (scm_make_continuation): Use continuation fresh field instead of
1068 interpreting getcontext return values (which isn't portable). Use
1069 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
1070 instead of Linux-specific implementations.
1071 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
1072 instead of Linux-specific implementation.
1073
1074 * _scm.h (__ia64__): Also detect __ia64.
1075
1076 2006-10-03 Kevin Ryde <user42@zip.com.au>
1077
1078 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
1079 arguments or 3 or more arguments. Previously 0 called proc with
1080 SCM_UNDEFINED, and 3 or more silently used just the first 2.
1081
1082 2006-09-28 Kevin Ryde <user42@zip.com.au>
1083
1084 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
1085 for chsize fallback, instead of hard-coding mingw. Mingw in fact
1086 supplies ftruncate itself these days.
1087
1088 * ports.c (fcntl.h): Can include this unconditionally, no need for
1089 __MINGW32__.
1090
1091 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
1092 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
1093 "off_t" for parameters, per usual definition of this function, rather
1094 than "char *" and "int". Use ftruncate instead of chsize. Check for
1095 error on final close.
1096
1097 2006-09-27 Kevin Ryde <user42@zip.com.au>
1098
1099 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
1100 in mingw.
1101
1102 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
1103 const *" for mingw to suppress warnings from gcc (which are errors
1104 under the configure default -Werror). Reported by Nils Durner.
1105
1106 2006-09-26 Kevin Ryde <user42@zip.com.au>
1107
1108 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
1109 * fports.c (scm_open_file): Use open_or_open64.
1110 (fport_seek_or_seek64): New function, adapting fport_seek.
1111 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
1112 functions.
1113 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
1114 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
1115
1116 * ports.c (scm_truncate_file): Update docstring per manual.
1117
1118 2006-09-23 Kevin Ryde <user42@zip.com.au>
1119
1120 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
1121 functions.
1122
1123 2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
1124
1125 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
1126 (make_predset, define_predset, make_strset, define_strset, false,
1127 true): Removed.
1128 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
1129 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
1130 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
1131 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
1132 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
1133 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
1134 (define_charset, scm_srfi_14_compute_char_sets): New functions.
1135 (scm_init_srfi_14): Use `define_charset ()' instead of
1136 `define_predset ()' and `define_strset ()'.
1137
1138 * srfi-14.h (scm_c_init_srfi_14): Removed.
1139 (scm_srfi_14_compute_char_sets): New declaration.
1140
1141 * posix.h: Include "srfi-14.h".
1142 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
1143 successful `setlocale ()' call.
1144
1145 2006-09-08 Kevin Ryde <user42@zip.com.au>
1146
1147 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
1148 (scm_recvfrom): Update docstring from manual.
1149
1150 2006-08-31 Rob Browning <rlb@defaultvalue.org>
1151
1152 * ports.c (scm_c_port_for_each): Add a
1153 scm_remember_upto_here_1(ports) at the end of the function to fix
1154 a GC bug.
1155
1156 2006-08-28 Neil Jerram <neil@ossau.uklinux.net>
1157
1158 * backtrace.c (scm_display_backtrace_with_highlights): Minor
1159 improvements to docstring.
1160 (scm_backtrace_with_highlights): Analogous improvements.
1161
1162 2006-08-12 Kevin Ryde <user42@zip.com.au>
1163
1164 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
1165 New, set from configure.
1166 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
1167 to scmconfig.h.
1168 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
1169 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
1170 Reported by Claes Wallin.
1171
1172 2006-08-11 Neil Jerram <neil@ossau.uklinux.net>
1173
1174 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
1175 frame, not a stack).
1176
1177 2006-07-25 Kevin Ryde <user42@zip.com.au>
1178
1179 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
1180 on pthreads version, since pthread_getattr_np not available on solaris
1181 and macos. Reported by Claes Wallin.
1182
1183 2006-07-24 Kevin Ryde <user42@zip.com.au>
1184
1185 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
1186 it's a macro on MacOS X. Reported by Claes Wallin.
1187
1188 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
1189 for the benefit of Solaris 10. Reported by Claes Wallin.
1190
1191 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
1192 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
1193
1194 2006-07-21 Kevin Ryde <user42@zip.com.au>
1195
1196 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
1197 autoconf recommendation. Should fix Solaris 10 reported by Claes
1198 Wallin.
1199
1200 * threads.c: Include <string.h>, needed for memset() which is used by
1201 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
1202
1203 2006-07-18 Rob Browning <rlb@defaultvalue.org>
1204
1205 * continuations.c: Add __attribute__ ((returns_twice)) to the
1206 ia64_getcontext prototype so that gcc will make the right
1207 arrangements and avoid an illegal instruction during
1208 call-with-current-continuation.
1209
1210 2006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
1211
1212 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
1213 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
1214
1215 2006-07-08 Kevin Ryde <user42@zip.com.au>
1216
1217 * environments.c (core_environments_unobserve): Use if/else rather
1218 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
1219 about them not being rvalues. Reported by Mike Gran.
1220
1221 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
1222 portable and in particular fails on OpenBSD and AIX (see autoconf
1223 manual too). Reported by Mike Gran.
1224
1225 2006-06-25 Kevin Ryde <user42@zip.com.au>
1226
1227 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
1228 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
1229 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
1230 HAVE_TM_ZONE.
1231 (scm_strptime): Use tm_gmtoff from the strptime result when that field
1232 exists, it's set by glibc strptime "%s".
1233
1234 2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
1235
1236 * eq.c: Include "struct.h", "goops.h" and "objects.h".
1237 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
1238 are not GOOPS instances.
1239 * struct.c: Include "eq.h".
1240 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
1241 hand-written code.
1242 (scm_i_struct_equalp): New.
1243 * struct.h (scm_i_struct_equalp): New declaration.
1244
1245 2006-06-06 Kevin Ryde <user42@zip.com.au>
1246
1247 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
1248 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
1249 reported by Mattias Holm.
1250
1251 2006-06-03 Kevin Ryde <user42@zip.com.au>
1252
1253 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
1254 unused variable warning when elisp disabled. Reported by Ryan
1255 VanderBijl.
1256
1257 * throw.c (scm_handle_by_message): Add dummy return value to avoid
1258 compiler warning on cygwin. Reported by Ryan VanderBijl.
1259
1260 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
1261 duplicate of EXTRA_DOT_DOC_FILES.
1262 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
1263 Add scmconfig.h to dependencies, since these all run cpp. Helps a
1264 parallel "make -j2". Reported by Mattias Holm.
1265
1266 2006-05-30 Kevin Ryde <user42@zip.com.au>
1267
1268 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
1269 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
1270 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
1271 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
1272 port type descriptor, same as scm_make_port_type return value.
1273
1274 2006-05-30 Marius Vollmer <mvo@zagadka.de>
1275
1276 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
1277 of the arguments is a array. This allows vectors to be equal to
1278 one-dimensional arrays.
1279
1280 2006-05-29 Marius Vollmer <mvo@zagadka.de>
1281
1282 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
1283 that we have a pair before accessing its cdr. Thanks to Bill
1284 Schottstaedt!
1285
1286 2006-05-28 Kevin Ryde <user42@zip.com.au>
1287
1288 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
1289 by "The Senator".
1290
1291 2006-05-27 Marius Vollmer <mvo@zagadka.de>
1292
1293 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
1294 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
1295
1296 2006-05-26 Kevin Ryde <user42@zip.com.au>
1297
1298 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
1299 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
1300 Reported by "The Senator".
1301 For select and ioctl, move fdes into those conditionals, to avoid
1302 unused variable warning when neither of those used.
1303
1304 2006-05-23 Kevin Ryde <user42@zip.com.au>
1305
1306 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
1307 It's unused and will be in stdio.h anyway (if it's anywhere).
1308
1309 2006-05-20 Kevin Ryde <user42@zip.com.au>
1310
1311 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
1312 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
1313
1314 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
1315 symlink). Probably can't create symlinks with mknod anyway though.
1316
1317 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
1318 generation.
1319
1320 2006-05-15 Kevin Ryde <user42@zip.com.au>
1321
1322 * simpos.c, simpos.h (scm_primitive__exit): New function.
1323 (scm_primitive_exit): Update docstring, no longer the best exit after
1324 a fork.
1325
1326 2006-05-09 Kevin Ryde <user42@zip.com.au>
1327
1328 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
1329 rather than converting to doubles, to avoid inf or nan when the inputs
1330 are too big for a double but the quotient does fit. This affects
1331 conversions exact->inexact of big fractions.
1332
1333 * filesys.c (scm_open_fdes): Use open64.
1334 (scm_init_filesys): Add O_LARGEFILE.
1335
1336 * ports.c (scm_seek): Use lseek64.
1337 (scm_truncate_file): Use ftruncate64.
1338
1339 2006-05-08 Marius Vollmer <mvo@zagadka.de>
1340
1341 * private-gc.h (CELL_P): Also check that the potential pointer is
1342 correctly aligned for a cell. Thanks to Miroslav Lichvar!
1343
1344 2006-04-18 Rob Browning <rlb@defaultvalue.org>
1345
1346 * _scm.h: Add back error if the size of off_t is unknown. The bug
1347 was actually in guile-readline's configuration.
1348
1349 2006-04-18 Kevin Ryde <user42@zip.com.au>
1350
1351 * posix.c (scm_mkstemp): Update docstring from the manual, in
1352 particular file mode 0600 is not guaranteed.
1353
1354 2006-04-17 Kevin Ryde <user42@zip.com.au>
1355
1356 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
1357 size, to help the guile-readline build where off_t is unused.
1358
1359 2006-04-16 Kevin Ryde <user42@zip.com.au>
1360
1361 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
1362 (scm_readdir): Use readdir64.
1363 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
1364 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
1365 and ftruncate take off_t not size_t.
1366 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
1367 available.
1368
1369 2006-04-06 Kevin Ryde <user42@zip.com.au>
1370
1371 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
1372 instead of toggling it. Reported by Ludovic Courtès.
1373
1374 2006-03-26 Marius Vollmer <mvo@zagadka.de>
1375
1376 * threads.c (get_thread_stack_base): Use scm_get_stack_base
1377 instead of accessing __libc_stack_end directly, and only do this
1378 when pthread_attr_getstack is known not to work for the main
1379 thread or when not using pthreads at all.
1380
1381 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
1382 unknown instead of returning NULL.
1383
1384 2006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
1385
1386 * numbers.c (scm_i_mem2number): Renamed to
1387 scm_c_locale_stringn_to_number.
1388 * numbers.c, print.c, read.c: Updated callers.
1389 * numbers.h: Update function declaration.
1390
1391 2006-03-11 Neil Jerram <neil@ossau.uklinux.net>
1392
1393 * unif.c (string_set): Don't return in a void function. (Reported
1394 by Mike Gran.)
1395
1396 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
1397 rather than void*, so we can do pointer arithmetic on it.
1398 (Reported by Mike Gran.)
1399 (s_scm_uniform_vector_write): Ditto.
1400
1401 2006-03-10 Neil Jerram <neil@ossau.uklinux.net>
1402
1403 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
1404 oldra is not an array. (Reported by Steve Juranich.)
1405
1406 * threads.c (do_unlock): Renamed from "unlock", which is defined
1407 in unistd.h on QNX. (Reported by Matt Kraai.)
1408
1409 2006-03-04 Kevin Ryde <user42@zip.com.au>
1410
1411 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
1412 not SCM_CRITICAL_SECTION_START.
1413
1414 * eval.c, posix.c: Change comments from C++ to C style. Reported by
1415 Mike Gran.
1416
1417 2006-02-28 Kevin Ryde <user42@zip.com.au>
1418
1419 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
1420
1421 2006-02-26 Kevin Ryde <user42@zip.com.au>
1422
1423 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
1424 NAME_MAX is not available, which is so on Solaris 10. Report and help
1425 by Bill Schottstaedt.
1426
1427 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
1428 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
1429 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
1430 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
1431 use "unsigned char", not signed char. This ensures comparisons are
1432 the same as `char<?' etc, and is also the same as guile 1.6 did.
1433 Reported by Sven Hartrumpf.
1434
1435 2006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
1436
1437 * random.c: Test for SCM_HAVE_T_UINT64 instead of
1438 SCM_HAVE_T_INT64.
1439 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
1440 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
1441 scm_t_int32.
1442
1443 2006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
1444
1445 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
1446 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
1447 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
1448 Take into account SEG->SPAN when computing CELLS_SWEPT.
1449 (scm_i_sweep_segment): Take one more argument, similarly.
1450 (scm_i_sweep_all_segments): Likewise.
1451 (scm_i_sweep_some_segments): Likewise.
1452 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
1453 refer to SCM_GC_CELLS_COLLECTED.
1454
1455 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
1456 argument, an `scm_i_sweep_statistics' object.
1457 Change the way DELTA is collected: don't take into account
1458 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
1459
1460 * gc-malloc.c (scm_realloc): Pass an extra argument
1461 to `scm_i_sweep_all_segments ()'.
1462
1463 * gc.c (gc_start_stats): Updated accordingly.
1464 (gc_end_stats): Take an additional SWEEP_STATS argument.
1465 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
1466 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
1467 Decrement SCM_CELLS_ALLOCATED.
1468 (scm_i_gc): Likewise.
1469
1470 * private-gc.h (scm_i_sweep_*): Updated function
1471 prototypes accordingly.
1472 (scm_t_sweep_statistics): New type.
1473 (scm_i_sweep_statistics_init): New macro.
1474 (scm_i_sweep_statistics_sum): New macro
1475
1476 2006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
1477
1478 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
1479 LEN. Without this, too much collectable memory gets unregistered,
1480 which results in an underflow of SCM_MALLOCATED in
1481 `decrease_mtrigger()'.
1482
1483 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
1484 equal to SCM_MALLOCATED.
1485
1486 2006-02-13 Marius Vollmer <mvo@zagadka.de>
1487
1488 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
1489 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
1490 configured --without-threads.
1491 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
1492
1493 2006-02-12 Marius Vollmer <mvo@zagadka.de>
1494
1495 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
1496 filling when the fill parameter is omitted, as documented, but
1497 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
1498 can not store characters.
1499
1500 2006-02-09 Neil Jerram <neil@ossau.uklinux.net>
1501
1502 * socket.c (scm_c_make_socket_address): Pass address_size pointer
1503 on to scm_fill_sockaddr call.
1504
1505 2006-02-04 Neil Jerram <neil@ossau.uklinux.net>
1506
1507 * throw.h (scm_c_catch, scm_c_with_throw_handler,
1508 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
1509
1510 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
1511 (struct pre_unwind_data): New, replaces struct lazy_catch.
1512 (scm_c_catch): New, replaces scm_internal_catch as the primary
1513 catch API for C code; adds pre-unwind handler support.
1514 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
1515 compatibility.
1516 (tc16_pre_unwind_data, pre_unwind_data_print,
1517 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
1518 "lazy_catch" equivalents.
1519 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
1520 as the primary C API for a "lazy" catch.
1521 (scm_internal_lazy_catch): Now just a wrapper for
1522 scm_c_with_throw_handler, for back compatibility.
1523 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
1524 pre-unwind handler support.
1525 (scm_catch): Now just a wrapper for
1526 scm_catch_with_pre_unwind_handler, for back compatibility.
1527 (scm_with_throw_handler): New.
1528 (scm_lazy_catch): Update comment to say that the handler can
1529 return, and what happens if it does.
1530 (toggle_pre_unwind_running): New.
1531 (scm_ithrow): When identifying the throw target, take running
1532 flags into account. In general, change naming of things from
1533 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
1534 don't unwind the dynamic context first. Add dynwind framing to
1535 manage the running flag of a throw handler. If a lazy catch or
1536 throw handler returns, rethrow the same exception again. Add
1537 pre-unwind support to the normal catch case (SCM_JMPBUFP).
1538
1539 * root.c (scm_internal_cwdr): Add NULL args to
1540 scm_i_with_continuation_barrier call.
1541
1542 * dynwind.c: Change comment mentioning lazy-catch to mention
1543 pre-unwind data and throw handler also.
1544
1545 * continuations.h (scm_i_with_continuation_barrier): Add
1546 pre-unwind handler args.
1547
1548 * continuations.c (scm_i_with_continuation_barrier): Add
1549 pre-unwind handler args, and pass on to scm_c_catch (changed from
1550 scm_internal_catch).
1551 (c_handler): Remove scm_handle_by_message_noexit call.
1552 (scm_c_with_continuation_barrier): Call
1553 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1554 as the pre-unwind handler.
1555 (scm_handler): Remove scm_handle_by_message_noexit call.
1556 (s_scm_with_continuation_barrier): Call
1557 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1558 as the pre-unwind handler.
1559
1560 2006-02-04 Kevin Ryde <user42@zip.com.au>
1561
1562 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
1563
1564 2006-02-03 Kevin Ryde <user42@zip.com.au>
1565
1566 * list.c, list.h (scm_list): Restore this function for use from C.
1567 It's a complete no-op but in theory might used by someone.
1568
1569 2006-01-30 Marius Vollmer <mvo@zagadka.de>
1570
1571 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
1572 so that it gets unlocked in all cases.
1573 (SCM_APPLY, CEVAL): Likewise.
1574
1575 2006-01-29 Marius Vollmer <mvo@zagadka.de>
1576
1577 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
1578 scm_is_typed_array instead.
1579
1580 Renamed the "frames" that are related to dynamic-wind to "dynamic
1581 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
1582 Updated documentation.
1583
1584 Disabled "futures":
1585
1586 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
1587 * eval.c, init.c: Comment out all 'future' related things.
1588
1589 2006-01-28 Marius Vollmer <mvo@zagadka.de>
1590
1591 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
1592 to inline.h to make it inline.
1593
1594 2005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
1595
1596 * strings.c (scm_i_take_stringbufn): New.
1597 (scm_i_c_take_symbol): New.
1598 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
1599
1600 * strings.h (scm_i_c_take_symbol): New.
1601 (scm_i_take_stringbufn): New.
1602
1603 * symbols.c (lookup_interned_symbol): New function.
1604 (scm_i_c_mem2symbol): New function.
1605 (scm_i_mem2symbol): Use `lookup_symbol ()'.
1606 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
1607 creating a new Scheme string.
1608 (scm_from_locale_symboln): Likewise.
1609 (scm_take_locale_symbol): New.
1610 (scm_take_locale_symboln): New.
1611
1612 * symbols.h (scm_take_locale_symbol): New.
1613 (scm_take_locale_symboln): New.
1614
1615 2006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1616
1617 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
1618 free_count.
1619
1620 2005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
1621
1622 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
1623 upon error
1624
1625 2005-12-29 Neil Jerram <neil@ossau.uklinux.net>
1626
1627 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
1628 the GC when allocated_fluids_len is zero.
1629
1630 2005-12-14 Neil Jerram <neil@ossau.uklinux.net>
1631
1632 * load.c (the_reader, the_reader_fluid_num): New.
1633 (scm_primitive_load): Support custom reader.
1634 (scm_init_load): Init the_reader and the_reader_fluid_num; export
1635 the_reader as `current-reader'.
1636
1637 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
1638 (rather than an uninitialized pointer on the stack).
1639
1640 2005-12-07 Marius Vollmer <mvo@zagadka.de>
1641
1642 Reported by Bruce Korb:
1643
1644 * init.c (invoke_main_func): Don't call exit here. Throws that
1645 are only caught by scm_with_guile will bypass us and would cause
1646 scm_boot_guile to return erroneously.
1647 (scm_boot_guile): Expect scm_with_guile to return and call exit
1648 here, passing it an appropriate exit code.
1649
1650 From Andy Wingo:
1651
1652 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1653 unsigned char cast to an int, or -1 for EOS.
1654
1655 2005-12-06 Marius Vollmer <mvo@zagadka.de>
1656
1657 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1658 non-const.
1659 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
1660
1661 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1662 scm_enter_guile): Removed from public API. See comment at
1663 scm_without_guile for the rationale.
1664
1665 * scmsigs.c (read_without_guile): New.
1666 (signal_delivery_thread): Use it instead of
1667 scm_leave_guile/read/scm_enter_guile.
1668
1669 From Stephen Compall:
1670
1671 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1672 (CEVAL): Evaluate SRFI 61 cond clauses.
1673
1674 2005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
1675
1676 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1677 This was typically hit when running `gc-live-object-stats' right
1678 after starting Guile.
1679
1680 2005-11-30 Kevin Ryde <user42@zip.com.au>
1681
1682 * srfi-13.c (scm_string_append_shared): No copying if just one
1683 non-empty string in args.
1684
1685 2005-11-26 Kevin Ryde <user42@zip.com.au>
1686
1687 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
1688 by Ludovic Courtès.
1689
1690 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1691 "register".
1692
1693 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1694 scm_malloc returning NULL, it never does that.
1695 * putenv.c (putenv): Likewise.
1696
1697 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1698 much too big to want to inline.
1699
1700 2005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
1701
1702 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1703 the value at its top. This fixes a reference leak.
1704 (PUSH_REF): Perform `pstate->top++' after calling
1705 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1706 effects.
1707
1708 2005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
1709
1710 * gc.c (scm_weak_vectors): Removed.
1711
1712 2005-11-12 Kevin Ryde <user42@zip.com.au>
1713
1714 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
1715 by Ludovic Courtès.
1716
1717 2005-11-07 Marius Vollmer <mvo@zagadka.de>
1718
1719 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1720 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1721 section might exit non-locally.
1722
1723 2005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1724
1725 * eval.c (sym_instead): New symbol.
1726 (ENTER_APPLY): Remove optional use of a continuation when making
1727 trap call.
1728 (scm_debug_opts): Change doc for 'cheap option to make clear that
1729 it is now obsolete.
1730 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1731 making trap calls, and implement substitution of eval expressions
1732 and return values using the values that the trap call handlers
1733 return.
1734
1735 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1736
1737 2005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
1738
1739 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1740 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1741 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1742 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1743 scm_c_make_socket_address): New functions.
1744 * socket.h: Add prototypes.
1745
1746 2005-10-24 Kevin Ryde <user42@zip.com.au>
1747
1748 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1749 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1750 POSIX spec examples, the latter are not available on for instance
1751 NetBSD.
1752
1753 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1754 posix.texi.
1755
1756 * stime.c (scm_strftime): Update docstring from posix.texi.
1757
1758 2005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1759
1760 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
1761
1762 * null-threads.h, pthread-threads.h
1763 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1764 (scm_i_pthread_mutexattr_recursive): New.
1765
1766 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1767 (scm_i_critical_section_mutex): Do not initialize statically.
1768 (scm_threads_prehistory): Initialize
1769 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1770 here.
1771
1772 * eval.c (source_mutex): Do not initialiaze statically.
1773 (scm_init_eval): Do it here, using
1774 scm_i_pthread_mutexattr_recursive.
1775
1776 2005-09-05 Marius Vollmer <mvo@zagadka.de>
1777
1778 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1779 New.
1780 (sym_reader): New.
1781 (scm_print_opts): Added "quote-keywordish-symbols" option.
1782 (quote_keywordish_symbol): New, for evaluating the option.
1783 (scm_print_symbol_name): Use it.
1784 (scm_init_print): Initialize new option to sym_reader.
1785
1786 2005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1787
1788 * eval.c (eval_letrec_inits): New.
1789 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1790
1791 2005-08-12 Marius Vollmer <mvo@zagadka.de>
1792
1793 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1794 Peter Gavin!
1795
1796 2005-08-12 Kevin Ryde <user42@zip.com.au>
1797
1798 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1799
1800 2005-08-06 Kevin Ryde <user42@zip.com.au>
1801
1802 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1803 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1804 scm_string_index, scm_string_index_right, scm_string_skip,
1805 scm_string_skip_right, scm_string_count, scm_string_map,
1806 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1807 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1808 procedures called in loops.
1809
1810 2005-08-02 Kevin Ryde <user42@zip.com.au>
1811
1812 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1813 avoid lots of copying where previoulsy growing by only 80 bytes at a
1814 time.
1815
1816 2005-08-01 Marius Vollmer <mvo@zagadka.de>
1817
1818 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1819 already have scm_lookup_closure_module, which does the same thing.
1820
1821 2005-08-01 Marius Vollmer <mvo@zagadka.de>
1822
1823 New marking algorithm for weak hashtables that fixes the problem
1824 that references from the non-weak value to the associated weak
1825 key (for example) would prevent the entry from ever being dropped.
1826
1827 Guardians have been changed back to their original semantics and
1828 are no longer greedy and no longer drop cycles.
1829
1830 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1831 hashtable and guardian machinery but call the relevant functions
1832 directly.
1833
1834 * guardians.h, guardians.c, deprecated.h,
1835 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1836 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1837 Deprecated and moved into deprecated.[ch].
1838
1839 * guardians.h, guardians.c: Mostly rewritten.
1840 (scm_i_init_guardians_for_gc,
1841 scm_i_identify_inaccessible_guardeds,
1842 scm_i_mark_inaccessible_guardeds): New.
1843 (scm_make_guardian): Removed greedy_p argument.
1844
1845 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1846 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1847 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1848 (scm_weaks_prehistory): Removed.
1849 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1850 scm_i_mark_weak_vectors_non_weaks,
1851 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1852 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1853 scm_scan_weak_vectors): Removed.
1854
1855 * hashtab.h (scm_i_scan_weak_hashtables): New.
1856 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1857 SCM_WVECTF_NOSCAN.
1858 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1859 t->n_items.
1860 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1861 to latter. Do not scan the alists themselves, this is done by the
1862 weak vector code now. Just update the element count.
1863
1864 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1865 to latter. The type is now only part of the cell word.
1866 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1867
1868 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1869
1870 2005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1871
1872 Some changes towards making it possible to run Guile on the EM64T
1873 platform.
1874
1875 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1876 mallocating for (unsigned long *bounds).
1877
1878 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1879 scm_t_bits before storing them in the type word.
1880
1881 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1882 scm_t_bits to int.
1883
1884 2005-07-12 Kevin Ryde <user42@zip.com.au>
1885
1886 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1887 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1888 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1889 than scm_makfrom0str.
1890 Reported by Ken Raeburn.
1891
1892 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1893 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1894 returning SCM_GC_CARD_BVEC.
1895
1896 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1897 rather than latin-1 acute accent, the latter may not print on all
1898 terminals.
1899
1900 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1901 trailing deletions, so as to return a substring if those are the only
1902 changes.
1903
1904 2005-07-10 Kevin Ryde <user42@zip.com.au>
1905
1906 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1907 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1908 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1909 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1910
1911 2005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1912
1913 * gc-card.c (scm_i_card_statistics): init tag.
1914
1915 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1916
1917 2005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1918
1919 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1920 string.
1921
1922 2005-06-25 Kevin Ryde <user42@zip.com.au>
1923
1924 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1925 last change, use plain copy-on-write substrings, the individual
1926 descriptions in the srfi don't mention shared storage (only the
1927 introduction does).
1928
1929 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1930 null-terminator, rather than mallocing a whole new block.
1931 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1932
1933 2005-06-12 Marius Vollmer <mvo@zagadka.de>
1934
1935 * ramap.c (scm_array_index_map_x): First test for real arrays,
1936 then check for generalized vectors. This ensures that the
1937 generalized vector case need only work with zero-origin ranges.
1938 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1939 to access the target array, making these functions work with all
1940 kinds of arrays, not just bit arrays.
1941
1942 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1943 gh_list.c, gh_predicates.c: Deprecated everything.
1944
1945 * environments.c (environment_default_folder,
1946 environment_default_observer): Do not use gh_call3, gh_call1.
1947
1948 2005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1949
1950 * modules.c (s_scm_eval_closure_module): new function. Return the
1951 module inside an eval-closure.
1952
1953 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1954 table. This means that procedure properties are GC'd if the
1955 procedure dies.
1956
1957 2005-06-11 Kevin Ryde <user42@zip.com.au>
1958
1959 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1960 charset cases, count chars kept and build a string in a second pass,
1961 rather than using a cons cell for every char kept. Use a shared
1962 substring when nothing removed (such sharing is allowed by the srfi).
1963
1964 2005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1965
1966 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
1967 string, so live object stats can be sorted with string<?.
1968
1969 2005-06-06 Marius Vollmer <mvo@zagadka.de>
1970
1971 * print.c (iprin1): When writing a string, collect all characters
1972 that can be printed directly into one call to scm_lfwrite.
1973 Previously, every character was output with its own call to
1974 write(2) on unbuffered ports.
1975
1976 * eval.c (scm_eval_options_interface): Use
1977 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1978 and SCM_CRITICAL_SECTION_END.
1979
1980 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1981 check for generalized vectors. This ensures that the generalized
1982 vector case need only work with zero-origin ranges.
1983
1984 2005-06-06 Kevin Ryde <user42@zip.com.au>
1985
1986 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1987 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1988 matched.
1989
1990 2005-06-05 Marius Vollmer <mvo@zagadka.de>
1991
1992 * eval.c: Added comment on how to make case 1.1 of
1993 r5rs_pitfall.test succeed.
1994
1995 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1996
1997 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
1998
1999 * socket.c: Remove obsolete comment about socklen_t.
2000 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
2001
2002 * numbers.h (isnan)[__MINGW32__]: Remove.
2003
2004 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
2005 DEFAULT_INCLUDES when cross compiling.
2006
2007 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
2008
2009 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
2010 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
2011 from Jan's patch.)
2012
2013 2005-05-22 Marius Vollmer <mvo@zagadka.de>
2014
2015 * unif.c (scm_make_shared_array): Add old base to new base since
2016 scm_array_handle_pos does not include the base.
2017 (scm_aind): Likewise.
2018
2019 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
2020 output port.
2021
2022 2005-05-12 Neil Jerram <neil@ossau.uklinux.net>
2023
2024 Mac OS X compile warning fixes, reported by Richard Todd.
2025
2026 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
2027 that it is signed.
2028
2029 * strports.c (st_resize_port): Add unsigned char cast.
2030 (scm_mkstrport): Make read/write_buf cast unsigned.
2031
2032 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
2033
2034 * rdelim.c (scm_read_line): Initialize slen.
2035
2036 * load.c (scm_search_path): Remove weird >=1, and add
2037 parentheses to clarify conditions.
2038
2039 * hash.c (scm_hasher): Add const unsigned char cast.
2040
2041 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
2042
2043 2005-05-11 Neil Jerram <neil@ossau.uklinux.net>
2044
2045 Fix C99isms reported by Ludovic Courtès:
2046
2047 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
2048 code.
2049
2050 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
2051 of code.
2052
2053 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
2054 of code.
2055 (scm_i_card_statistics): Add block for declarations of tag_as_scm
2056 and current.
2057
2058 2005-05-10 Neil Jerram <neil@ossau.uklinux.net>
2059
2060 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
2061 compile warning reported by Werner Scheinast.
2062
2063 2005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
2064
2065 * list.h: remove scm_list()
2066
2067 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
2068 SCM_DEBUG_CELL_ACCESSES
2069 (FLUID_NEXT_LOC): idem.
2070
2071 2005-04-30 Kevin Ryde <user42@zip.com.au>
2072
2073 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
2074 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
2075 zero when re==0 and im<0. Reported by Jean Crepeau.
2076
2077 2005-04-25 Kevin Ryde <user42@zip.com.au>
2078
2079 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
2080 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
2081 few sensible uses (like filling with a random number generator say),
2082 but has been allowed in the past and so should be kept.
2083
2084 2005-04-23 Kevin Ryde <user42@zip.com.au>
2085
2086 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
2087 scm_hash_fn_remove_x.
2088
2089 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
2090 the caller when cons* is reached through apply.
2091
2092 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
2093 list is called using apply, under the debugging evaluator.
2094 (scm_list): Remove.
2095
2096 * list.c, list.h (scm_make_list): New code, moving make-list from
2097 boot-9.scm.
2098
2099 2005-04-14 Kevin Ryde <user42@zip.com.au>
2100
2101 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
2102 converted from scheme code in boot-9.scm.
2103
2104 2005-04-11 Kevin Ryde <user42@zip.com.au>
2105
2106 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
2107 Validate list argument, scm_string_append and scm_string_append_shared
2108 don't do that to their rest argument (in a normal build).
2109
2110 2005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2111
2112 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
2113 closure can not be stored since it is no longer valid at GC time.
2114 (make_hash_table): Initialize 'hash_fn' field.
2115 (scm_i_rehash): Only store hash_fn in hash table when closre is
2116 NULL.
2117 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
2118 non-NULL. Always use a NULL closure.
2119 (scm_hash_fn_create_handle_x): Also rehash when table contains too
2120 few entries.
2121
2122 2005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2123
2124 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
2125 argument; always use scm_delq_x. The delete_fn function works on
2126 the handle, not the key, and it therefore makes no sense to make
2127 it configurable. Changed all callers.
2128 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
2129 (scm_hash_clear): Accept plain vectors as hashtables.
2130 (scm_delx_x): Removed.
2131
2132 2005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
2133
2134 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
2135 compatibility with gcc -std=c99.
2136
2137 2005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2138
2139 * async.h (scm_mask_ints): Removed left over reference to
2140 scm_root.
2141
2142 * threads.c: Removed fprintf debug statements.
2143
2144 2005-03-24 Neil Jerram <neil@ossau.uklinux.net>
2145
2146 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
2147
2148 2005-03-23 Neil Jerram <neil@ossau.uklinux.net>
2149
2150 * debug.c (scm_make_memoized): Remove unnecessary critical
2151 section, and simplify by using SCM_RETURN_NEWSMOB.
2152
2153 2005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2154
2155 * strings.h (SCM_STRING_UCHARS): Added missing argument.
2156
2157 2005-03-18 Kevin Ryde <user42@zip.com.au>
2158
2159 * arbiters.c (FETCH_STORE) [generic C]: Should be
2160 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
2161
2162 2005-03-13 Kevin Ryde <user42@zip.com.au>
2163
2164 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
2165 srfi-60.
2166
2167 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
2168 because OR-ing bits into a negative can reduce the value to an inum.
2169
2170 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
2171 casting inum to double since that can lose precision.
2172
2173 2005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2174
2175 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
2176 (guilify_self_1): Initialize it.
2177
2178 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
2179 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
2180 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
2181 field.
2182 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
2183 recursively.
2184 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
2185 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
2186 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
2187 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
2188 scm_after_gc_c_hook here.
2189 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
2190 scm_after_gc_c_hook when a full GC has in fact been performed.
2191 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
2192
2193 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
2194 scm_gc_heap_lock.
2195
2196 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
2197 scm_gc_running_p while the scm_i_sweep_mutex is locked.
2198
2199 * inline.h (scm_cell, scm_double_cell): Do not check
2200 scm_gc_running_p, allocation during sweeping is OK.
2201
2202 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
2203 not set scm_block_gc.
2204
2205 * init.c (scm_i_init_guile): Do not set scm_block_gc.
2206
2207 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
2208 instead of scm_malloc. The latter can not be used during GC.
2209
2210 2005-03-09 Marius Vollmer <mvo@zagadka.de>
2211
2212 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
2213 years.
2214
2215 2005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2216
2217 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
2218 scm_gc_running_p. Sweeping can happen in parallel with
2219 allocation.
2220
2221 * inline.h: Updated comments for current threading implementation.
2222
2223 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
2224 (scm_i_thread): Removed unused signal_asyncs field.
2225 (threads_mark): Do not mark it.
2226 (guilify_self_1): Do not initialize it. Do initialize
2227 continuation_root field.
2228 (do_thread_exit): Do not remove thread from all_threads list.
2229 (on_thread_exit): Do it here, after leaving guile mode.
2230 (sleep_level): Removed.
2231 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
2232 returning. Do not support recursive sleeps.
2233 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
2234 entry. Do not support recursive sleeps.
2235
2236 * fluids.c (ensure_state_size, ensure_all_state_sizes,
2237 resize_all_states): Collapsed ensure_state_size and
2238 ensure_all_state_sizes into one function named resize_all_states.
2239 Allocate new vectors outside of single threaded region. Do only
2240 simple things inside that region.
2241 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
2242 while adding to the global lists.
2243
2244
2245 2005-03-08 Marius Vollmer <mvo@zagadka.de>
2246
2247 libltdl is no longer distributed. We expect it to be installed
2248 already.
2249
2250 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
2251 (libguile_la_LIBADD): Removed @LIBLTDL@.
2252
2253 2005-03-07 Marius Vollmer <mvo@zagadka.de>
2254
2255 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
2256 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
2257 they also block/unblock execution of asyncs and call
2258 scm_async_click which is declared in async.h but threads.h can not
2259 include async.h since async.h already includes threads.h.
2260 (scm_i_critical_section_level): New, for checking mistakes in the
2261 use of the SCM_CRITICAL_SECTION_* macros.
2262 (scm_i_critical_section_mutex): Make it a recursive mutex so that
2263 critical sections can be nested.
2264
2265 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
2266 not zero.
2267
2268 * threads.h, threads.c (scm_frame_lock_mutex): New.
2269 (scm_frame_critical_section): Take mutex as argument.
2270 (framed_critical_section_mutex): New, used as default for above.
2271 (scm_init_threads): Initialize it.
2272 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
2273 scm_i_critical_section_mutex; both are initialized statically.
2274
2275 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
2276 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
2277 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
2278 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
2279
2280 * debug.c (scm_debug_options): Replace
2281 SCM_CRITICAL_SECTION_START/END with a frame and
2282 scm_frame_critical_section.
2283
2284 * continuations.c (scm_make_continuation): No longer a critical
2285 section.
2286 (scm_dynthrow): Abort when scm_i_critical_section_level is
2287 not zero.
2288
2289 2005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2290
2291 * threads.c (scm_try_mutex): Renamed argument for consistency.
2292
2293 * root.c (scm_call_with_dynamic_root): New docstring.
2294
2295 * eval.c: Define _GNU_SOURCE.
2296
2297 2005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2298
2299 Big merge from the mvo-thread-cleanup branch. The main changes
2300 are:
2301
2302 - The dynamic roots functionality has been split into dynamic
2303 states and continuations barriers. Fluids have been
2304 reimplemented and can now be garbage collected.
2305
2306 - Initialization of Guile now works in a multi-thread friendly
2307 manner. Threads can freely enter and leave guile mode.
2308
2309 - Blocking on mutexes or condition variables or while selecting
2310 can now be reliably interrupted via system asyncs.
2311
2312 - The low-level threading interface has been removed.
2313
2314 - Signals are delivered via a pipe to a dedicated 'signal delivery
2315 thread'.
2316
2317 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
2318
2319 * throw.c (scm_handle_by_message): Exit only the current thread,
2320 not the whole process.
2321 (scm_handle_by_message_noexit): Exit when catching 'quit.
2322
2323 * scmsigs.c (take_signal, signal_delivery_thread,
2324 start_signal_delivery_thread, ensure_signal_delivery_thread,
2325 install_handler): Reimplemented signal delivery as explained in
2326 the comments.
2327
2328 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
2329 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
2330 scm_i_sched_yield, scm_i_pthread_sigmask,
2331 SCM_I_PTHREAD_MUTEX_INITIALIZER,
2332 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
2333 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
2334 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
2335 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
2336 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
2337 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
2338 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
2339 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
2340 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
2341 scm_i_pthread_key_create, scm_i_pthread_setspecific,
2342 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
2343 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
2344 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
2345 when using pthreads.
2346 * null-threads.c, null-threads.h: Provide dummy definitions for
2347 the above symbols when not using pthreads.
2348
2349 * modules.h, modules.c (scm_frame_current_module): New.
2350
2351 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
2352 instead of scm_internal_dynamic_wind.
2353
2354 * init.h, init.c (restart_stack, start_stack): Removed.
2355 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
2356 (scm_boot_guile_1): Removed.
2357 (scm_i_init_mutex): New.
2358 (really_cleanup_for_exit, cleanup_for_exit): New.
2359 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
2360 Moved around some init funcs. Call
2361 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
2362 with atexit.
2363
2364 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
2365 Use "!scm_is_eq" instead of "!=".
2366
2367 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
2368 SCM_USE_COOP_THREADS): Removed.
2369
2370 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
2371 maintained. Unlock scm_i_sweep_mutex before running
2372 scm_after_gc_c_hook.
2373 (scm_permanent_object): Allocate outside of critical section.
2374 (cleanup): Removed.
2375
2376 * fluids.h, fluids.c: Reimplemented completely.
2377 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
2378 SCM_FAST_FLUID_SET): Reimplemented as functions.
2379 (scm_is_fluid): New.
2380 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
2381 (scm_make_dynamic_state, scm_dynamic_state_p,
2382 scm_is_dynamic_state, scm_current_dynamic_state,
2383 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
2384 scm_c_with_dynamic_state, scm_with_dynamic_state,
2385 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
2386
2387 * feature.c (progargs_fluid): New.
2388 (scm_program_arguments, scm_set_program_arguments): Use it instead
2389 of scm_progargs.
2390 (scm_init_feature): Allocate it. Also, only add "threads" feature
2391 when SCM_USE_PTHREAD_THREADS is true.
2392
2393 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
2394 scm_make_rec_mutex, with all the consequences.
2395 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
2396 scm_internal_dynamic_wind. Handle dynamic states as second
2397 argument.
2398
2399 * threads.h, threads.c (scm_internal_select): Renamed to
2400 scm_std_select and discouraged old name.
2401 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
2402 and scm_std_usleep.
2403 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
2404 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
2405 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
2406 SCM_THREAD_DATA): Removed.
2407 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
2408 (scm_i_thread): New.
2409 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2410 Use scm_assert_smob_type.
2411 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
2412 scm_thread_self, scm_thread_yield, scm_mutex_init,
2413 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
2414 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
2415 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
2416 scm_cond_init, scm_cond_destroy, scm_cond_wait,
2417 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
2418 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
2419 scm_thread_select): Removed. Replaced with scm_i_pthread
2420 functions as appropriate.
2421 (scm_in_guile, scm_outside_guile): Removed.
2422 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
2423 take a ticket.
2424 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
2425 New.
2426 (scm_i_frame_single_threaded): New.
2427 (scm_init_threads_default_dynamic_state): New.
2428 (scm_i_create_thread): Removed.
2429 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
2430 (scm_make_recursive_mutex): New.
2431 (scm_frame_critical_section): New.
2432 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
2433 latter, changed all uses.
2434 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
2435 scm_i_set_last_debug_frame): New, use them instead of scm_root
2436 stuff.
2437 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
2438 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
2439 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
2440 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
2441 (remqueue): Allow the removal of already removed cells. Indicate
2442 whether a real removal has happened.
2443 (scm_thread): Removed, replaced with scm_i_thread.
2444 (make_thread, init_thread_creatant): Removed.
2445 (cur_thread): Removed.
2446 (block_self, unblock_from_queue): New.
2447 (block, timed_block, unblock): Removed.
2448 (guilify_self_1, guilify_self_2, do_thread_exit,
2449 init_thread_key_once, init_thread_key,
2450 scm_i_init_thread_for_guile, get_thread_stack_base,
2451 scm_init_guile): New initialisation method.
2452 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
2453 thread creation.
2454 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
2455 "fair" to fat and implemented new semantics, including reliable
2456 interruption.
2457 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
2458 (scm_threads_mark_stacks): Explicitly mark handle.
2459 (scm_std_select): Allow interruption by also selecting on the
2460 sleep_pipe.
2461 (scm_i_thread_put_to_sleep): Handle recursive requests for
2462 single-threadedness.
2463 (scm_threads_prehistory, scm_init_threads): Put current thread
2464 into guile mode via guileify_self_1 and guileify_self_2,
2465 respectively.
2466
2467 * fluid.h (SCM_FLUIDP): Deprecated.
2468
2469 * coop-threads.c: Removed.
2470
2471 * continuations.h, continuations.c (scm_with_continuation_barrier,
2472 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
2473 New.
2474
2475 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
2476 (async_mutex): New.
2477 (scm_async_click): Protected with async_mutex. Do not deal with
2478 signal_asyncs, which are gone. Set cdr of handled async cell to
2479 #f.
2480 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
2481 current sleep.
2482 (scm_system_async_mark_for_thread): Do not use scm_current_thread
2483 since that might not work during early initialization.
2484
2485 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
2486 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
2487 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
2488 and SCM_CRITICAL_SECTION_END.
2489 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
2490 SCM_CRITICAL_SECTION_START/END.
2491
2492 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
2493 (libguile_la_SOURCES): Added null-threads.c
2494 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
2495 threads-plugin.c.
2496 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
2497
2498 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
2499 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
2500 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
2501 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
2502 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
2503 scm_make_root): Removed or deprecated. Replaced with references
2504 to the current thread, dynamic state, continuation barrier, or
2505 some fluid, as appropriate.
2506 (root_mark, root_print): Removed.
2507 (scm_internal_cwdr): Reimplemented guts with
2508 scm_frame_current_dynamic_state and
2509 scm_i_with_continuation_barrier.
2510 (scm_dynamic_root): Return current continuation barrier.
2511
2512
2513 2005-02-28 Marius Vollmer <mvo@zagadka.de>
2514
2515 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
2516 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
2517 cleanliness.
2518 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
2519 IP_DROP_MEMBERSHIP.
2520 Thanks to Greg Troxel!
2521
2522 2005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2523
2524 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
2525 block.
2526
2527 2005-02-25 Marius Vollmer <mvo@zagadka.de>
2528
2529 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
2530 so that no two weak alist vectors share a spine.
2531 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
2532 during GC before inserting the new alist cell.
2533
2534 2005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2535
2536 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
2537 the hashtable.
2538 (scm_hash_fn_create_handle_x): Likewise.
2539 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
2540
2541 2005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2542
2543 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
2544 the prototypical examples mentioned in the old reference manual.
2545 Instead keep the old semantics of dispatching on type. (Yes, this
2546 is extremely ugly, but the whole point of keeping the deprecated
2547 interface is not to break old code.)
2548
2549 2005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2550
2551 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
2552 scm_i_array_dims.
2553
2554 2005-01-28 Kevin Ryde <user42@zip.com.au>
2555
2556 * numbers.c (scm_ash): Rewrite using shifts, much faster than
2557 integer-expt and multiply/divide. Inexacts and fractions no longer
2558 supported (they happened to work before for left shifts, but not
2559 right). Don't really need inexacts and fractions, since ash is
2560 documented as a "bitwise operation", and all the rest of those only
2561 take exact integers.
2562
2563 2005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
2564
2565 * gc-card.c (scm_i_card_statistics): map structs, closures and
2566 subrs to one tag.
2567
2568 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
2569 (tag_table_to_type_alist): ignore unknown types.
2570
2571 * gc-segment.c (scm_i_all_segments_statistics): new function.
2572 (scm_i_heap_segment_statistics): new function
2573
2574 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
2575 statistics on the number of live objects of each type.
2576
2577 * gc-card.c (scm_i_tag_name): new function.
2578 (scm_i_card_statistics): new function.
2579
2580 2005-01-24 Kevin Ryde <user42@zip.com.au>
2581
2582 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
2583 POSIX and C99 don't document errno being set. Reported by Bruno
2584 Haible.
2585 (scm_flock): Update docstring from manual.
2586
2587 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
2588 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
2589 a 64-bit system.
2590
2591 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
2592 sa_handler, needs to be a long on 64-bit systems where int is only 32
2593 bits.
2594
2595 2005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2596
2597 * environments.c (obarray_enter, obarray_replace): Call
2598 SCM_HASHTABLE_INCREMENT when adding a new entry.
2599
2600 * objects.c: Include goops.h for the scm_class_of prototype.
2601
2602 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
2603 sizes to be smaller than the maximum lengths of vectors.
2604
2605 2005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2606
2607 * ports.c, smob.c: Include "libguile/goops.h".
2608
2609 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
2610 scm_class_char, scm_class_pair, scm_class_procedure,
2611 scm_class_string, scm_class_symbol,
2612 scm_class_procedure_with_setter, scm_class_primitive_generic,
2613 scm_class_vector, scm_class_null, scm_class_real,
2614 scm_class_complex, scm_class_integer, scm_class_fraction,
2615 scm_class_unknown, scm_port_class, scm_smob_class,
2616 scm_no_applicable_method, scm_class_of): Moved from objects to
2617 goops since they are only useable once goops has been loaded.
2618 (scm_classes_initialized): Removed.
2619 (scm_class_of): Do not check it.
2620 (create_standard_classes): Do not set it.
2621
2622 2005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2623
2624 * objects.h, objects.c (scm_classes_initialized): New.
2625 (scm_class_of): Signal error when scm_classes_initialized is zero.
2626 * goops.c (create_standard_classes): Set scm_classes_initialized
2627 to one.
2628
2629 * random.c (scm_random_solid_sphere_x): Use
2630 scm_c_generalized_vector_length instead of
2631 scm_uniform_vector_length.
2632
2633 2005-01-16 Marius Vollmer <mvo@zagadka.de>
2634
2635 * script.c (scm_compile_shell_switches): Removed debugging output.
2636
2637 2005-01-15 Kevin Ryde <user42@zip.com.au>
2638
2639 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
2640 docstrings from manual.
2641 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
2642
2643 2005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2644
2645 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
2646 its value.
2647
2648 Implement u64 and s64 uniform numeric vectors with bignums when
2649 scm_t_uint64 and scm_t_int64 are not available.
2650
2651 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2652 scm_array_handle_u64_elements,
2653 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2654 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2655 is not available.
2656 (scm_take_s64vector, scm_array_handle_s64_elements,
2657 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2658 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2659 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2660 scm_t_int64/scm_t_uint64 are not available.
2661 (uvec_mark): New, to mark the bignums.
2662 (alloc_uvec): Initialize bignums.
2663 (uvec_fast_ref): Return bignums directly.
2664 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2665 assert_exact_integer): New.
2666 (uvec_fast_set): Use them to validate the bignums.
2667 (scm_init_srfi_4): Set mark function of smob when needed.
2668 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2669 scm_int64_max.
2670
2671 Recognize 1.4 -e syntax.
2672
2673 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2674 (scm_compile_shell_switches): Use them to recognize and convert
2675 1.4 "-e" syntax.
2676
2677 2005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2678
2679 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2680 deprecated features that once were macros but are now functions
2681 back into macros.
2682
2683 2005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2684
2685 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2686 * deprecation.c (scm_issue_deprecation_warning,
2687 scm_c_issue_deprecation_warning_fmt): Use it.
2688 (mode): Removed.
2689 (print_summary): New.
2690 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2691 mode.
2692
2693 Deprecated SCM_ARRAY* macros.
2694
2695 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2696 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2697 version. Changed all uses.
2698 (scm_tc16_array, scm_i_tc16_array,
2699 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2700 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2701 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2702 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2703 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2704 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2705 SCM_ARRAY_V, SCM_I_ARRAY_V,
2706 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2707 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2708 scm_t_array, scm_i_t_array): Likewise.
2709 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2710 Moved from unif.h to unif.c.
2711 (scm_c_array_rank): New.
2712 (scm_array_rank): Reimplement using it.
2713
2714 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2715 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2716 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
2717
2718 2005-01-11 Marius Vollmer <mvo@zagadka.de>
2719
2720 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2721 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2722 scm_c_generalized_vector_ref and scm_cvref, and
2723 scm_c_generalized_vector_set_x, respectively.
2724 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2725 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2726
2727 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2728 former to latter and made public. Changed all uses.
2729 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2730 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2731 (scm_i_shap2ra): New internal version of scm_shap2ra.
2732 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2733 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2734 (scm_ra_set_contp): Deprecated, changed all uses to
2735 scm_i_ra_set_contp.
2736 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
2737
2738 2005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2739
2740 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2741 Trotts!
2742
2743 * unif.c (scm_list_to_typed_array): Allow the specification of the
2744 upper bound as well. This is needed for empty arrays.
2745 (l2ra): Give needed number of elements in error message.
2746 (scm_i_print_array): Print length information for arrays that need
2747 it.
2748 (scm_i_read_array): Parse it.
2749
2750 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2751 scm_i_object_chars, scm_i_object_length): Brought back from the
2752 dead.
2753
2754 2005-01-10 Marius Vollmer <mvo@zagadka.de>
2755
2756 * ramap.c: Replaced single-index uses of scm_array_set_x with
2757 scm_c_generalized_vector_set_x.
2758
2759 * unif.c (scm_array_rank, scm_array_dimensions,
2760 scm_shared_array_offset, scm_shared_array_increments,
2761 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2762 to simplify code and make it more general.
2763 (scm_shared_array_root): Work with all kinds of arrays, including
2764 naked vectors.
2765 (indices_to_pos): New.
2766 (scm_make_shared_array): Use it instead of scm_aind; use handle
2767 for oldra.
2768
2769 2005-01-10 Kevin Ryde <user42@zip.com.au>
2770
2771 * posix.c (scm_mkstemp): Update docstring from manual.
2772
2773 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2774
2775 2005-01-09 Marius Vollmer <mvo@zagadka.de>
2776
2777 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2778 scm_i_uniform_vector_set_proc): New.
2779 (u8ref, u8set, s8ref, s8set, etc): New.
2780 (uvec_reffers, uvec_setters): New.
2781 (uvec_to_list): Use generic scm_array_handle_ref instead of
2782 uvec_fast_ref since scm_array_handle_ref should be faster now.
2783 (coerce_to_uvec, scm_c_uniform_vector_ref,
2784 scm_c_uniform_vector_set_x): Likewise.
2785
2786 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2787 New.
2788 (scm_t_array_handle): Added ref, set, elements and
2789 writable_elements for fast inline operation of
2790 scm_array_handle_ref and scm_array_handle_set.
2791 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2792 and replaced with inline code that simply calls the ref/set
2793 members of the handle.
2794 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2795 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2796 New.
2797 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2798 and memoize_set.
2799 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2800 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2801 scm_bit_invert_x): Correctly multiply index with increment in the
2802 general case.
2803
2804 * unif.c (scm_array_handle_set): Correctly execute only one
2805 alternative. D'Oh!
2806 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2807 the array; this covers all cases with much simpler code.
2808
2809 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2810 as well.
2811
2812 2005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2813
2814 * srfi-4.c (uvec_type): New.
2815 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2816 scm_c_uniform_vector_x): Use it to get concrete type.
2817
2818 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2819 fit the docs.
2820
2821 * unif.c (ra2l): Handle zero rank arrays.
2822 (scm_i_print_array): Print zero rank arrays specially.
2823 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2824 (scm_i_read_array): Allow zero rank arrays.
2825
2826 2005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2827
2828 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2829 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2830 and SCM_SET_HASHTAB_BUCKET.
2831
2832 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2833 Removed ref_stack field.
2834 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2835 of a print state. Use them everywhere instead of ref_stack.
2836
2837 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
2838
2839 * srfi-4.c: Include deprecation.h.
2840
2841 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2842 deprecated.c, eq.c
2843 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2844 (scm_vector_elements, scm_vector_writable_elements,
2845 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2846 unif.[hc].
2847 (SCM_SIMPLE_VECTOR_LOC): Removed.
2848 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2849 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2850 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2851 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2852 latter. Changed use in eq.c.
2853
2854 2005-01-07 Marius Vollmer <mvo@zagadka.de>
2855
2856 Make the uniform vector routines also deal with one dimensional
2857 arrays.
2858
2859 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2860 SCM_SMOB_PREDICATE in this file.
2861 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2862 of the right type.
2863 (scm_is_uniform_vector): Likewise.
2864 (uvec_fast_ref): Made BASE param const.
2865 (uvec_writable_elements, uvec_elements): New.
2866 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2867 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2868 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2869 arrays.
2870 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2871 argument convention.
2872 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2873 checking.
2874 (scm_uniform_vector_length): Use uvec_length.
2875
2876 2005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2877
2878 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2879 scm_c_uniform_vector_size): Removed.
2880 (scm_array_handle_uniform_element_size): New.
2881
2882
2883 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2884 type of POS parameter to be signed, positions can be negative.
2885 (scm_array_handle_release): New, changed all uses of
2886 scm_t_array_handle to properly call it.
2887 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2888 Renamed former to latter, changed all uses.
2889
2890 2005-01-05 Marius Vollmer <mvo@zagadka.de>
2891
2892 Updated bitvector routines to also use scm_t_array_handles.
2893
2894 * unif.h (scm_bitvector_elements,
2895 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2896 deliver offset, length and increment to caller. Changed all uses.
2897 (scm_bitvector_release_elements,
2898 scm_frame_bitvector_release_elements,
2899 scm_bitvector_release_writable_elements,
2900 scm_frame_bitvector_release_writable_elements): Removed.
2901 (scm_array_handle_bit_elements,
2902 scm_array_handle_bit_writable_elements,
2903 scm_array_handle_bit_elements_offset): New.
2904 (scm_make_typed_array): The special value for non-initialized
2905 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2906 was a valid value to fill bitvectors with, so it can't really be
2907 specialed out.
2908
2909 2005-01-04 Kevin Ryde <user42@zip.com.au>
2910
2911 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2912 Reported by Bill Schottstaedt.
2913
2914 2005-01-02 Marius Vollmer <mvo@zagadka.de>
2915
2916 * sort.c (quicksort): Added INC parameter for non-contigous
2917 vectors.
2918 (quicksort1): New, for contigous vectors. Both functions are
2919 generated from the same code by including "quicksort.i.c".
2920 (scm_restricted_vector_sort_x): Call one of quicksort and
2921 quicksort1, depending on increment of vector.
2922 (scm_sort): Simply call scm_sort_x on a copy of the list or
2923 vector.
2924 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2925 size_t, added inc parameter.
2926 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2927 so that it doesn't leak.
2928 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2929 list or vector.
2930
2931 * ramap.c (scm_array_map_x): Do not try to convert fill value
2932 before filling, any necessary conversion is done while storing.
2933
2934 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2935 doing it inline.
2936
2937 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2938 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2939 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2940
2941 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2942 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2943 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2944 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2945 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2946 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2947 vector elements API or simple vector API, as appropriate. Removed
2948 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2949 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2950
2951 * srfi-4.h, srfi-4.c,
2952 srfi-4.i.c (scm_array_handle_uniform_elements,
2953 scm_array_handle_uniform_writable_elements,
2954 scm_uniform_vector_elements,
2955 scm_uniform_vector_writable_elements):
2956 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2957 scm_t_array_handle, deliver length and increment.
2958 (scm_array_handle_<foo>_elements,
2959 scm_array_handle_<foo>_writable_elements): New.
2960
2961 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2962 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
2963
2964 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2965 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2966 scm_array_handle_set, scm_array_handle_elements
2967 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2968 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2969 scm_dimensions_to_uniform_array): Deprecated for real.
2970 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2971 snarfing wont allow a mismatch between C and Scheme arglists.
2972 (scm_make_shared_array, scm_enclose_array): Correctly use
2973 scm_c_generalized_vector_length instead of
2974 scm_uniform_vector_length.
2975
2976 * validate.h (SCM_VALIDATE_VECTOR,
2977 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2978 of SCM_VECTORP.
2979
2980 * weaks.h, weaks.c: Use new internal weak vector API from
2981 vectors.h.
2982
2983 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2984 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2985 'extra' to being regular sources.
2986 (noinst_HEADERS): Added quicksort.i.c.
2987 * quicksort.i.c: New file.
2988
2989 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2990 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2991 and reimplemented. Replaced all uses with scm_vector_elements,
2992 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2993 appropriate.
2994 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2995 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2996 SCM_SIMPLE_VECTOR_LOC): New.
2997 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2998 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2999 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
3000 Removed.
3001 (scm_vector_copy): New.
3002 (scm_vector_elements, scm_vector_writable_elements): Use
3003 scm_t_array_handle, deliver length and increment. Moved to
3004 unif.h. Changed all uses.
3005 (scm_vector_release_elements,
3006 scm_vector_release_writable_elements,
3007 (scm_frame_vector_release_elements,
3008 scm_frame_vector_release_writable_elements): Removed.
3009 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
3010 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
3011 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
3012 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
3013 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
3014 weak vectors.
3015
3016 2004-12-29 Marius Vollmer <mvo@zagadka.de>
3017
3018 No longer use creators to specify the type of an array. Creators
3019 expose the fact that arrays are wrapped around vectors, but that
3020 might change.
3021
3022 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
3023 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
3024 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
3025 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
3026 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
3027 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
3028 uvec_proc_vars): Removed.
3029 (scm_i_generalized_vector_creator): Removed.
3030 (scm_i_generalized_vector_type): New.
3031
3032 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
3033 scm_make_typed_array, scm_array_type, scm_list_to_array,
3034 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
3035 (scm_array_creator): Removed.
3036 (scm_array_p): Deprecated second PROT argument.
3037 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
3038 Deprecated, reimplemented in terms of scm_make_typed_array and
3039 scm_list_to_typed_array.
3040 (scm_i_proc_make_vector, scm_i_proc_make_string,
3041 scm_i_proc_make_bitvector): Removed.
3042 (type_creator_table, init_type_creator_table, type_to_creator,
3043 make_typed_vector): New.
3044 (scm_i_convert_old_prototype): Removed.
3045 (prototype_to_type): New.
3046 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
3047 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
3048 minor added clarity.
3049 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
3050 instead of scm_make_uve.
3051 (tag_creator_table, scm_i_tag_to_creator): Removed.
3052 (tag_to_type): New.
3053 (scm_i_read_array): Use scm_list_to_typed_array instead of
3054 scm_list_to_uniform_array.
3055
3056 2004-12-27 Marius Vollmer <mvo@zagadka.de>
3057
3058 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
3059 (scm_bitvector_writable_elements): New.
3060 (scm_bitvector_release, scm_bitvector_release_elements):
3061 Renamed former to latter. Added explicit call to
3062 scm_remember_upto_here_1.
3063 (scm_frame_bitvector_release,
3064 scm_frame_bitvector_release_elements): Renamed former to latter.
3065 (scm_bitvector_release_writable_elements,
3066 scm_bitvector_release_writable_elements): New.
3067 Changed all uses as required by the changes above.
3068
3069 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
3070 scm_u8vector_elements, etc): Made return value "const".
3071 (scm_uniform_vector_writable_elements,
3072 scm_u8vector_writable_elements, etc): New.
3073 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
3074 Renamed former to latter. Added explicit call to
3075 scm_remember_upto_here_1.
3076 (scm_frame_uniform_vector_release,
3077 scm_frame_uniform_vector_release_elements): Renamed former to latter.
3078 (scm_uniform_vector_release_writable_elements,
3079 scm_frame_uniform_vector_release_writable_elements): New. Takes
3080 crown of longest identifier yet.
3081 Changed all uses as required by the changes above.
3082
3083 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
3084 void.
3085 (scm_is_vector, scm_vector_p, scm_vector_length,
3086 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
3087 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
3088 scm_vector_move_left_x, scm_vector_move_right_x,
3089 scm_vector_fill_x): handle one-dimensional arrays.
3090 (scm_vector_elements, scm_vector_release_elements,
3091 scm_vector_frame_release_elements, scm_vector_writable_elements,
3092 scm_vector_release_writable_elements,
3093 scm_vector_frame_release_writable_elements): New.
3094 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
3095 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
3096
3097 * ramap.c (scm_ramapc, scm_raeql): Use
3098 scm_c_generalized_vector_length instead of
3099 scm_uniform_vector_length.
3100 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
3101 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
3102
3103 2004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3104
3105 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
3106 member for relocating debug frames.
3107 (scm_make_continuation): Set it.
3108
3109 * stacks.c (read_frame, read_frames, scm_make_stack,
3110 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
3111 of continuations instead of calculating the offset ourselves.
3112 Relocate 'vect' member of scm_t_debug_frame.
3113
3114 2004-12-16 Kevin Ryde <user42@zip.com.au>
3115
3116 * ramap.c (scm_array_map_x): Check for at least one source argument.
3117
3118 2004-12-14 Kevin Ryde <user42@zip.com.au>
3119
3120 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
3121 the C code so for the final call to the predicate procedure is a tail
3122 call, per SRFI-13 spec.
3123
3124 2004-12-10 Kevin Ryde <user42@zip.com.au>
3125
3126 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
3127 recent revision to the reference manual.
3128
3129 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
3130 with "%", C99 says it's well-defined.
3131
3132 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
3133 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
3134 bother trying to fit scm_from_ulong, not really worth the trouble if
3135 addresses are more than 4 bytes usually.
3136
3137 2004-11-30 Kevin Ryde <user42@zip.com.au>
3138
3139 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
3140 arm32. Reported by Greg Troxel.
3141
3142 2004-11-14 mvo <mvo@zagadka.de>
3143
3144 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
3145
3146 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
3147
3148 2004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3149
3150 Enclosed arrays are now their own smob. This has been done to
3151 make the code more explicit about them and to prepare for the time
3152 when generalized vectors include arbitrary one-dimensional
3153 arrays. (Uptonow, enclosed arrays have been recognized by their
3154 use of an array as their storage 'vector'. When all generalized
3155 vectors are allowed as storage, including one-dimensional arrays,
3156 this will no longer work.)
3157
3158 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
3159 New.
3160 (exactly_one_third, singp): Removed.
3161 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
3162 scm_shared_array_offset, scm_shared_array_increments): Handle
3163 enclosed arrays explicitely.
3164 (scm_array_rank): Likewise. Also, do not return zero for
3165 non-arrays, signal an error instead since arrays with rank zero do
3166 exist.
3167 (scm_i_make_ra): New, for specifying the tag of the new array.
3168 (scm_make_enclosed_array): Use it.
3169 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
3170 (scm_make_shared_array): Use scm_c_generalized_vector_length
3171 instead of scm_uniform_vector_length.
3172 (scm_array_in_bounds_p): Rewritten to be much cleaner.
3173 (scm_i_cvref): New, doing the job of scm_cvref.
3174 (scm_cvref): Use scm_i_cvref.
3175 (scm_array_ref): Do not accept non-arrays when no indices are
3176 given. Use scm_i_cvref to do the actual access.
3177 ("uniform-array-set1"): Do not register.
3178 (scm_array_set_x, scm_uniform_array_read_x,
3179 scm_uniform_array_write): Handle enclosed arrays explicitly.
3180 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
3181 handle enclosed arrays.
3182 (scm_array_to_list): Handle enclosed arrays explicitly.
3183 (rapr1): Removed.
3184 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
3185 enclosed arrays.
3186 (scm_i_print_enclosed_array): New.
3187 (tag_proto_table, tag_creator_table): Renamed former to latter.
3188 Added "a" and "b" for strings and bitvectors, resp.
3189 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
3190 latter. Tag "a" is in the table now, no need to handle it as a
3191 legacy tag.
3192 (scm_raprin1): Just call scm_iprin1.
3193 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
3194 explicitly.
3195 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
3196 Use scm_i_print_array as printer for scm_tc16_array.
3197
3198 2004-11-10 Marius Vollmer <mvo@zagadka.de>
3199
3200 * ramap.c (cind): Changed second arg to be pointer to long instead
3201 of uniform vector.
3202 (scm_ramapc): Allocate index vector with scm_malloc and not as
3203 uniform vector. Wrap it in a frame so that it gets properly freed.
3204 (scm_array_index_map_x): Likewise.
3205
3206 * unif.c: Changed all uses of scm_array_prototype to
3207 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
3208 prototype is known.
3209 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
3210 in terms of scm_uniform_vector_read_x and
3211 scm_uniform_vector_write, respectively. Strings and
3212 bitvector support has been dropped.
3213
3214 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
3215 needed files directly. Include config.h, <unistd.h> and <io.h>
3216 when available.
3217 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
3218
3219 2004-11-09 Marius Vollmer <mvo@zagadka.de>
3220
3221 * gh_data.c (gh_uniform_vector_length): Properly use
3222 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
3223
3224 2004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3225
3226 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
3227 New.
3228 (scm_i_uniform_vector_creator): Removed.
3229 (scm_i_generalized_vector_creator): New.
3230 (scm_uniform_vector_length, scm_uniform_element_size): Do not
3231 handle generalized vectors, only uniform numeric vectors.
3232 (alloc_uvec): Do length check here...
3233 (make_uvec): ...but not here.
3234 (coerce_to_uvec): Use new generalized vector functions to handle
3235 all kinds of vectors in one go.
3236
3237 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
3238 remaining scm_tc7_unused tags to get a neatly ordered list.
3239
3240 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
3241 longer handle scm_tc7_bvect bitvectors.
3242
3243 * ramap.c: Use the new generalized vector functions to handle all
3244 vector like things.
3245
3246 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
3247 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
3248 scm_generalized_vector_length, scm_generalized_vector_ref,
3249 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
3250 scm_is_generalized_vector, scm_c_generalized_vector_length,
3251 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
3252 New.
3253
3254 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
3255 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
3256 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
3257 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
3258 scm_c_bitvector_length, scm_c_bitvector_ref,
3259 scm_c_bitvector_set_x, scm_bitvector_elements,
3260 scm_bitvector_release, scm_frame_bitvector_release,
3261 scm_tc16_bitvector, bitvector_free, bitvector_print,
3262 bitvector_equalp, count_ones, find_first_one): New.
3263 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
3264 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
3265 using the new C API for bitvectors and maybe count_ones or
3266 find_first_one, as appropriate.
3267 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
3268 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
3269 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
3270 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
3271 new functions from above.
3272 (scm_i_proc_make_vector, scm_i_proc_make_string,
3273 scm_i_proc_make_bitvector): Made non-static for use in
3274 scm_i_generalized_vector_creator.
3275 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
3276 (scm_make_uve): Validate that the created object is a generalized
3277 vector.
3278 (scm_i_legacy_tag): Removed.
3279 (scm_i_print_array): Do it here.
3280 (scm_raprin1): Only print enclosed arrays.
3281
3282 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
3283
3284 2004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3285
3286 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
3287 added portability.
3288
3289 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
3290 for "space". Thanks to Bruce Korb!
3291
3292 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
3293 only after dest has been set. Thanks to Hyper Division!
3294
3295 * gh_data.c (gh_uniform_vector_length): Use
3296 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
3297
3298 2004-11-03 Marius Vollmer <mvo@zagadka.de>
3299
3300 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
3301 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
3302 SCM_SET_UVECTOR_LENGTH): Removed.
3303
3304 2004-11-02 Marius Vollmer <mvo@zagadka.de>
3305
3306 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
3307 Thanks!
3308
3309 * backtrace.c (scm_display_backtrace_with_highlights): Join the
3310 first and the second line of the SCM_DEFINE macro call, since old
3311 preprocessors cannot handle definitions that are split into two
3312 lines.
3313
3314 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
3315 declarations.
3316
3317 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
3318 scm_t_uint32 to fix the mismatch between the function declaration
3319 and definition.
3320
3321 * sort.c (quicksort): Don't use C99 variable declarations.
3322
3323 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
3324 SCM_BOOL_F if no type matches.
3325
3326 * threads.c (thread_print): Cast a pointer to size_t when printing
3327 with scm_uintprint.
3328
3329 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
3330 defined.
3331 (scm_array_prototype): Deprecated.
3332
3333 2004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3334
3335 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
3336 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
3337 more efficient access to the u32vector.
3338
3339 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
3340 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
3341 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
3342
3343 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
3344 instead of the old-style dvectors.
3345
3346 * gh_data.c: Use new-style uniform arrays in place of old-style
3347 ones.
3348
3349 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
3350 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
3351
3352 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
3353 instead of old-sytle uvectors.
3354
3355 * convert.c, convert.i.c: Rewritten completely, using
3356 scm_any_to_u8vector, etc and other new-style uniform vector
3357 functions.
3358
3359 * random.c (scm_random_solid_sphere_x,
3360 scm_random_hollow_sphere_x): Do not validate vector argument, this
3361 is already done elsewhere.
3362
3363 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
3364 scm_any_to_u8vector, etc): New.
3365 (scm_uniform_element_size, scm_uniform_vector_length): Do no
3366 longer handle old-style uniform vectors.
3367
3368 * read.c (scm_lreadr): Bugfix: include the last bit in the
3369 bit vector.
3370
3371 2004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3372
3373 * unif.h, unif.c (scm_array_creator): New.
3374 (scm_i_get_old_prototype): New.
3375 (scm_array_prototype): use it to return old-style prototype, never
3376 return creators.
3377 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
3378 arg of SCM_UNDEFINED. The latter is wrong.
3379
3380 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
3381 (make_uve): Removed.
3382 (scm_i_proc_make_vector, scm_i_proc_make_string,
3383 scm_i_proc_make_u1vector): New.
3384 (scm_init_unif): Initialize them.
3385 (scm_i_convert_old_prototype): New.
3386 (scm_make_uve): Use it to get the creator procedure. Removed all
3387 old code that created old-style uniform vectors.
3388 (scm_array_p): Handle generic vectors.
3389 (scm_dimensions_to_uniform_array): Do not fill new array with
3390 prototype when that is a procedure.
3391 (scm_list_to_uniform_array): Also accept a list of lower bounds as
3392 the NDIM argument.
3393 (scm_i_print_array): Print rank for shared or non-zero-origin
3394 vectors.
3395 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
3396 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
3397 which I do not understand yet.
3398 (scm_array_prototype): Explicitely handle generic vectors.
3399
3400 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
3401 (iflo2str): Use icmplx2str for complex numbers.
3402
3403 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
3404 scm_i_uniform_vector_prototype): Removed.
3405 (scm_i_uniform_vector_creator): New.
3406 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
3407 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
3408 Updated all tables and generic functions to support them.
3409 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
3410 (scm_init_srfi_4): Initialize them.
3411
3412 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
3413 sizeof(CTYPE) as explained in the comment.
3414
3415 * read.c (scm_lreadr): Call scm_i_read_array for all characters
3416 following '#' that can start an array. Explicitely disambiguate
3417 'i' and 'e' between introducing numbers and uniform vectors. Do
3418 not call scm_i_read_homogenous_vector, since that is also handled
3419 by scm_i_read_array now.
3420
3421 2004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3422
3423 First cut at integrating uniform vectors from srfi-4 with the rest
3424 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
3425 vector. The plan is to gradually replace one type after the other
3426 until none is left and then to consider general cleanups and
3427 optimizations.
3428
3429 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
3430
3431 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
3432 scm_uniform_vector_ref, scm_uniform_vector_set_x,
3433 scm_uniform_vector_to_list, scm_is_uniform_vector,
3434 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
3435 scm_uniform_vector_elements, scm_uniform_vector_element_size,
3436 scm_uniform_vector_release): New.
3437 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
3438 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
3439 from unif.h, unif.c and extended to handle both the old and new
3440 uniform vectors.
3441
3442 * tags.h (scm_tc7_byvect): Commented out.
3443
3444 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
3445 the former to the latter.
3446 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
3447 srfi-4.h, srfi-4.c.
3448 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
3449 (scm_array_p, scm_array_rank, scm_array_dimensions,
3450 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
3451 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
3452 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
3453 vectors. Removed code for scm_tc7_byvect.
3454 (scm_dimensions_to_uniform_array): Fill array with 0 when
3455 prototype is #\nul.
3456 (scm_i_print_array_dimension, scm_i_legacy_tag,
3457 scm_i_print_array): New.
3458 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
3459 for scm_tc7_byvect.
3460
3461 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
3462 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
3463 uniform vectors. Removed code for scm_tc7_byvect
3464
3465 * print.c (iprin1): Removed code for scm_tc7_byvect.
3466 * objects.c (scm_class_of): Likewise.
3467 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
3468 * gc-card.c (scm_i_sweep_card): Likewise.
3469 * evalext.c (scm_self_evaluating_p): Likewise.
3470 * eq.c (scm_equal_p): Likewise.
3471
3472 * gh_data.c (gh_chars2byvect): Reimplemented with
3473 scm_make_s8vector.
3474 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
3475
3476 * srfi-4.c (take_uvec): New.
3477 (alloc_uvec): Use it.
3478 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
3479
3480 * random.c (vector_scale, vector_scale_x): Renamed former to the
3481 latter, since it modifies its argument.
3482 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
3483 Do not use scm_universal_vector_length for non-uniform vectors.
3484 Use scm_f64vector_elements to access innards of uniform vectors.
3485
3486 * convert.i.c: Convert srfi-4 style uniform vectors when
3487 requested.
3488 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
3489 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
3490
3491 2004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3492
3493 * numbers.h, numbers.c (scm_i_print_double): New.
3494
3495 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
3496 ../srfi/ but heavily modified.
3497 * Makefile.am: Add them in all the right places.
3498 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
3499 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
3500 '#u', and '#s'.
3501
3502 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
3503 and made non-static. Changed all uses.
3504
3505 2004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3506
3507 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
3508 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
3509 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
3510 scm_uintprint to print unsigned integers, raw heap words, and
3511 adresses, using a cast to scm_t_bits to turn pointers into
3512 integers.
3513
3514 * unif.c: Include "libguile/print.h".
3515
3516 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
3517 scm_t_intmax values.
3518 (scm_uint2str): New, for scm_t_uintmax.
3519 (scm_iint2str): Argument type changed to scm_t_intmax,
3520 reimplemented in terms of scm_uint2str.
3521
3522 * print.c, print.h (scm_uintprint): New, for printing
3523 scm_t_uintmax values.
3524 (scm_intprint): Argument type changed to scm_t_intmax.
3525
3526 * sort.c (quicksort, scm_merge, scm_merge_list_x,
3527 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
3528 strategic places so that the loops can be interrupted.
3529
3530 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
3531 "-I$(top_srcdir)/libguile-ltdl".
3532 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
3533 "../libguile-ltdl/libguile-ltdl.a".
3534
3535 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
3536 all references to scm_lt_* with just lt_*. Include <ltdl.h>
3537 instead of <libguile-ltdl.h>.
3538
3539 2004-10-20 Marius Vollmer <mvo@zagadka.de>
3540
3541 * sort.c (quicksort): Copy pivot out of the array while
3542 constructing the partitions; it could get overwritten otherwise.
3543 Because of the ultimate insertion sort, this bug did not cause
3544 quicksort to fail, it just put all the burdon on the insertion
3545 sort and was thus very slow. Thanks to Rolan Orre for reporting
3546 the slowness!
3547
3548 2004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3549
3550 * numbers.c (scm_i_range_error): New.
3551 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
3552 scm_out_of_range.
3553
3554 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
3555 endpos. State inclusiveness/exclusiveness of bounds in docstring.
3556
3557 * unif.c (scm_array_p): When no prototype is given, explicitely
3558 test for allowable types, do not simply return true. Thanks to
3559 Roland Orre for reporting this!
3560
3561 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
3562
3563 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
3564 segment to scm_max_segment_size.
3565
3566 2004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
3567
3568 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
3569
3570 * inline.h (scm_double_cell): abort if GC running.
3571 (scm_cell): idem.
3572
3573 2004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3574
3575 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
3576 pos == 0.
3577
3578 Keywords no longer store a 'dash symbol'. Instead, they store a
3579 symbol with their real name.
3580
3581 * keywords.h, keywords.c, deprecated.h, deprecated.c
3582 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
3583 terms of scm_is_keyword and scm_keyword_dash_symbol.
3584
3585 * keywords.h, keywords.c, discouraged.h, discouraged.c
3586 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
3587 scm_c_make_keyword): Discouraged.
3588
3589 * keywords.h, keywords.c (scm_symbol_to_keyword,
3590 scm_keyword_to_symbol): Implemented in C.
3591 (scm_is_keyword, scm_from_locale_keyword,
3592 scm_from_locale_keywordn): New.
3593
3594 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
3595
3596 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
3597 scm_from_locale_keyword instead of scm_c_make_keyword.
3598
3599 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
3600 better error message.
3601
3602 * deprecated.c: Include discouraged.h and keywords.h.
3603
3604 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
3605 reading '#:' or ':'. See NEWS for consequences.
3606
3607 2004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3608
3609 * read.c (scm_lreadr): Revert change from 2004-09-22: string
3610 literals are now read-write again (until SCM_STRING_CHARS is
3611 removed).
3612
3613 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
3614 strings with an error message that blames SCM_STRING_CHARS.
3615
3616 * options.c (change_option_setting): Use scm_car instead of
3617 explicit type check plus SCM_CAR.
3618
3619 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
3620 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
3621 (scm_iprin1): Use them instead of the previoulsy hardcoded
3622 strings.
3623 (scm_init_print): Initialize them.
3624
3625 * backtrace.c (display_frame_expr): Do not remove control
3626 characters from the final string. Print it directly using
3627 scm_display.
3628
3629 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
3630 Thanks to Roland Orre!
3631
3632 2004-09-29 Kevin Ryde <user42@zip.com.au>
3633
3634 * regex-posix.c (scm_regexp_exec): Correction to last change, should
3635 be whole original string in match struct, not offsetted substring.
3636
3637 2004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
3638
3639 * gc.c (scm_gc_unprotect_object): abort if called during GC.
3640
3641 2004-09-24 Marius Vollmer <mvo@zagadka.de>
3642
3643 * Makefile.am (EXTRA_DIST): Added gettext.h.
3644
3645 * smob.c, smob.h (scm_assert_smob_type): New.
3646
3647 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
3648 Include GUILE_CFLAGS.
3649 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3650 now.
3651 (libpath.h): Put GUILE_CFLAGS in the build-info.
3652
3653 2004-09-23 Marius Vollmer <mvo@zagadka.de>
3654
3655 * print.h (scm_print_state): Added highlight_objects.
3656 * print.c (make_print_state, scm_free_print_state): Initialize it
3657 to SCM_EOL.
3658 (scm_iprin1): Wrap output in '{...}' when object is contained in
3659 highlight_objects.
3660
3661 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3662 scm_backtrace_with_highlights): New. Set highlight_objects of
3663 printstate.
3664
3665 * error.c (scm_error_scm): Document new meaning of data/rest
3666 argument for out-of-range and wrong-type-arg errors.
3667 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3668 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3669 exception so that it gets highlighted in the backtrace.
3670 Don't talk about "argument" when not giving a position.
3671
3672 * throw.c (handler_message): The rest argument is the fourth
3673 argument, not everything after the third. Call
3674 scm_display_backtrace_with_highlights, passing the rest argument
3675 when appropriate.
3676
3677 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3678
3679 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3680 <bruno@clisp.org>:
3681
3682 * i18n.c: Handle --disable-nls (thanks Bruno).
3683
3684 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3685 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3686
3687 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3688 LC categories.
3689 * posix.c (scm_setlocale): Use it.
3690
3691 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3692 scm_bind_textdomain_codeset): Make wrappers similar to C function
3693 they wrap.
3694
3695 * i18n.h: New file.
3696 * i18n.c: New file.
3697 * gettext.h: New file, taken from GNU gettext.
3698 * init.c: Include libguile/i18n.h.
3699 (scm_init_guile_1): Add call to scm_init_i18n().
3700 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3701 (DOT_X_FILES): Add i18n.x.
3702 (DOT_DOC_FILES): Add i18n.doc.
3703 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3704 (modinclude_HEADERS): Add i18n.h.
3705
3706 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3707
3708 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3709
3710 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3711 discouraged.h. Replaced all uses with scm_is_pair.
3712 (SCM_I_CONSP): New name for SCM_CONSP.
3713
3714 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3715 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3716 scm_cadr, etc): New.
3717 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3718 uses with scm_is_null.
3719
3720 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3721 instead of explicit code.
3722
3723 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3724
3725 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3726 Reworded logic a bit so that #f is returned immediately when s1 is
3727 too short to contain s2.
3728
3729 * regex-posix.c (scm_regexp_exec): Convert string to
3730 zero-terminated locale string before matching against it.
3731
3732 * strings.h, strings.c (scm_substring_read_only,
3733 scm_c_substring_read_only, scm_i_substring_read_only): New.
3734 (RO_STRING_TAG, IS_RO_STRING): New.
3735 (scm_i_string_writable_chars): Bail on read-only strings.
3736
3737 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3738 literals, thus making them read-only as specified by R5RS.
3739
3740 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3741
3742 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3743 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3744
3745 2004-09-21 Marius Vollmer <mvo@zagadka.de>
3746
3747 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3748 numbers.c.
3749 (scm_to_mpz, scm_from_mpz): New.
3750 Thanks to Andreas Vögele!
3751
3752 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3753 just on a line of its own.
3754
3755 * srfi-13.c (scm_string_any, scm_string_every,
3756 scm_string_tabulate, string_upcase_x, string_down_case_x,
3757 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3758 size_t instead of int for indices into strings. Make sure that no
3759 over- or underflow occurs. Thanks to Andreas Vögele!
3760 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3761 indices, which can also be negative.
3762
3763 2004-09-20 Marius Vollmer <mvo@zagadka.de>
3764
3765 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3766
3767 * threads.c (scm_threads_mark_stacks): Call
3768 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3769 only used once.
3770
3771 2004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3772
3773 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3774 Bugfix: when subtracting unsigned values, make sure that result
3775 does not wrap.
3776
3777 2004-09-09 Kevin Ryde <user42@zip.com.au>
3778
3779 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3780 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
3781 by Andreas Vögele.
3782
3783 2004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3784
3785 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3786
3787 * eq.c (real_eqv): Pretend that all NaNs are equal.
3788
3789 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3790
3791 2004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3792
3793 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3794 use size_t for some locals instead of int.
3795
3796 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3797 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3798 (skip_scsh_block_comment): Use scm_input_error instead of
3799 scm_misc_error in case of EOF.
3800
3801 2004-09-07 Kevin Ryde <user42@zip.com.au>
3802
3803 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
3804 Bug report by Bill Schottstaedt.
3805
3806 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3807 column.
3808 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3809
3810 * posix.c (scm_access): Update docstring per manual.
3811
3812 * posix.c (scm_nice): Correction to error detection. Reported by
3813 Matthias Koeppe.
3814
3815 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3816 throw error before unlocking mutex with SCM_ALLOW_INTS.
3817
3818 2004-09-06 Kevin Ryde <user42@zip.com.au>
3819
3820 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3821 available. This also gets around CLK_TCK being absent when
3822 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3823
3824 2004-09-03 Stefan Jahn <stefan@lkcc.org>
3825
3826 * threads.c (scm_threads_mark_stacks): Fixed local variable
3827 definitions.
3828
3829 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
3830 local variable definitions.
3831
3832 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3833 MinGW32 because it conflicts with its pthread headers.
3834 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3835 (scm_strftime): Using scm_from_locale_string() instead of
3836 scm_makfrom0str().
3837
3838 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
3839 part.
3840
3841 * numbers.c (scm_init_numbers): Removed check_sanity() call
3842 inside GUILE_DEBUG. The function has been removed somewhen...
3843
3844 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3845 MinGW32 because it conflicts with its pthread headers.
3846
3847 2004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3848
3849 * strings.c (SCM_STRINGP): Accept all strings.
3850 (SCM_STRING_CHARS): Reject shared substrings here.
3851
3852 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3853 the Copyright years.
3854
3855 2004-08-27 Kevin Ryde <user42@zip.com.au>
3856
3857 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3858 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3859 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3860
3861 2004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3862
3863 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3864 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3865 scm_i_symbol_is_interned, scm_i_mem2symbol,
3866 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3867
3868 2004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3869
3870 * srfi-13.c: First cut at thread-safeness and proper use of
3871 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3872 been inserted. Made sure that no internal string pointer is used
3873 across a SCM_TICK or a possible GC.
3874
3875 * script.c (scm_compile_shell_switches): Use
3876 scm_from_locale_string instead of scm_makfrom0str.
3877
3878 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3879 always been.
3880
3881 2004-08-25 Marius Vollmer <mvo@zagadka.de>
3882
3883 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3884 strop.c.
3885
3886 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3887 * strop.h, strop.c: Removed, they are now empty.
3888 * Makefile.am: Updated for new and removed files.
3889
3890 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3891 to scm_string_to_symbol.
3892
3893 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3894 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3895 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3896 charset instead of libc functions.
3897
3898 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3899 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3900 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3901 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3902 instead of explicit code.
3903
3904 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3905 "srfi-13.h" instead of "strop.h".
3906
3907 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3908 scm_init_srfi_14. Do not call scm_init_strop.
3909
3910 2004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3911
3912 * numbers.c (scm_inf_p): Synced docstring back from manual.
3913
3914 2004-08-22 Marius Vollmer <mvo@zagadka.de>
3915
3916 * strings.c (get_str_buf_start): New helper function.
3917 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3918 scm_i_string_char, scm_i_string_writable_chars): Use it.
3919 (scm_i_substring_copy): Make START argument optional for C
3920 callers, for upcoming SRFI-13 integration.
3921
3922 2004-08-21 Marius Vollmer <mvo@zagadka.de>
3923
3924 From Richard Todd, Thanks!
3925
3926 * script.c (scm_compile_shell_switches): added '-L' switch to add
3927 to the %load-path.
3928
3929 2004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3930
3931 * eval.c (unmemoize_exprs): When dropping internal body markers
3932 from the output during unmemoization, also drop those that are not
3933 immediately at the beginning of a body.
3934
3935 2004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3936
3937 * eval.c (scm_lookupcar1): Report "Variable used before given a
3938 value" insetad of an "Unbound" one for variables that are found
3939 but still contain SCM_UNDEFINED.
3940
3941 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3942 expects a null-terminated string in the locale encoding, but
3943 scm_i_string_writable_chars doesn't give that. Fixed by letting
3944 mkstemp modify a locale version of the tmpl argument and copying
3945 the result back into tmpl.
3946
3947 * strop.c (scm_substring_move_x): Store into str2, not str1.
3948
3949 2004-08-20 Kevin Ryde <user42@zip.com.au>
3950
3951 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3952 to modify the input string.
3953
3954 2004-08-19 Marius Vollmer <mvo@zagadka.de>
3955
3956 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3957 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3958 scm_c_symbol_length.
3959
3960 2004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3961
3962 New string implementation, with copy-on-write strings and
3963 mutation-sharing substrings, and a new internal string API.
3964 Symbols can now share memory with strings.
3965
3966 * tags.h (scm_tc7_stringbuf): New tag.
3967
3968 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3969 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3970 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3971 uses.
3972 (scm_i_make_string, scm_c_make_string): New, to replace
3973 scm_allocate_string. Updated all uses.
3974 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3975 SCM_STRING_LENGTH): Deprecated.
3976 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3977 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3978 Discouraged. Replaced all uses with scm_from_locale_string or
3979 similar, as appropriate.
3980 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3981 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3982 scm_substring_shared, scm_substring_copy): New.
3983
3984 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3985 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3986 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3987 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3988 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3989 Deprecated.
3990 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3991 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3992 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3993 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3994 Updated all uses.
3995 (scm_gensym): Generate only the number suffix in the buffer, just
3996 string-append the prefix.
3997
3998 * error.c (scm_memory_error): Do not try to throw, just abort.
3999 Throwing will not work anyway.
4000
4001 * gh.h, gh-data.c (gh_set_substr): Made src const.
4002
4003 * ports.c (scm_i_mode_bits_n): New, for counted strings.
4004 (scm_mode_bits): Use it.
4005 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
4006 a vector normally and fill that instead of consing a list with a
4007 blocked GC.
4008
4009 * read.c (scm_i_casei_streq): New, for counted strings.
4010
4011 * threads.c (gc_section_count): Removed, thread-sleeping can not
4012 be nested.
4013 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
4014 admin mutex so that we can be put to sleep by other threads while
4015 blocking on that mutex. Lock all the heap mutex of all threads,
4016 including ourselves.
4017 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
4018 call scm_i_enter_guile.
4019 (scm_thread_mark_stacks): Expect all threads to be suspended.
4020
4021 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
4022 scm_gc_mallocated, for now.
4023 (scm_init_storage): Initialize it.
4024 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
4025
4026 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
4027 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
4028 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
4029 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
4030
4031 * strop.c (scm_string_copy): Use scm_c_substring to get a
4032 copy-on-write string.
4033
4034 2004-08-18 Kevin Ryde <user42@zip.com.au>
4035
4036 * arbiters.c (FETCH_STORE): New macro.
4037 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
4038 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
4039 scm_try_arbiter and scm_release_arbiter.
4040 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
4041 for speed on i386, otherwise using mutex.
4042
4043 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
4044 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
4045 exact and inexact is #f.)
4046
4047 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
4048 to get thread safety of scm_ttyname.
4049
4050 * ports.c (ttyname): Remove prototype, unused.
4051
4052 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
4053 Reported by Michael Tuexen.
4054
4055 2004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4056
4057 * load.c (scm_init_load_path): Do not pass NULL to
4058 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
4059 not set. Thanks to Bill Schottstaedt.
4060
4061 2004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4062
4063 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
4064 locale strings instead of accessing their internals.
4065 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
4066 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
4067 SCM_STRING_CHARS and SCM_STRING_LENGTH.
4068
4069 * simpos.c (scm_system): Convert SCM strings to locale strings
4070 instead of accessing their internals.
4071
4072 * script.c (scm_compile_shell_switches): Convert version to locale
4073 string before printing it.
4074
4075 * rdelim.c (scm_read_delimited_x): Avoid
4076 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
4077 of scm_from_long for the returned number of read characters.
4078
4079 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
4080 scm_i_mode_bits to avoid accessing internals of SCM string from C.
4081
4082 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
4083 Use them instead of SCM_SYSCALL when one or two strings need to be
4084 converted into locale strings.
4085 (my_rename): New, gathers platform dependent code for renaming.
4086 (scm_rename): Use it.
4087 (scm_readlink, scm_copy_file): Convert SCM strings to locale
4088 strings instead of accessing their internals.
4089 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
4090 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
4091 SCM_STRING_LENGTH.
4092
4093 * extensions.c (load_extension): Convert lib and init to locale
4094 strings instead of accessing the internals directly.
4095 (scm_c_load_extension): Use scm_from_locale_string instead of
4096 scm_makfrom0str.
4097
4098 * fports.h, fports.c (scm_i_fdes_to_port): New, like
4099 scm_fdes_to_port, but take mode bits directly instead of as a C
4100 string.
4101 (scm_i_fdes_to_port): Implement using above.
4102 (scm_open_file): Use scm_i_fdes_to_port together with
4103 scm_i_mode_bits to avoid accessing internals of SCM string from C.
4104 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
4105 with scm_i_mode_bits to avoid accessing internals of SCM string
4106 from C.
4107
4108 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
4109 SCM string as argument.
4110
4111 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
4112 bits directly instead of C string.
4113 (scm_void_port): Implement using above.
4114 (scm_sys_make_void_port): Use scm_i_void_port together with
4115 scm_i_mode_bits to avoid accessing internals of SCM string.
4116
4117 * strings.h, strings.c (scm_i_get_substring_spec): New.
4118
4119 * socket.c, rw.c, deprecated.h, validate.h
4120 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
4121 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
4122 scm_to_locale_string, etc.
4123 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
4124 above, plus scm_i_get_substring_spec.
4125
4126 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
4127 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
4128 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
4129 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
4130 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
4131 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
4132 with more explicit scm_remember_upto_here_1, etc, or introduced
4133 them in the first place.
4134
4135 * posix.c (WITH_STRING): New helper macro. Use it where one
4136 locale string is needed for a short piece of code.
4137 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
4138 when one locale string is needed.
4139 (scm_mkstemp): Convert tmpl to a locale string.
4140 (scm_putenv): Rewritten to use only C strings.
4141 (scm_setlocale, scm_crpt): Convert argument strings to locale
4142 strings.
4143
4144 2004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4145
4146 * load.c (scm_primitive_load_path): Do not check for absolute
4147 filenames when scm_sys_search_load_path returns false, which will
4148 return absolute filenames unchanged.
4149
4150 2004-08-11 Marius Vollmer <mvo@zagadka.de>
4151
4152 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
4153 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
4154 of an alist. Thanks to Matthias Koeppe!
4155
4156 2004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4157
4158 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
4159 Moved from string.h to deprecated.h.
4160
4161 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
4162
4163 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
4164 SCM_I_MAKE_STRING_TAG, changed all uses.
4165 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
4166 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
4167 respectively. For a short time, the old names are still there as
4168 aliases. Not all uses have been changed yet, but the ones in
4169 strings.c have.
4170 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
4171 SCM_T_BITS_MAX.
4172 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
4173 scm_take_locale_string, scm_take_locale_stringn,
4174 scm_to_locale_string, scm_to_locale_stringn,
4175 scm_to_locale_stringbuf): New.
4176 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
4177 deprecated.[hc]. Implemented in terms of the new functions above.
4178 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
4179 scm_makfrom0str): Reimplemented in terms of the new functions from
4180 above. They will be discouraged shortly.
4181 (scm_substring): Do not use scm_mem2string.
4182 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
4183 to replace similar code from posix.c, simpos.c, and dynl.c.
4184 (scm_string_append): Use memcpy instead of explicit loop. Do not
4185 use register keyword. Use plain 'char' instead of 'unsigned
4186 char'.
4187
4188 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
4189 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
4190
4191 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
4192 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4193 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
4194 not as a pointer. Use scm_remember_upto_here_1 to protect it.
4195
4196 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
4197 string. This avoids a conversion round-trip.
4198
4199 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
4200 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4201 SCM_I_STRING_LENGTH, respectively.
4202 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
4203
4204 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
4205 of a string, call scm_display on the string itself.
4206
4207 * dynwind.c, dynwind.h (scm_frame_free): New.
4208
4209 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
4210 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
4211 Replaced uses of SCM_STRING_CHARS with proper uses of
4212 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
4213 Replaced scm_mem2string with scm_from_locale_string.
4214
4215 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
4216 Removed, replaced all uses with scm_i_allocate_string_pointers.
4217
4218 * load.h, load.c (scm_internal_parse_path): Removed.
4219 (scm_parse_path): Use scm_string_split to do the work.
4220 (scm_init_load_path): Use scm_parse_path instead of
4221 scm_internal_parse_path.
4222 (scm_search_path): Rewritten string handling part of the code in
4223 terms of scm_to_locale_stringbuf and so that it is thread safe.
4224
4225 * error.c (scm_error_scm): Throw directly instead of calling
4226 scm_error, this avoids the back and forth conversion of SUBR and
4227 MESSAGE and also plugs a memory leak.
4228 (scm_error): Call scm_error_scm.
4229
4230 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
4231 (display_header): Print FNAME when it is true, not
4232 merely when it is a string.
4233
4234 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
4235 unceremoniously. They were unused by Guile itself, and external
4236 use should stop immediately.
4237
4238
4239 2004-08-10 Marius Vollmer <mvo@zagadka.de>
4240
4241 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
4242 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
4243 deprecated versions installed in deprecated.h and deprecated.c.
4244 Changed all uses.
4245
4246 2004-08-06 Rob Browning <rlb@defaultvalue.org>
4247
4248 * net_db.c (scm_resolv_error): don't cause an exception while
4249 trying to throw an exception -- call scm_misc_error with correct
4250 arguments. The previous arguments needed a format escape that
4251 wasn't in any of the format strings.
4252
4253 2004-08-06 Kevin Ryde <user42@zip.com.au>
4254
4255 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
4256 so as not to depend on signedness of plain char. For byvect range
4257 check, throw out-of-range rather than wrong-type-arg.
4258
4259 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
4260 signed byte range checks by using scm_to_schar and scm_from_schar,
4261 don't want to depend on signedness of C char.
4262
4263 2004-08-05 Kevin Ryde <user42@zip.com.au>
4264
4265 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
4266 SCM_DEFER_INTS.
4267 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
4268 guaranteed if multiple threads compete to unlock.
4269 Update docstrings per doc/ref/api-scheduling.texi.
4270
4271 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
4272 stat on the filename, to be certain a file rename can't mean we get
4273 info on one filesystem object but open another. This fstat usage is
4274 similar to Emacs copy-file.
4275
4276 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
4277
4278 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
4279 SIGINT and SIGQUIT, since those values are ints.
4280
4281 2004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4282
4283 * num2integral.i.c, num2float.i.c: Removed.
4284 * Makefile.am (noinst_HEADERS): Updated.
4285
4286 * numbers.h. numbers.c (scm_make_ratio): Renamed to
4287 scm_i_make_ratio and made static, replaced uses with scm_divide.
4288 (scm_complex_p): New, export as "complex?" to Scheme.
4289 (scm_number_p): Export as "number?" to Scheme.
4290 (scm_is_complex, scm_is_number): New.
4291 (scm_c_make_rectangular, scm_c_make_polar): New.
4292 (scm_make_rectangular, scm_make_polar): Use above.
4293 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
4294 New.
4295 (scm_make_complex): Discouraged by moving to discouraged.h and
4296 discouraged.c. Replaced all uses with scm_c_make_rectangular.
4297
4298 * discouraged.h, discouraged.c, numbers.c, numbers.h
4299 (scm_is_rational): New.
4300 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
4301 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
4302 Removed prototypes.
4303 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
4304 Discouraged by moving to discouraged.h and discouraged.c.
4305 Replaced all uses with scm_from_double.
4306 (scm_num2float, scm_num2double): Discouraged by moving prototype
4307 to discouraged.h and rewriting in terms of scm_to_double.
4308 Replaced all uses with scm_to_double.
4309 (scm_to_double): Do not implement in terms of scm_num2dbl, use
4310 explicit code.
4311 (scm_from_double): Do not implement in terms of scm_make_real, use
4312 explicit code.
4313
4314 2004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4315
4316 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
4317
4318 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
4319 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
4320
4321 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
4322 Renamed to SCM_I_* in order to avoid collisions with the versions
4323 defined in deprecated.h.
4324
4325 * discouraged.h, discouraged.c: New files.
4326
4327 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
4328 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
4329 deprecated to being discouraged by moving to discouraged.h.
4330
4331 * numbers.h, numbers.c, discouraged.h, discouraged.c
4332 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
4333 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
4334 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
4335 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
4336 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
4337 scm_num2ulong_long): Discouraged by moving to discouraged.h and
4338 discouraged.c and reimplementing in terms of scm_from_* and
4339 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
4340 functions.
4341
4342 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
4343 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
4344 scm_i_size2big, scm_i_ptrdiff2big): Removed.
4345 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
4346 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
4347 explicit code.
4348
4349 2004-08-02 Kevin Ryde <user42@zip.com.au>
4350
4351 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
4352 and current usage and migration.
4353
4354 2004-07-31 Kevin Ryde <user42@zip.com.au>
4355
4356 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
4357 it's not thread safe.
4358 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
4359 advantage of this.
4360 * fports.c (scm_open_file): Use scm_strerror likewise.
4361 * filesys.c (scm_stat, scm_lstat): Ditto.
4362
4363 * filesys.c (scm_copy_file): Avoid fd leak when destination file
4364 cannot be opened.
4365
4366 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
4367 update, for thread safety.
4368 (gensym_counter): Move into scm_gensym which is its only user.
4369 (scm_init_symbols): No need to explicitly initialize gensym_counter.
4370
4371 2004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4372
4373 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
4374 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
4375 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
4376 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
4377 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
4378 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
4379 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
4380 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
4381 defined in terms of scm_to_signed_integer, etc, but in terms of
4382 scm_to_int8, etc.
4383
4384 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
4385
4386 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
4387 no longer used.
4388
4389 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
4390 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
4391
4392 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
4393 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
4394 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
4395 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
4396 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
4397 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
4398 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
4399
4400 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
4401 the functions below.
4402
4403 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
4404 conv-uinteger.i.c.
4405
4406 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
4407 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
4408 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
4409 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
4410 scm_from_uint64): Turned from macros into proper functions.
4411 (scm_to_signed_integer, scm_to_unsigned_integer,
4412 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
4413 conv-integer.i.c and conv-uinteger.i.c, as well.
4414
4415 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
4416 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
4417 the limits. Those are always defined.
4418
4419 2004-07-29 Kevin Ryde <user42@zip.com.au>
4420
4421 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
4422
4423 2004-07-28 Kevin Ryde <user42@zip.com.au>
4424
4425 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
4426 safety.
4427
4428 * unif.c (scm_array_set_x): For svect, use scm_num2short for
4429 consistency with other vector types and to get arg and func name into
4430 error message.
4431
4432 2004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4433
4434 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
4435 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
4436 scm_from_bool, respectively.
4437 (SCM_NINUMP): Added.
4438
4439 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
4440 deprecated.h. Replaced all uses with scm_is_eq.
4441
4442 2004-07-24 Kevin Ryde <user42@zip.com.au>
4443
4444 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
4445 * posix.c (scm_crypt): Use it to protect static data in crypt().
4446
4447 2004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4448
4449 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
4450 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
4451 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
4452 versions to deprecated.h and deprecated.c. Changed all uses to
4453 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
4454 scm_from_*, as appropriate.
4455
4456 * dynwind.c (scm_i_dowinds): Removed unused code that would call
4457 the unexisting scm_cross_dynwind_binding_scope for inums on the
4458 windlist.
4459
4460 2004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4461
4462 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
4463 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
4464 byte-wise address to a SCM integer. Changed all uses.
4465 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
4466 scm_to_ipv6 and added type and range checking, for converting from
4467 an IPv& byte-wise address to a SCM integer. Changed all uses.
4468 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
4469 is now done by scm_to_ipv6.
4470
4471 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
4472 not accept inexact integers.
4473
4474 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
4475 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
4476 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
4477 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
4478 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
4479 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
4480 fixnum/bignum distinction visible. Changed all uses to
4481 scm_to_size_t or similar.
4482
4483 2004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4484
4485 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
4486
4487 2004-07-10 Kevin Ryde <user42@zip.com.au>
4488
4489 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
4490 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
4491 such a size causes divide-by-zeros in scm_hasher.
4492
4493 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
4494 leak.
4495
4496 2004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4497
4498 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
4499 Rewritten using the same logic as scm_to_signed_integer and
4500 scm_to_unsigned_integer, respectively, which is better(tm). Also,
4501 use CHAR_BIT instead of hardcoding 8.
4502 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
4503 SCM_I_LLONG_MIN etc. instead.
4504
4505 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
4506 SCM_I_MAKINUM and changed all uses.
4507 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
4508
4509 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
4510 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
4511 them by assuming twos-complement.
4512
4513 2004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4514
4515 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
4516 configure now produces.
4517 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
4518 definitions, giving the limits of the integer types defined by
4519 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
4520 LLONG_MIN or LONG_LONG_MIN is hard to get at.
4521
4522 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
4523 SHORT_MIN.
4524 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
4525 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
4526 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
4527 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
4528 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
4529 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
4530 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
4531 scm_from_uintmax): New.
4532
4533 2004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4534
4535 * tags.h (scm_is_eq): New.
4536
4537 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
4538 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
4539 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
4540 scm_from_bool, and scm_is_bool, respectively.
4541
4542 * boolean.h (scm_is_bool): Fix bug in prototype.
4543 (scm_from_bool): The argument is "x" not "f", stupid.
4544
4545 * boolean.c (scm_is_bool): Fix typo.
4546
4547 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
4548 scm_is_unsigned_integer, scm_to_signed_integer,
4549 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
4550 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
4551 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
4552 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
4553 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
4554 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
4555 New.
4556
4557 2004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4558
4559 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
4560 scm_to_bool): New.
4561
4562 2004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4563
4564 * backtrace.c (display_expression, display_frame): Call
4565 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
4566 single memoized expression.
4567
4568 * debug.c (memoized_print): Don't try to unmemoize the memoized
4569 object, since we can't know whether it holds a single expression
4570 or a body.
4571
4572 (scm_mem_to_proc): Removed check for lambda expression, since it
4573 was moot anyway. Whoever uses these functions for debugging
4574 purposes should know what they do: Creating invalid memoized code
4575 will cause crashes, independent of whether this check is present
4576 or not.
4577
4578 (scm_proc_to_mem): Take the closure's code as it is and don't
4579 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
4580 memoized code should not be modified.
4581
4582 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
4583 scm_unmemoize from public use, but made scm_i_unmemoize_expr
4584 available as a guile internal function instead. However,
4585 scm_i_unmemoize_expr will only work on memoized objects that hold
4586 a single memoized expression. It won't work with bodies.
4587
4588 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
4589 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
4590 i. e. a list of expressions.
4591
4592 * eval.c (unmemoize_exprs): Drop internal body markers from the
4593 output during unmemoization.
4594
4595 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
4596 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
4597 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
4598 as guile internal functions instead. scm_i_unmemoize_expr will
4599 only work on a single memoized expression, while
4600 scm_i_unmemocopy_body will only work on bodies.
4601
4602 2004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4603
4604 * eval.c (unmemoize_exprs): Handle semi-memoized code.
4605
4606 (scm_cons_source, scm_primitive_eval): Prefer higher level
4607 predicate SCM_FALSEP over SCM_IMP.
4608
4609 2004-06-15 Rob Browning <rlb@defaultvalue.org>
4610
4611 * script.c (scm_shell_usage): minor phrasing change.
4612
4613 * gc_os_dep.c: update ifdefery for macosx.
4614 (scm_get_stack_base): separate result initialization from
4615 declaration to slience warnings with macosx and hp-ux using gcc
4616 3.3. Thanks to Andreas Vögele.
4617
4618 2004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
4619
4620 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
4621
4622 2004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4623
4624 * list.[ch] (scm_i_finite_list_copy): New internal function to
4625 copy lists that are known to be finite (though not necessarily
4626 proper).
4627
4628 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
4629 a closure's argument list like an expression of a body.
4630
4631 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
4632 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
4633 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
4634 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
4635 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
4636 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
4637 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
4638 unmemoize_builtin_macro): New static functions and symbols.
4639
4640 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
4641 now has a slightly different meaning: The memoized form that is
4642 receives as its argument is now interpreted as a sequence of
4643 expressions from a body.
4644
4645 (unmemocar, scm_unmemocar): Since the whole functionality of
4646 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4647 has its old content back and is deprecated, while unmemocar has
4648 been removed.
4649
4650 (SCM_BIT7): Removed.
4651
4652 (CEVAL): For unmemoizing a single expression, call
4653 unmemoize_expression instead of scm_unmemocopy, which now expects
4654 a sequence of body expressions. Eliminated unnecessary empty
4655 environment frame when executing let* forms. Eliminated
4656 unmemoization step from evaluator.
4657
4658 2004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4659
4660 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4661 macroexp and made static. Added new version of scm_macroexp that
4662 emits a deprecation warning and then calls macroexp.
4663 (scm_m_undefine): Issue deprecation warning.
4664
4665 2004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4666
4667 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4668 Modified to make set! work on symbols that represent syntactic
4669 keywords.
4670
4671 2004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4672
4673 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4674 compound expression as lvalue errors.
4675
4676 2004-05-24 Marius Vollmer <mvo@zagadka.de>
4677
4678 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4679 WINDER_DATA to a SCM.
4680
4681 2004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4682
4683 * goops.c (compute_getters_n_setters, create_standard_classes,
4684 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4685 lambda expression rather than creating them with scm_closure.
4686
4687 2004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4688
4689 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4690 misplaced syntactic keywords. This will not work unless guile's
4691 defmacro feature is deprecated.
4692
4693 (scm_m_case): Fixed a bug that caused the list of labels to grow
4694 with every case form.
4695
4696 2004-05-19 Kevin Ryde <user42@zip.com.au>
4697
4698 * numbers.c (scm_round_number): For inum and big, just return x. For
4699 real, use scm_round for 2^54-1 etc problems covered there.
4700
4701 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4702 doesn't provide trunc. This was for when `truncate' was done as a
4703 scm_tc7_dsubr, no longer required.
4704
4705 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4706 to stack marking call, two parameters and no cast on t->base.
4707
4708 2004-05-18 Marius Vollmer <mvo@zagadka.de>
4709
4710 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4711 processed hashtables back into the weak_hashtables list. Thanks
4712 to Bill Schottstaedt!
4713
4714 2004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4715
4716 * eval.c (unmemoize_quote): New static function.
4717
4718 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4719 representation of 'quote' and '@slot-ref' to an improper list.
4720 This reduces execution time, the number of cells used to hold the
4721 memoized code, and thus also reduces garbage collection time.
4722
4723 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4724
4725 (SCM_CEVAL): Changed macro handling to also work with macros that
4726 return improper lists. Added an assertion, that the code returned
4727 by a macro transformer will not lead to cycles in the memoized
4728 code.
4729
4730 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4731
4732 No functional change, just rearrangements of functions within the
4733 file.
4734
4735 * eval.c (scm_ilookup, scm_unbound_variable_key,
4736 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4737 the definitions used for execution, since that's where they will
4738 belong to later.
4739
4740 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4741
4742 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4743 throughout guile, has not been part of an official release yet,
4744 and the concept of sloppy predicates has never been a good idea.
4745
4746 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4747 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4748 Simplified.
4749
4750 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4751
4752 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4753 to make explicit what happens.
4754
4755 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4756
4757 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4758 explicit what happens.
4759
4760 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4761 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4762
4763 2004-05-11 Marius Vollmer <mvo@zagadka.de>
4764
4765 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4766 is indeed a procedure when it isn't a number.
4767
4768 2004-05-10 Marius Vollmer <mvo@zagadka.de>
4769
4770 Convert floating point numbers into strings with an arbitrary
4771 radix. Thanks to Richard Todd!
4772
4773 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4774 fit.
4775 (fx): Removed.
4776 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4777 number_chars): New, to support variable radices.
4778 (idbl2str): Use above instead of the old base-10 only tables.
4779 (iflo2str): Pass on new RADIX argument to idbl2str.
4780 (scm_number_to_string): Pass radix to iflo2str.
4781 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4782 iflo2str.
4783 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4784 possible radices.
4785
4786 2004-05-10 Kevin Ryde <user42@zip.com.au>
4787
4788 * numbers.c (scm_logbit_p): Correction to test above the end of an
4789 inum. Reported by Jan Konecny.
4790
4791 2004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4792
4793 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4794 scm_t_bits. Updated all users.
4795 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4796 duplicating the code.
4797 (SCM_CELL_OBJECT_LOC): New.
4798 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4799 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4800
4801 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4802 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4803 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4804 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4805 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4806 SCM_SMOB_OBJECT_3_LOC): New.
4807 * smob.c (scm_i_set_smob_flags): New function.
4808
4809 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4810 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4811 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4812 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4813 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4814 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4815
4816 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4817 taking the address of SCM_CELL_WORD_1, the latter being no longer
4818 an lvalue.
4819
4820 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4821 of casting SCM_CELL_WORD_LOC.
4822
4823 2004-05-02 Kevin Ryde <user42@zip.com.au>
4824
4825 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
4826 --disable-deprecated. Reported by Andreas Vögele.
4827
4828 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
4829 particular on HP-UX). Reported by Andreas Vögele.
4830
4831 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4832 code has support for. Fixes building with AIX cc, which is ansi but
4833 doesn't define __STDC__. Reported by Keith Crane.
4834 (var_start): Remove macro, this variation no longer required.
4835 (scm_list_n): Use va_start directly.
4836
4837 2004-05-01 Kevin Ryde <user42@zip.com.au>
4838
4839 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
4840 is now gone. Reported by Andreas Vögele.
4841
4842 2004-04-28 Kevin Ryde <user42@zip.com.au>
4843
4844 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4845 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4846 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
4847 subscript. Reported by Andreas Vögele.
4848 Also cast through unsigned char to avoid passing negatives to those
4849 macros if input contains 8-bit values.
4850
4851 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4852 corrections to range check for signed numbers. Remove
4853 scm_remember_upto_here_1(num) from these checks, since num is used
4854 subsequently anyway.
4855
4856 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4857 avoid warning from gcc 3.4. Reported by Hyperdivision.
4858
4859 * numbers.c (scm_bit_extract): Use min instead of MIN.
4860 (MIN): Remove, this conflicts with similar macro defined by limits.h
4861 on HP-UX. Reported by Andreas Vögele.
4862
4863 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
4864 particular on HP-UX). Reported by Andreas Vögele.
4865
4866 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
4867 Reported by Andreas Vögele.
4868
4869 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4870 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
4871 by Andreas Vögele.
4872
4873 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4874
4875 * eval.c (s_macro_keyword): New static identifier.
4876
4877 (scm_m_define): Change order to first create binding and
4878 evaluating the expression afterwards.
4879
4880 (scm_m_set_x): Memoize complete set! expression. Only leave
4881 symbols if no binding exists at memoization time. Throw error if
4882 assigning to a syntactic keyword.
4883
4884 (lazy_memoize_variable): New function.
4885
4886 (CEVAL): When execution set!, perform lazy memoization if
4887 unmemoized symbol is detected.
4888
4889 * modules.c (module_variable): Return variables with unbound
4890 value.
4891
4892 * tags.h: Fix comment.
4893
4894 2004-04-25 Kevin Ryde <user42@zip.com.au>
4895
4896 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4897 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4898 in 8-bit locales, and ensures consistency with char-upper-case? and
4899 char-lower-case? which already use ctype.h.
4900 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4901 Remove.
4902 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4903
4904 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4905 call. Reported by Hyperdivision.
4906
4907 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4908 Reported by Hyperdivision.
4909
4910 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4911 Hyperdivision.
4912
4913 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4914
4915 Hide the implementation of ilocs and isyms in eval.c.
4916
4917 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4918 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4919 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4920 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4921 eval.h to eval.c.
4922
4923 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4924 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4925 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4926 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4927 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4928 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4929 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4930 renamed to ISYMNUM.
4931
4932 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4933 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4934 Extracted printing of ilocs and isyms to guile internal functions
4935 scm_i_print_iloc, scm_i_print_isym of eval.c.
4936
4937 2004-04-22 Kevin Ryde <user42@zip.com.au>
4938
4939 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4940
4941 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4942 rounding in x+0.5 when x is a big value already an integer. In
4943 certain hardware rounding cases x+0.5 can give an adjacent integer,
4944 leading to that as the result, when we really just wanted x itself.
4945
4946 2004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4947
4948 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4949
4950 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4951 added const qualifiers, cast intentionally unused expressions to
4952 void for emphasis, improved comment.
4953
4954 2004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4955
4956 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4957 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4958 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4959 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4960 Defined the tc8-tag for flags to be 0x04, which will mean that
4961 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4962 to the reduced number of bits and the simpler bit pattern for
4963 SCM_BOOL_F, certain machines may be able to use more efficient
4964 processor instructions to deal with SCM_BOOL_F.
4965
4966 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4967 never been defined in a released version, thus no need to
4968 deprecate them.
4969
4970 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4971 instead of tc9 tags.
4972
4973 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4974 of tc9 tags.
4975
4976 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4977 could have used this definition.
4978
4979 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4980 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4981 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4982 as isyms, as special isyms don't exist any more.
4983
4984 2004-04-18 Kevin Ryde <user42@zip.com.au>
4985
4986 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4987 safety.
4988
4989 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4990 explicit swapping code.
4991
4992 2004-04-15 Kevin Ryde <user42@zip.com.au>
4993
4994 * cpp_sig_symbols.in: Add SIGSYS.
4995
4996 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4997 recursion.
4998
4999 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
5000 frac/big and frac/frac, use scm_less_p for exact comparison.
5001
5002 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
5003 with big/inum.
5004
5005 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
5006
5007 2004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
5008
5009 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
5010
5011 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
5012 scm_c_{up,down}case.
5013 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
5014 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
5015
5016 2004-04-06 Kevin Ryde <user42@zip.com.au>
5017
5018 * numbers.c (scm_ash): Remove stray "}" in docstring.
5019
5020 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
5021 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
5022 calling mpz_cmp_ui in most cases.
5023
5024 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
5025 for big == abs(most-negative-fixnum) special case.
5026 (abs_most_negative_fixnum): Remove, no longer used.
5027
5028 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
5029 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
5030 calling (sigaction NSIG).
5031
5032 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
5033 and fork error cases to do this.
5034
5035 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5036
5037 * eval.c (CEVAL): Don't distinguish between short and long
5038 instructions when dispatching - just always dispatch on the
5039 instruction code, which is common for short and long instructions.
5040 Further, removed unnecessary goto statements and added comment.
5041
5042 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5043
5044 * eval.c (scm_unmemocopy): Don't distinguish between short and
5045 long instructions when dispatching - just always dispatch on the
5046 instruction code, which is common for short and long instructions.
5047 Further, removed unnecessary goto statements, fixed indentation
5048 and replaced SCM_IMP predicates by SCM_NULLP.
5049
5050 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5051
5052 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
5053 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
5054 'checkmacro'.
5055
5056 2004-03-31 Kevin Ryde <user42@zip.com.au>
5057
5058 * simpos.c: Include <signal.h> for SIG_IGN and friends.
5059
5060 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5061
5062 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
5063 SCM_DEBUGGINGP:
5064
5065 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
5066 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
5067 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
5068 single interface that also matches the naming conventions.
5069 Probably scm_debug_mode_p should be part of the private interface
5070 anyway.
5071
5072 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
5073 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
5074 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
5075 to scm_debug_mode_p.
5076
5077
5078 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
5079
5080 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
5081 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
5082 from debug.h to eval.h.
5083
5084 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
5085 more, just leave it with setting scm_debug_mode_p, which is
5086 equivalent for practical purposes.
5087
5088 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
5089 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
5090
5091 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
5092
5093 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
5094 static and renamed it to ceval throughout. Provide a new exported
5095 but deprecated function scm_ceval as a wrapper for backwards
5096 compatibility. The same is done for the deval/scm_deval pair of
5097 functions.
5098
5099 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
5100 throughout. Defined CEVAL to ceval or deval, based on compilation
5101 phase.
5102
5103 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
5104 to ceval and deval instead of calling *scm_ceval_ptr.
5105
5106 * eval.c (dispatching_eval): New deprecated static function.
5107
5108 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
5109 to emulate its old behaviour as closely as possible.
5110
5111
5112 Change the evaluator such that only expressions for which pair? is
5113 true are passed to CEVAL, and such that all other expressions are
5114 evaluated outside of CEVAL:
5115
5116 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
5117 expression that is assumed to be memoized already. All but
5118 expressions of the form '(<form> <form> ...)' are evaluated inline
5119 without calling an evaluator.
5120
5121 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
5122 expressions of the form '(<form> <form> ...)' inline without
5123 calling an evaluator.
5124
5125 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
5126 the special case of unmemoized symbols passed on the top level.
5127
5128 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
5129 is known that the expression passed to CEVAL is of the form
5130 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
5131 now it is known that the input expression of CEVAL is a pair.
5132
5133 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5134
5135 * eval.c (is_self_quoting_p): New static function.
5136
5137 (scm_m_quote): Use is_self_quoting_p.
5138
5139 (copy_tree): Corrected typo in comment.
5140
5141 2004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
5142
5143 * eval.c (s_scm_copy_tree): idem.
5144
5145 * list.c (s_scm_filter): remove "pointer" from doc string.
5146
5147 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
5148
5149 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
5150
5151 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
5152 (display_frame): idem.
5153 (display_backtrace_file_and_line): idem.
5154
5155 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
5156 arguments.
5157
5158 2004-03-26 Kevin Ryde <user42@zip.com.au>
5159
5160 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
5161
5162 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
5163 big==0 since that never occurs.
5164
5165 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
5166 scm_modular_expt, matching scheme level name `modulo-expt'.
5167
5168 * numbers.c (scm_modular_expt): Return a negative remainder for a
5169 negative divisor, the same as `modulo' does.
5170
5171 2004-03-26 Eric Hanchrow <offby1@blarg.net>
5172
5173 * numbers.c, numbers.h (scm_modular_expt): New function.
5174
5175 2004-03-25 Kevin Ryde <user42@zip.com.au>
5176
5177 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
5178 return inexact as required by r5rs.
5179
5180 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5181
5182 * eval.c: Separated some definitions relevant for execution from
5183 the memoization part of the file.
5184
5185 (copy_tree): New static function
5186
5187 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
5188 structures are detected now and will lead to an exception instead
5189 of forcing guile to run in an endless loop, using up all the
5190 system's memory. Second, arrays in the cdr of an improper list
5191 are now copied. See the new test cases in eval.test.
5192
5193 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5194
5195 * posix.c (scm_gethostname): Make sure len is initialised before
5196 it is used. Restructured to (hopefully) represent possible
5197 configurations more clearly in the code. Added unwind handler.
5198
5199 2004-03-23 Kevin Ryde <user42@zip.com.au>
5200
5201 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
5202 MAXHOSTNAMELEN when available.
5203
5204 2004-03-21 Marius Vollmer <mvo@zagadka.de>
5205
5206 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
5207 terminator. Rewritten the logic as a state machine, I must have
5208 been doing too much VHDL lately...
5209
5210 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
5211 themselves. Thanks to Han-Wen Nienhuys!
5212
5213 * list.c: Changed docstrings so that they no longer talk about
5214 returning 'pointers' to something.
5215
5216 2004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5217
5218 * gc.c: remove set_debug_cell_accesses! when
5219 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
5220 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
5221 debugging conditionally.
5222
5223 2004-03-21 Kevin Ryde <user42@zip.com.au>
5224
5225 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
5226
5227 2004-03-20 Kevin Ryde <user42@zip.com.au>
5228
5229 * posix.c (scm_gethostname): Preserve errno across free() call.
5230
5231 2004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
5232
5233 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
5234 free cells.
5235
5236 2004-03-14 Kevin Ryde <user42@zip.com.au>
5237
5238 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
5239 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
5240
5241 2004-03-07 Kevin Ryde <user42@zip.com.au>
5242
5243 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
5244 than "GMT" always.
5245 (filltime): Make zname parameter "const".
5246
5247 2004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
5248
5249 * threads.c, threads.h (scm_c_scm2thread): New function.
5250
5251 2004-02-29 Kevin Ryde <user42@zip.com.au>
5252
5253 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
5254 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
5255 particular don't assume "defined (__alpha__) && ! defined (linux)"
5256 means OSF. Remove "SCO" code, which was not really SCO specific and
5257 which John W. Eaton advises should be long past being needed.
5258
5259 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
5260 error throw.
5261
5262 2004-02-24 Kevin Ryde <user42@zip.com.au>
5263
5264 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
5265
5266 2004-02-22 Kevin Ryde <user42@zip.com.au>
5267
5268 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
5269 complex, same as for two args. (Handle only inum, big, real, frac).
5270
5271 2004-02-21 Kevin Ryde <user42@zip.com.au>
5272
5273 * posix.c (scm_crypt): Use new HAVE_CRYPT.
5274 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
5275 Reported by Andreas Voegele.
5276
5277 2004-02-20 Neil Jerram <neil@ossau.uklinux.net>
5278
5279 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
5280 validation.
5281
5282 * read.c (scm_lreadparen): Removed.
5283 (scm_lreadparen1): Renamed scm_i_lreadparen.
5284
5285 2004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5286
5287 * list.c (scm_list_n): validate non-immediate arguments;
5288 this will catch forgotten a SCM_UNDEFINED.
5289
5290 2004-02-18 Marius Vollmer <mvo@zagadka.de>
5291
5292 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
5293 Thanks to Bill Schottstaedt!
5294
5295 * socket.h (scm_gethost): Removed prototype it is already in
5296 "net_db.h". Thanks to Bill Schottstaedt!
5297
5298 2004-02-18 Kevin Ryde <user42@zip.com.au>
5299
5300 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
5301 order parameter to mpz_import, in fact with just one word there's no
5302 order to worry about at all.
5303
5304 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
5305 and frac==complex, make an exact comparison rather than converting
5306 with fraction2double.
5307
5308 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
5309 shared library, since environ is not directly available there.
5310
5311 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
5312 standard.
5313
5314 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
5315 errno EINVAL in case localtime and gmtime don't set it.
5316 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
5317 SCM_SYSERROR, since mktime and strptime generally don't set errno.
5318
5319 2004-02-16 Kevin Ryde <kevin@swox.se>
5320
5321 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
5322 which were permitted in the past for these.
5323
5324 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
5325 previous change to numbers.c.
5326
5327 * script.c (scm_shell_usage): Print bug-guile email address, as per
5328 GNU standard. Reported by Han-Wen Nienhuys.
5329
5330 2004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5331
5332 * unif.c (scm_make_uve): Removed local variable and simplified
5333 code in order to avoid compiler used uninitialized warnings.
5334
5335 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
5336 scm_hash_map.
5337 (scm_hash_fold): Use scm_call_3 directly in the call to
5338 scm_internal_hash_fold instead of going via fold_proc (which is
5339 now removed).
5340 (scm_hash_for_each): Use a trampoline +
5341 scm_internal_hash_for_each_handle.
5342 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
5343 functions.
5344
5345 2004-02-12 Kevin Ryde <user42@zip.com.au>
5346
5347 * ports.c (scm_port_line): In docstring, note first line is 0.
5348 (scm_set_port_line_x): In docstring, note first line is 0.
5349 (scm_port_column): In docstring, there's no default to current input
5350 port, and remove shared port-line @defun.
5351 (scm_set_port_column_x): In docstring, there's no default to current
5352 input port, note first column is 0, remove shared set-port-line!
5353 @defun.
5354
5355 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
5356 convert args the same way that array-set! does.
5357
5358 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
5359 for dvect.
5360 (scm_array_p): Add missing "break"s in switch, fix llvect test look
5361 for "l" not "s", fix dvect to be false for singp(prot) since such a
5362 value is for fvect.
5363 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
5364 (exactly_one_third): New variable.
5365 (scm_init_unif): Initialize it.
5366
5367 2004-02-10 Neil Jerram <neil@ossau.uklinux.net>
5368
5369 * read.c (scm_read_opts): Change `escaped-parens' to
5370 `elisp-strings'.
5371
5372 2004-02-08 Neil Jerram <neil@ossau.uklinux.net>
5373
5374 * read.c (scm_read_opts): New opts `elisp-vectors' and
5375 `escaped-parens'.
5376 (s_vector): New.
5377 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
5378 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
5379 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
5380 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
5381 `escaped-parens' option set.
5382 (scm_read_token): If elisp vector syntax active, disallow [ and ]
5383 in tokens.
5384 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
5385 (scm_lreadparen1): New.
5386
5387 * read.h: Remove conditionally compiled last arg to
5388 scm_lreadparen.
5389 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
5390
5391 2004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
5392
5393 * eval.c (m_expand_body): remove stray variable new_body.
5394
5395 2004-01-22 Marius Vollmer <mvo@zagadka.de>
5396
5397 * eval.c (m_expand_body): Rewrite the expression in place (by
5398 overwriting FORMS) also when a letrec is constructed, not only
5399 when no definitions are found. Do not return rewritten expression
5400 to emphasize the in-place rewriting. Changed all users.
5401
5402 2004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
5403
5404 * gc.c: add protected_object_count, a number that is dumped from
5405 gc_stats()
5406
5407 2004-01-11 Marius Vollmer <mvo@zagadka.de>
5408
5409 * dynwind.h, dynwind.c (scm_frame_unwind,
5410 scm_frame_unwind_handler): Renamed and changed all uses.
5411 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
5412
5413 2004-01-11 Kevin Ryde <user42@zip.com.au>
5414
5415 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
5416 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
5417 changes made to scheme-compound.texi.
5418
5419 2004-01-10 Marius Vollmer <mvo@zagadka.de>
5420
5421 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
5422 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
5423
5424 * guile-snarf.in: Use mkdir to create a unique temporary directory
5425 that we can safely use. Thanks to Stefan Nordhausen!
5426
5427 2004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5428
5429 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
5430 argument since it is always zero now. Changed all callers.
5431 Removed code for handling fluids.
5432
5433 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
5434 the wind chain explicitely. Use scm_c_with_fluid for the common
5435 case of only one fluid.
5436 (scm_with_fluid): New.
5437 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
5438
5439 * fluids.h, fluids.c (scm_frame_fluid): New.
5440 (scm_with_fluid): New.
5441 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
5442
5443 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
5444 do the unwinding directly. It is simple enough.
5445
5446 * dynwind.h, dynwind.c: Did the following renamings:
5447 scm_begin_frame -> scm_frame_begin,
5448 scm_end_frame -> scm_frame_end,
5449 scm_on_unwind -> scm_frame_unwind,
5450 scm_on_rewind -> scm_frame_rewind,
5451 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
5452 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
5453 Changed all uses.
5454
5455 * aync.h, async.c: Did the follwing renamings:
5456 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
5457 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
5458 Changed all uses.
5459
5460 * ports.h, ports.c: Did the follwing renamings:
5461 scm_with_current_input_port -> scm_frame_current_input_port,
5462 scm_with_current_output_port -> scm_frame_current_output_port,
5463 scm_with_current_error_port -> scm_frame_current_error_port.
5464 Changed all uses.
5465
5466 2004-01-07 Kevin Ryde <user42@zip.com.au>
5467
5468 * numbers.c (s_bignum): Remove, not used since gmp bignums.
5469 Reported by Richard Todd.
5470
5471 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
5472 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
5473
5474 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
5475 traversing the args list, fixes segv if an improper list is given.
5476 Reported by Rouben Rostamian.
5477
5478 2004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5479
5480 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
5481 swap_data on stack, use a 'malloc obj'.
5482
5483 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
5484 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
5485 scm_i_... since they are internal. Changed all uses.
5486
5487 * dynwind.c (frame_print): Removed, use the default printer.
5488 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
5489 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
5490 to protect SCM values.
5491
5492 * dynwind.h (SCM_F_WIND_EXPLICITELY,
5493 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
5494 Changed all uses.
5495 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
5496
5497 2004-01-05 Marius Vollmer <mvo@zagadka.de>
5498
5499 * ports.h, ports.c (scm_with_current_input_port,
5500 scm_with_current_output_port, scm_with_current_error_port): New.
5501
5502 * async.h, async.c (scm_with_blocked_asyncs,
5503 scm_with_unblocked_asyncs): New.
5504
5505 2004-01-03 Marius Vollmer <mvo@zagadka.de>
5506
5507 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
5508 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
5509 New.
5510 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
5511 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
5512 function when the outermost wind point has been reached. The
5513 latter is used to copy a continuation stack at the right time.
5514 scm_dowinds remains available.
5515 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
5516 tc16_guard, guards_print): Removed.
5517 (scm_internal_dynamic_wind): Reimplemented using frames.
5518
5519 * continuations.c (copy_stack): New, do only the stack copying
5520 part of copy_stack_and_call.
5521 (copy_stack_and_call): Copy the stack after unwinding and before
5522 rewinding.
5523 (scm_dynthrow): Do not call scm_dowinds, this is now done by
5524 copy_stack_and_call.
5525
5526 2004-01-04 Kevin Ryde <user42@zip.com.au>
5527
5528 * numbers.c (scm_less_p): Don't convert frac to float for compares,
5529 can give bad results due to rounding.
5530
5531 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
5532 setzone/restorezone protection for DOS.
5533
5534 2003-12-26 Marius Vollmer <mvo@zagadka.de>
5535
5536 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
5537 and scm_t_uintmax to be defined in scmconfig.h
5538
5539 2003-12-03 Kevin Ryde <user42@zip.com.au>
5540
5541 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
5542
5543 * numbers.c (scm_make_ratio): Check for numerator equal to
5544 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
5545 giving integer -1.
5546
5547 * numbers.c (scm_real_part): Return fraction unchanged rather than
5548 converting to flonum.
5549
5550 2003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5551
5552 * modules.c (module_variable): Fixed (and thus simplified) the
5553 definition of SCM_BOUND_THING_P to reflect the fact that since
5554 after the 1.4 series of guile, obarrays only hold variable
5555 objects.
5556
5557 2003-11-30 Marius Vollmer <mvo@zagadka.de>
5558
5559 * numbers.c (scm_logand): It's "#b...", not "#\b...".
5560
5561 From Paul Jarc:
5562
5563 * read.c (scm_lreadr): Signal an error for invalid escape
5564 sequences in strings. Code cleanups too.
5565
5566 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
5567 writing control characters in strings.
5568
5569 2003-11-21 Marius Vollmer <mvo@zagadka.de>
5570
5571 * ports.c (scm_drain_input): Bug fix: only access the port after
5572 checking that it indeed is one.
5573
5574 2003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5575
5576 * eval.c (s_bad_define): New static identifier.
5577
5578 (m_body): Fixed comment.
5579
5580 (scm_m_define): Don't generate memoized code for definitions that
5581 are not on the top level. As a consequence, no memoized code at
5582 all is generated for definitions any more: Top level definitions
5583 are executed immediately during memoization and internal
5584 definitions are handled separately in m_expand_body.
5585
5586 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
5587 definitions. Consequently, there is no unmemoizing code any more
5588 that might modify the environment. Thus, the old scm_unmemocopy
5589 is removed and the old unmemocopy is renamed to scm_unmemocopy.
5590
5591 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
5592 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
5593 over SCM_NIMP in places, where the argument is known to be part of
5594 a proper list.
5595
5596 2003-11-21 Kevin Ryde <user42@zip.com.au>
5597
5598 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
5599 for bignums.
5600
5601 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
5602 to share some shifting.
5603
5604 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
5605 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
5606 since gc does this.
5607
5608 2003-11-19 Marius Vollmer <mvo@zagadka.de>
5609
5610 * numbers.c (scm_make_ratio): Rewritten to have a simpler
5611 structure. Previously, not all cases with a negative denominator
5612 were covered.
5613
5614 * numbers.c (mem2decimal_from_point): use scm_divide instead of
5615 scm_divide2real when forming the fractional part. This allows
5616 "#e1.2" to yield 6/5.
5617
5618 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
5619 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
5620 fractions were equal to each other regardless of value. Ooops.
5621
5622 * numbers.c (scm_rationalize): Return an inexact result when given
5623 inexact arguments.
5624
5625 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
5626 non-numbers.
5627
5628 2003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5629
5630 Support for exact fractions from Bill Schottstaedt! Thanks!
5631
5632 * print.c (scm_iprin1): Handle fractions.
5633
5634 * objects.h (scm_class_fraction): New.
5635 * objects.c (scm_class_fraction): New.
5636 (scm_class_of): Handle fractions.
5637
5638 * hash.c (scm_hasher): Handle fractions.
5639
5640 * numbers.c: New code for handling fraction all over the place.
5641 (scm_odd_p, scm_even_p): Handle inexact integers.
5642 (scm_rational_p): New function, same as scm_real_p.
5643 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
5644 New exact functions that replace the inexact 'dsubr'
5645 implementations.
5646 (scm_numerator, scm_denominator): New.
5647
5648 * numbers.h (SCM_NUMP): Recognize fractions.
5649 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5650 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5651 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5652 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5653 SCM_FRACTION_REDUCED): New.
5654 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5655 New prototypes.
5656 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5657 scm_rational_p): New prototypes.
5658 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5659 scm_i_print_fraction): New prototypes.
5660
5661 * goops.c (create_standard_classes): Create "<fraction>" class.
5662
5663 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5664
5665 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5666 case in the switch, but do nothing for now.
5667
5668 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5669 to doubles when calling 'dsubr' functions.
5670
5671 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5672
5673 2003-11-18 Rob Browning <rlb@defaultvalue.org>
5674
5675 * gen-scmconfig.c (main): remove public definition of
5676 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5677 direct typedef of long_long and ulong_long inside deprecated block
5678 when appropriate.
5679
5680 * deprecated.h: move long_long and ulong_long definitions to
5681 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5682 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5683
5684 2003-11-17 Marius Vollmer <mvo@zagadka.de>
5685
5686 * hash.c (scm_string_hash): New hashing algorithm that takes the
5687 complete string into account.
5688
5689 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5690 is a list. This allows (@ ...) to work with set!.
5691 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5692 SCM_ASSYNT.
5693
5694 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5695 the "-e" option instead of scm_str2symbol. This allows things
5696 like (@ ...) to be specified for the entry point.
5697
5698 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5699
5700 * eval.c (scm_m_letstar): Create memoized code in place to
5701 minimize consing.
5702
5703 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5704
5705 * eval.c (s_splicing): Commented and reformulated.
5706
5707 (lookup_global_symbol, lookup_symbol): New static functions.
5708
5709 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5710
5711 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5712 creating a temporary pair for scm_lookupcar.
5713
5714 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5715 created deprecated wrapper function scm_unmemocar.
5716
5717 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5718 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5719 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5720 undefineds, sym_three_question_marks): Moved around without
5721 modifications.
5722
5723 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5724
5725 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5726
5727 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5728 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5729 No further modifications.
5730
5731 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5732
5733 * eval.c (s_mixed_body_forms): New static identifier.
5734
5735 (canonicalize_define, scm_m_define): The check for a bad
5736 expression is performed in canonicalize_define now.
5737
5738 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5739 static helper functions for m_expand_body.
5740
5741 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5742 expand user defined macros. Fixed handling of the definition/
5743 expression boundary. Fixed handling of definitions grouped with
5744 'begin. Use canonicalize_define to expand definitions.
5745
5746 2003-11-13 Marius Vollmer <mvo@zagadka.de>
5747
5748 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5749 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5750
5751 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5752 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5753 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5754 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5755 New macros from Paul Jarc. Thanks!
5756
5757 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5758 return NULL when the machine type is unknown. Previously,
5759 gc_os_dep.c would refuse to compile.
5760
5761 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5762
5763 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5764 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5765 scm_m_body to m_body.
5766
5767 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5768
5769 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5770 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5771 scm_m_expand_body to m_expand_body and made it static. Added
5772 deprecated wrapper scm_m_expand_body.
5773
5774 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5775 of scm_m_expand_body.
5776
5777 2003-11-09 Kevin Ryde <user42@zip.com.au>
5778
5779 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5780 argument. Reported by Mike Gran.
5781
5782 2003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5783
5784 * eval.c (s_missing_body_expression): New static identifier.
5785
5786 (s_body): Removed.
5787
5788 (scm_m_expand_body): Fixed core dump when passing a body with
5789 defines, but without expressions (see additions to syntax.test).
5790 Use ASSERT_SYNTAX to signal syntax errors.
5791
5792 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5793
5794 * eval.c (canonicalize_define): New static helper function.
5795
5796 (memoize_define, canonicalize_define): Extract handling of
5797 function currying to canonicalize_define.
5798
5799 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5800
5801 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5802 Make sure that error checking in debug mode is not worse than in
5803 standard mode.
5804
5805 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5806
5807 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5808 handled in scm_m_body any more, but rather in scm_m_lambda.
5809
5810 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5811 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5812 calling functions of scm_m_body.
5813
5814 (scm_m_lambda): Avoid unnecessary consing when creating the
5815 memoized code.
5816
5817 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5818
5819 * eval.c (s_expression): Added comment.
5820
5821 (s_empty_combination, error_unbound_variable): New static
5822 identifiers.
5823
5824 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5825 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5826 signal syntax errors.
5827
5828 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5829 scheme objects.
5830
5831 2003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5832
5833 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5834 Grouped together with unmemocopy, without modifications.
5835
5836 (build_binding_list, unmemocopy): Renamed names of list arguments
5837 and variables to reflect the actual order of the list elements.
5838
5839 2003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5840
5841 * eval.c (s_defun): New static identifier.
5842
5843 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5844 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5845 when creating the memoized code.
5846
5847 2003-10-19 Kevin Ryde <user42@zip.com.au>
5848
5849 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5850
5851 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5852 in accordance with R5RS, which just mpz_get_d doesn't really give.
5853
5854 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5855
5856 * eval.c (s_bad_slot_number): New static identifier.
5857
5858 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5859 signal syntax errors. Avoid unnecessary consing when creating the
5860 memoized code.
5861
5862 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5863
5864 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5865 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5866 errors. Avoid unnecessary consing when creating the memoized
5867 code.
5868
5869 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5870 standard case. Make sure line and file information are copied to
5871 every created expression.
5872
5873 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5874
5875 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5876 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5877 when creating the memoized code.
5878
5879 (scm_m_atbind): Reversed the order, in which the init expressions
5880 are stored and executed. The order of execution is now equal to
5881 the order in which the initializers of the let-forms are executed.
5882 Use check_bindings and transform_bindings.
5883
5884 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5885 !SCM_NULLP. Added some comments.
5886
5887 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5888
5889 * eval.c: Sorted include files alphabetically.
5890
5891 (scm_m_begin): Added comment.
5892
5893 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5894 unnecessary consing when creating the memoized code.
5895
5896 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5897 syntax errors. Be more specific about the kind of error that was
5898 detected.
5899
5900 (scm_m_quote, unmemocopy): As an optimization, vector constants
5901 are now inserted unquoted into the memoized code. During
5902 unmemoization the quotes are added again to provide syntactically
5903 correct code.
5904
5905 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5906
5907 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5908 scm_m_expand_body, check_bindings): Extracted syntax checking of
5909 bindings to new static function check_bindings.
5910
5911 (scm_m_let, memoize_named_let): Extracted handling of named let to
5912 new static function memoize_named_let.
5913
5914 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5915 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5916 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5917 unnecessary consing when creating the memoized code.
5918
5919 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5920
5921 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5922 static identifiers.
5923
5924 (s_clauses, s_formals, s_duplicate_formals): Removed.
5925
5926 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5927 specific about the kind of error that was detected. Prepare for
5928 easier integration of changes for separated memoization.
5929
5930 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5931
5932 * eval.c (s_duplicate_binding): New static identifier.
5933
5934 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5935
5936 (scm_m_define): Added comment about how we check for duplicate
5937 formals.
5938
5939 (scm_m_do): Added check for duplicate bindings.
5940
5941 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5942 unnecessary consing when creating the memoized code.
5943
5944 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5945 scm_c_improper_memq to c_improper_memq, since it is not exported.
5946
5947 (transform_bindings): Call scm_c_memq rather than
5948 scm_c_improper_memq.
5949
5950 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5951
5952 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5953
5954 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5955 static identifiers.
5956
5957 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5958 specific about the kind of error that was detected. Avoid use of
5959 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5960 code, this way also making sure that file name, line number
5961 information etc. remain available.
5962
5963 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5964
5965 * eval.c (memoize_as_thunk_prototype): New static function.
5966
5967 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5968 Avoid unnecessary consing when creating the memoized code.
5969
5970 2003-10-12 Kevin Ryde <user42@zip.com.au>
5971
5972 * list.c (scm_append): Track argument number and use in error.
5973
5974 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5975
5976 * eval.c (s_missing_expression, s_bad_variable): New static
5977 identifiers.
5978
5979 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5980 R5RS terminology for the naming of variables. Be more specific
5981 about the kind of error that was detected. Make sure file name,
5982 line number etc. are added to all freshly created expressions.
5983 Avoid unnecessary consing when creating the memoized code.
5984
5985 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5986
5987 * eval.c (s_extra_expression, s_misplaced_else_clause,
5988 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5989
5990 (s_extra_case_clause): Removed.
5991
5992 (scm_m_case, scm_m_cond): If a clause appears after an else
5993 clause, report a misplaced else clause.
5994
5995 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5996 specific about the kind of error that was detected. Handle bound
5997 'else and '=>. Avoid unnecessary consing when creating the
5998 memoized code.
5999
6000 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
6001 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
6002 syntactic keyword '=>.
6003
6004 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6005
6006 * eval.c (scm_m_case): Allow empty lists of case labels.
6007
6008 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6009
6010 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
6011
6012 * print.c (scm_isymnames): Add names for the new memoizer codes.
6013
6014 * eval.c (s_missing_clauses, s_bad_case_clause,
6015 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
6016 literal_p): New static identifiers.
6017
6018 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
6019 specific about the kind of error that was detected. Check for
6020 duplicate case labels. Handle bound 'else. Avoid unnecessary
6021 consing when creating the memoized code.
6022
6023 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
6024 the syntactic keyword 'else.
6025
6026 2003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
6027
6028 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
6029 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
6030
6031 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
6032 unnecessary consing when creating the memoized code.
6033
6034 2003-10-09 Kevin Ryde <user42@zip.com.au>
6035
6036 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
6037 cast gives for values bigger than a long, or for nan or inf.
6038
6039 2003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
6040
6041 * smob.h (scm_make_smob_type): Made the declaration match the
6042 definition.
6043
6044 2003-10-07 Marius Vollmer <mvo@zagadka.de>
6045
6046 * goops.c, objects.h, smob.c, smob.h: Make type names char
6047 const * instead of char *. Thanks to Paul Jarc!
6048
6049 2003-10-02 Kevin Ryde <user42@zip.com.au>
6050
6051 * strports.c (scm_call_with_output_string): scm_get_output_string
6052 rather than scm_strport_to_string, so as to guard against the port
6053 having been closed by the called procedure. Reported by Nic Ferrier.
6054
6055 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6056
6057 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
6058
6059 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
6060 tags.h to deprecated.h.
6061
6062 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6063
6064 This set of patches introduces a new tc7 code scm_tc7_number for
6065 numbers. Bignums, reals and complex numbers are turned from smobs
6066 into subtypes of scm_tc7_number.
6067
6068 * tags.h (scm_tc7_number): New.
6069
6070 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
6071 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
6072 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
6073 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
6074 (scm_class_of), print.c (scm_iprin1), smob.c
6075 (scm_smob_prehistory): Don't handle bignums, reals and complex
6076 numbers as subtypes of scm_tc7_smob any more.
6077
6078 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
6079 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
6080
6081 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6082
6083 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
6084 sizeof (scm_t_complex) to determine the memory size of the
6085 malloc'd area for complex numbers.
6086
6087 2003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6088
6089 * numbers.c (scm_bigequal): Fixed.
6090
6091 2003-09-16 Marius Vollmer <mvo@zagadka.de>
6092
6093 * stime.c (scm_current_time): 'time' does not set errno so don't
6094 use SCM_SYSERROR for reporting errors.
6095
6096 2003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
6097
6098 This set of patches eliminates the dependency between the
6099 implementation of evaluator specific memoization codes and special
6100 constants like #f, '() etc. ('flags'), which are not evaluator
6101 specific. The goal is to remove definitions of evaluator
6102 memoization codes completely from the public interface. This will
6103 make it possible to experiment more freely with optimizations of
6104 guile's internal representation of memoized code.
6105
6106 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
6107
6108 * print.c (iflagnames): New array, holding the printed names of
6109 guile's special constants ('flags').
6110
6111 (scm_isymnames): Now holds only the printed names of the
6112 memoization codes.
6113
6114 (scm_iprin1): Separate the handling of memoization codes and
6115 guile's special constants.
6116
6117 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
6118 SCM_IFLAGNUM): new
6119
6120 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
6121 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
6122 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
6123 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
6124 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
6125 values.
6126
6127 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
6128
6129 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
6130 tc9 macros and scm_tc9_flag.
6131
6132 2003-09-15 Marius Vollmer <mvo@zagadka.de>
6133
6134 * posix.c (scm_setgroups): Check that the gid list is not too
6135 long. Thanks to Paul Jarc!
6136
6137 2003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
6138
6139 * tags.h: Reduced the number of short instructions from 14 to 13.
6140 The typecode of the former 14th short instruction is now used to
6141 represent long instructions. Changed some comments to reflect
6142 this fact.
6143
6144 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
6145 previously used by SCM_IM_DEFINE.
6146
6147 (SCM_IM_DEFINE): Turned into a long instruction.
6148
6149 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
6150 instruction.
6151
6152 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
6153 code that is separate from all instructions, one level of dispatch
6154 for long instructions can be eliminated.
6155
6156 * print.c (scm_isymnames): Removed some commented code.
6157
6158 2003-09-12 Marius Vollmer <mvo@zagadka.de>
6159
6160 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
6161 compiler on IA64.
6162
6163 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
6164
6165 * modules.c (scm_module_reverse_lookup): Check that the obarray
6166 really is a hashtable and do nothing if not.
6167
6168 * inline.h: Use "extern inline" only with GCC. Use "static
6169 inline" else.
6170
6171 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6172
6173 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
6174 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6175
6176 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
6177 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
6178 deprecated.h.
6179
6180 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6181
6182 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
6183 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6184
6185 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
6186 0.0==some_expression to some_expression==0.0. The latter is
6187 better readable. The former is preferred by some people, since it
6188 leads to a compiler error when confusing == with =. However, when
6189 using gcc, a warning will be issued if in an if-statement an
6190 assigment appears. Since many Guile developers are using gcc,
6191 such errors will not remain unnoticed anyway. We can therefore
6192 focus on better readability.
6193
6194 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6195
6196 * tags.h: Added description of Guile's type system. Removed some
6197 old and misleading comments.
6198
6199 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6200
6201 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
6202 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6203
6204 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6205
6206 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
6207
6208 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
6209 respective SLOPPY macro.
6210
6211 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6212
6213 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
6214 type string, not SCM_TYP7S.
6215
6216 2003-09-03 Kevin Ryde <user42@zip.com.au>
6217
6218 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
6219 2s-complement.
6220
6221 * stime.c (scm_strptime): Add comment about glibc strptime %s and
6222 current timezone requiring SCM_DEFER_INTS.
6223
6224 2003-08-30 Neil Jerram <neil@ossau.uklinux.net>
6225
6226 * script.c (scm_compile_shell_switches): Make -s switch optional
6227 if file to be loaded does not begin with a `-'. (Thanks to Aaron
6228 VanDevender for the patch!)
6229
6230 2003-08-30 Kevin Ryde <user42@zip.com.au>
6231
6232 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
6233 and to have non-integer types rejected as per other logical funcs.
6234
6235 2003-08-28 Kevin Ryde <user42@zip.com.au>
6236
6237 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
6238
6239 2003-08-23 Kevin Ryde <user42@zip.com.au>
6240
6241 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
6242 thread safe, and could take a long time too.
6243
6244 2003-08-22 Kevin Ryde <user42@zip.com.au>
6245
6246 * numbers.c (scm_difference): Correction to bignum - negative inum.
6247
6248 2003-08-14 Kevin Ryde <user42@zip.com.au>
6249
6250 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
6251 [__GNUC__]: Use volatile asm macros rather than a function call.
6252 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
6253 macros while defining functions.
6254
6255 * simpos.c (getenv): Use <stdlib.h> for prototype.
6256 (scm_system): In docstring, refer to status:exit-val rather than
6257 "functions above".
6258
6259 2003-08-09 Kevin Ryde <user42@zip.com.au>
6260
6261 * srcprop.c (scm_source_properties): Return plist from hash if it's a
6262 list set by source-properties! rather than an SRCPROPS object,
6263
6264 2003-07-29 Kevin Ryde <user42@zip.com.au>
6265
6266 * properties.c (scm_primitive_property_ref): In docstring, note
6267 parameters to not-found-proc, use hyphens rather than underscores for
6268 that parameter name.
6269 (scm_primitive_property_set_x): In docstring, VAL is the value
6270 parameter not CODE.
6271
6272 2003-07-27 Marius Vollmer <mvo@zagadka.de>
6273
6274 * print.c (scm_print_symbol_name): handle more weird characters by
6275 escaping the symbol name properly. Thanks to Paul Jarc!
6276
6277 * posix.h (scm_setgroups): New prototype.
6278 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
6279 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
6280 Don't use SCM_WRITABLE_VELTS.
6281
6282 * gc.h (SCM_GC_SET_CELL_BVEC): New.
6283 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
6284 Matthias Koeppe!
6285
6286 * __scm.h (SCM_C_INLINE_KEYWORD): New.
6287 * numbers.c: Use it in place of SCM_C_INLINE so that the code
6288 compiles when SCM_C_INLINE is undefined.
6289
6290 2003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6291
6292 * __scm.h: Reformulated the architecture and compiler properties
6293 in terms of properties of scm_t_bits and SCM variables rather than
6294 in terms of c standard types. This is since it is not known which
6295 of the standard types scm_t_bits and SCM variables will be defined
6296 to.
6297
6298 2003-07-24 Kevin Ryde <user42@zip.com.au>
6299
6300 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
6301 and real.
6302
6303 2003-07-18 Kevin Ryde <user42@zip.com.au>
6304
6305 * numbers.c (scm_product): In complex * bignum, correction to
6306 REAL/IMAG fetch, x is the complex, not y.
6307
6308 2003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6309
6310 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
6311 scm_inf_p test as Scheme values.
6312 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
6313 and a positive inum.
6314 Use GNU indentation style.
6315
6316 2003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6317
6318 * values.c (scm_values): Build lists of length 1 by using
6319 scm_list_1 instead of using scm_cons.
6320
6321 2003-07-10 Kevin Ryde <user42@zip.com.au>
6322
6323 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
6324 * list.c (scm_list_n): Ditto.
6325
6326 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
6327
6328 2003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
6329
6330 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
6331 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
6332 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
6333 the other using intptr_t.
6334
6335 2003-07-08 Kevin Ryde <user42@zip.com.au>
6336
6337 * numbers.c (scm_make_polar): Use sincos, when available.
6338 (scm_magnitude): Use hypot.
6339
6340 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
6341 @footnote since it doesn't go through to guile-procedures.txt.
6342
6343 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
6344 outside @var to quieten makeinfo, and use @code.
6345
6346 2003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6347
6348 * gc-malloc.c (decrease_mtrigger): new function
6349 (increase_mtrigger): new function, separate debug registering and
6350 mtrigger administration.
6351 (scm_gc_realloc): bugfix: do mtrigger administration before the
6352 actual realloc, for the realloc might invalidate a GC-d segment of
6353 memory. Thanks to Sam Hocevar for pointing this out.
6354 (scm_gc_realloc): use scm_malloc_reregister instead of
6355 unregistering and registering in sequence.
6356
6357 2003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6358
6359 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
6360
6361 2003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6362
6363 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
6364 clauses.
6365
6366 2003-06-29 Marius Vollmer <mvo@zagadka.de>
6367
6368 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
6369 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
6370 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
6371 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
6372 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
6373 the release_1_6 branch.
6374
6375 2003-06-25 Stefan Jahn <stefan@lkcc.org>
6376
6377 * continuations.c: Redeclaration of getcontext() via the
6378 __asm__ ("getcontext") directive.
6379
6380 * continuations.h: Include <ucontext.h> instead of
6381 <sys/ucontext.h>.
6382
6383 2003-06-21 Kevin Ryde <user42@zip.com.au>
6384
6385 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
6386 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
6387 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
6388 available.
6389 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
6390 (isfinite): Remove, conflicts with C99 isfinite().
6391
6392 2003-06-19 Marius Vollmer <mvo@zagadka.de>
6393
6394 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
6395 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
6396 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
6397 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
6398 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
6399 the release_1_6 branch.
6400
6401 2003-06-14 Stefan Jahn <stefan@lkcc.org>
6402
6403 * threads.h: Redefined scm_getspecific() and scm_setspecific()
6404 to be functions instead of macros.
6405
6406 * threads.c: Conditionalized inclusion of <sys/time.h> and
6407 <unistd.h>.
6408 (scm_getspecific, scm_setspecific): Made these two function
6409 real part of the API.
6410
6411 * posix.c (s_scm_putenv): Added some code to make a
6412 (putenv "FOO="), i.e. setting an empty string, work also on
6413 Win32 systems. Thanks to Kevin Ryde for the proposal.
6414
6415 2003-06-12 Kevin Ryde <user42@zip.com.au>
6416
6417 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
6418 freebsd to comment about need to use unsetenv.
6419
6420 2003-06-02 Marius Vollmer <mvo@zagadka.de>
6421
6422 * ports.c (scm_peek_char): Safe the column of the port around the
6423 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
6424
6425 2003-06-07 Kevin Ryde <user42@zip.com.au>
6426
6427 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
6428 and friends required by scm_t_bits setups.
6429
6430 2003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6431
6432 * tags.h (scm_tc2_int): Added.
6433
6434 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
6435 scm_tc2_int.
6436
6437 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
6438 scm_tcs_closures): Hard coded values replaced by symbolic ones.
6439
6440 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6441
6442 * eval.c: Partially undid my patch from 2003-05-31. This patch
6443 caused the segfault referenced in the previous changelog entry.
6444
6445 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6446
6447 * tags.h: Fixed comment about the immediate type code layout.
6448
6449 * eval.c: Fixed handling of non-special instructions. Without
6450 this patch, guile will segfault on (#\0) and similar instructions.
6451
6452 2003-06-05 Kevin Ryde <user42@zip.com.au>
6453
6454 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
6455 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
6456
6457 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
6458 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
6459
6460 2003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6461
6462 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
6463 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
6464 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
6465 generalized it to apply not only to C level functions but also to
6466 scheme level functions.
6467
6468 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
6469 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
6470 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
6471 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
6472 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
6473 respectively.
6474
6475 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
6476 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
6477 eval.h into eval.c and a copy is placed into deprecated.h.
6478
6479 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
6480 into eval.c. This definition was not part of the API in any
6481 officially released version of guile and thus does not need to go
6482 through a phase of deprecation.
6483
6484 2003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
6485
6486 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
6487 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
6488 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
6489 definitions are make static and renamed from scm_s_xxx to s_xxx.
6490 In deprecated.c the original definitions are copied.
6491
6492 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
6493 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
6494 eval.h into eval.c and a copy (slightly modified to work in user
6495 code) is placed into deprecated.h.
6496
6497 * eval.c: Use the local static s_xxx definitions instead of the
6498 scm_s_xxx definitions throughout.
6499
6500 2003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6501
6502 This set of patches separates the representation of the cxr family
6503 of functions (car, cdr etc.) from the dsubr family of functions
6504 (i. e. functions that take a double precision floating point
6505 argument). Further, the algorithm for handling the cxr function
6506 is improved.
6507
6508 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
6509 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
6510 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
6511 cosh, tanh), objects.c (scm_class_of), procprop.c
6512 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
6513 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
6514 typecode for the dsubr family of functions.
6515
6516 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
6517 ramap_dsubr.
6518
6519 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
6520 (scm_init_pairs): Make use of the (now usable) second cell element
6521 of a scm_tc7_cxr function to implement the cxr family of functions
6522 more efficiently.
6523
6524 2003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6525
6526 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
6527 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
6528 end of an if-else-if-sequence of checks.
6529
6530 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6531
6532 * eval.c (SCM_CEVAL): Improved readability of call-with-values
6533 execution. Generalize apply_closure to apply_proc and use that
6534 for call-with-values.
6535
6536 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6537
6538 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
6539 a non closure.
6540
6541 2003-05-30 Stefan Jahn <stefan@lkcc.org>
6542
6543 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
6544 appropriately for mingw32 hosts.
6545
6546 * numbers.h: Defining copysign(), isnan() and finite() to
6547 be prefixed by a single '_' for mingw32 hosts.
6548
6549 2003-05-30 Kevin Ryde <user42@zip.com.au>
6550
6551 * numbers.c (z_negative_one): New variable.
6552 (scm_init_numbers): Initialize it.
6553 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
6554
6555 2003-05-29 Stefan Jahn <stefan@lkcc.org>
6556
6557 * win32-dirent.c: Use malloc() instead of scm_malloc().
6558
6559 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
6560 warning.
6561
6562 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
6563 mingw32 build.
6564
6565 * modules.c (s_scm_module_import_interface): Renamed local
6566 variable interface to _interface. Seems like 'interface'
6567 is a special compiler directive for the mingw32 compiler.
6568
6569 * mkstemp.c: Provide prototype to avoid compiler warning.
6570
6571 * load.c (s_scm_search_path): Fixed absolute and relative
6572 path detections for native Windows platforms.
6573
6574 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
6575 to build on mingw32).
6576
6577 * gc-freelist.c ("s_scm_map_free_list",
6578 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
6579
6580 * fports.c (fport_fill_input): Disable use of
6581 fport_wait_for_input() on Win32 platforms.
6582
6583 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
6584
6585 * Makefile.am: Modified some rules for cross compiling.
6586
6587 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6588
6589 * eval.c (SCM_CEVAL): In case of an application, all checks for a
6590 proper function object and the correct number of arguments are now
6591 performed in the application part of SCM_CEVAL.
6592
6593 (scm_badformalsp): Removed.
6594
6595 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6596
6597 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
6598
6599 2003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6600
6601 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
6602 always being false by inserting preprocessor conditional. (Thanks
6603 to Bruce Korb.)
6604
6605 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
6606 (void *) in order to avoid an aliasing warning; thanks to Bruce
6607 Korb.)
6608
6609 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
6610
6611 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
6612 SCM_STACK_PTR.
6613
6614 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
6615 thread->base --> t->base.
6616
6617 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
6618
6619 2003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6620
6621 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
6622 scm_variable_set_name_hint, scm_builtin_variable,
6623 scm_internal_with_fluids, scm_make_gsubr,
6624 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
6625 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
6626 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
6627 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
6628 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
6629 scm_make_subr_with_generic, scm_make_subr_opt,
6630 scm_call_catching_errors, scm_make_smob_type_mfpe,
6631 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
6632 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
6633 branch. Some have been slightly rewritten.
6634 (scm_i_object_chars, scm_i_object_length): New, to support
6635 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
6636
6637 2003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6638
6639 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
6640 names and inits in the memoized code of do.
6641
6642 2003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6643
6644 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
6645 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
6646 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6647 a compilation error if error-on-warning is enabled).
6648
6649 2003-05-17 Marius Vollmer <mvo@zagadka.de>
6650
6651 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6652 removes preprocessor directives from the snarfage that might
6653 otherwise confuse us. These directives appear when compiling with
6654 "-g3", for example.
6655
6656 2003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6657
6658 * ChangeLog: add my surname
6659
6660 * srcprop.c (scm_finish_srcprop): use
6661 scm_gc_register_collectable_memory()
6662 (scm_make_srcprops): idem.
6663
6664 2003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6665
6666 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6667 wrap-around for scm_mtrigger
6668 (scm_gc_register_collectable_memory): abort on overflowing
6669 scm_mallocated().
6670
6671 2003-05-13 Kevin Ryde <user42@zip.com.au>
6672
6673 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6674 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6675
6676 2003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6677
6678 * backtrace.c (scm_display_error_message): Introduced fancy
6679 printing with max level 7 and length 10. (Purpose: avoid printing
6680 gigantic objects in error messages.)
6681
6682 * print.c, print.h (scm_i_port_with_print_state): New function.
6683
6684 * print.c (scm_iprin1, scm_printer_apply,
6685 scm_port_with_print_state): Use scm_i_port_with_print_state.
6686 (scm_simple_format): Modified not to destroy print states.
6687 (print_state_mutex): New mutex.
6688 (scm_make_print_state, scm_free_print_state, scm_prin1):
6689 Lock/unlock print_state_mutex.
6690
6691 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6692 Use current names in definitions.
6693
6694 2003-05-10 Kevin Ryde <user42@zip.com.au>
6695
6696 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6697
6698 * numbers.c (scm_integer_length): On negative bignums, adjust
6699 mpz_sizeinbase to account for it looking at absolute value where we
6700 want ones-complement.
6701
6702 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6703 since we're only using the ulong return value, and x might not fit.
6704
6705 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6706
6707 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6708 read. This will allow to make the definition in read.c static.
6709
6710 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6711
6712 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6713 from evalext to eval. This will allow to make some of the
6714 definitions in eval.c static.
6715
6716 2003-05-06 Kevin Ryde <user42@zip.com.au>
6717
6718 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6719 (scm_logcount): Use mpz_com, not mpz_neg.
6720
6721 2003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6722
6723 The purpose of this patch is to make guile's internal memoizers
6724 distinguishable from memoizing macros created on the scheme level
6725 or from user provided primitive memoizing macros. The reason is,
6726 that the internal memoizers are the only ones that are allowed to
6727 transform their scheme input into memoizer byte code, while all
6728 other memoizing macros may only transform scheme code into new
6729 scheme code.
6730
6731 To achieve this, a new macro type 'builtin-macro!' is introduced.
6732 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6733 this will change when the memoizer and executor are separated.
6734
6735 * macros.[ch] (scm_i_makbimacro): New.
6736
6737 * macros.h (SCM_BUILTIN_MACRO_P): New.
6738
6739 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6740
6741 * eval.c, goops.c: All of guile's primitive memoizing macros are
6742 primitive builtin-macros now.
6743
6744 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6745 builtin-macros are handled equally to memoizing macros.
6746
6747 2003-05-04 Marius Vollmer <mvo@zagadka.de>
6748
6749 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6750 work around a bug in GCC 2.95.2 but is now a bug in itself.
6751
6752 2003-05-02 Marius Vollmer <mvo@zagadka.de>
6753
6754 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6755 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6756 scm_tcs_symbols): New.
6757
6758 2003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6759
6760 * deprecated.h, deprecated.c (scm_protect_object,
6761 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6762 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6763 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6764 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6765 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6766 scm_ptob_descriptor, scm_port_rw_active,
6767 scm_close_all_ports_except): New.
6768
6769 * ports.c (scm_c_port_for_each): New function, mostly copied from
6770 scm_port_for_each.
6771 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6772 * ports.h (scm_c_port_for_each): New prototype.
6773
6774 2003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6775
6776 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6777 macro was introduced in anticipation of GOOPS method compilation
6778 code.)
6779
6780 * goops.c: Removed binding of @dispatch.
6781
6782 2003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6783
6784 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6785 instructions that bind the macros on the scheme level back to
6786 goops.c in order to make sure again that the bindings go into the
6787 (oop goops) module and are not visible from the outside.
6788
6789 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6790
6791 * eval.c: Non functional change: Separated R5RS and non-R5RS
6792 macros into different sections of the file and ordered the
6793 memoizers alphabetically.
6794
6795 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6796
6797 * eval.c (scm_ilookup): Rewritten to improve readability.
6798
6799 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6800
6801 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6802 Partially reverted patch from 2003-04-23 in oder to find a better
6803 compromise between readability and debuggability.
6804
6805 2003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6806
6807 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6808 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6809 definitions of the special goops memoizers from goops.[ch] to
6810 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6811 throughout guile.
6812
6813 2003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6814
6815 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6816
6817 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6818
6819 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6820
6821 * ioext.c (scm_fdes_to_ports): Ditto.
6822
6823 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6824 lock/unlock scm_i_port_table_mutex.
6825
6826 * strports.c (scm_mkstrport): Ditto.
6827
6828 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6829
6830 * fports.c (scm_fdes_to_port): Ditto.
6831
6832 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6833
6834 This set of patches contains no functional changes, only debatable
6835 minor stylistic ones. Still, in order to prepare a patch between
6836 my local copy and the CVS version, I decided to submit the changes
6837 below. Then, the patch will hopefully only contain relevant
6838 modifications :-)
6839
6840 * eval.c (iqq): Added const specifier.
6841
6842 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6843 Use NULL instead of 0 to indicate that a pointer is returned.
6844 Removed some misleading 'fall through' comments.
6845
6846 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6847 Split up long expressions into smaller ones to be more debugging
6848 friendly.
6849
6850 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6851
6852 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6853 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6854 rather than casting to SCM.
6855
6856 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6857
6858 * sort.c, pairs.h: Removed unnecessary includes.
6859
6860 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6861
6862 * sort.c: Replaced hand-made trampline code by the new official
6863 mechanism from eval.c. This fixes a segfault in the new test file
6864 sort.test.
6865
6866 (quicksort, compare_function, scm_restricted_vector_sort_x,
6867 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6868 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6869 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6870 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6871 eval.c.
6872
6873 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6874 cmp_fun_t): Removed.
6875
6876 (compare_function): Added.
6877
6878 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6879 arithmetics with index arithmetics. Changed quicksort to work on
6880 an array of SCM values instead of an array of characters. Avoid
6881 bytewise copying of SCM elements. Avoid allocating memory on the
6882 stack with alloca. Fixed some comments.
6883
6884 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6885
6886 * eval.c (EXTEND_ENV): Eliminated.
6887
6888 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6889 EXTEND_ENV.
6890
6891 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6892
6893 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6894
6895 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6896 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6897
6898 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6899 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6900 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6901 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6902 functions such that they check if the object is a non-immediate.
6903 Further, renamed identifiers to use the scm_dbg_ prefix and made
6904 their inclusion into the lib dependent of the
6905 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6906
6907 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6908
6909 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6910 debug option.
6911
6912 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6913
6914 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
6915 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6916 any calls to SCM_NCONSP any more.
6917
6918 * unif.c (l2ra): Eliminate redundant check.
6919
6920 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6921
6922 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6923 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6924 SCM_NNULLP. Now, guile itself does not include any calls to
6925 SCM_NNULLP any more.
6926
6927 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6928
6929 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6930 scm_copy_tree): Place assignment expressions which are part of
6931 other expressions into an expression of their own.
6932
6933 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6934
6935 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6936 compare SCM values with !=.
6937
6938 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6939
6940 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6941 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6942 and definition of the memoizer for the generalized set! macro from
6943 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6944 define the macro object.
6945
6946 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6947 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6948 eval.c, it is made static and renamed to s_set_x.
6949
6950 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6951 over SCM_N<foo>.
6952
6953 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6954
6955 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6956 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6957 to undefineds and registered the object as a permanent object.
6958
6959 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6960 static in eval.c, renamed it to f_apply and registered the object
6961 as a permanent object.
6962
6963 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6964
6965 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
6966 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6967
6968 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6969
6970 * numbers.c (scm_logtest): Fixed argument bug in the call to
6971 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6972
6973 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6974
6975 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6976 type errors that showed up when compiling with SCM_DEBUG defined.
6977
6978 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6979
6980 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6981 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6982 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6983 fix compile errors with --disable-deprecated.
6984
6985 2003-04-17 Rob Browning <rlb@defaultvalue.org>
6986
6987 * numbers.c (scm_integer_expt): fix case where we were declaring
6988 vars in the middle of a statement block. Thanks to Thamer
6989 Al-Harbash.
6990
6991 2003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6992
6993 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6994 change.
6995
6996 * eq.c (scm_eqv_p): Turned into a primitive generic.
6997
6998 2003-04-16 Rob Browning <rlb@defaultvalue.org>
6999
7000 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
7001 Thanks to Boyd Gerber.
7002 Added check for __arm__ in addition to arm for LINUX and copied
7003 __s390__ defines from upstream libgc. Thanks to James Treacy for
7004 reporting the problems.
7005
7006 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
7007
7008 * socket.c: use SCM_CHAR_BIT.
7009
7010 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
7011
7012 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
7013
7014 2003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7015
7016 * feature.c (scm_init_feature): Always add threads feature.
7017
7018 2003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7019
7020 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
7021 scm_at_assert_bound_ref. (We don't want the unbound check. See
7022 oop/goops/active-slot.scm.)
7023
7024 2003-04-14 Rob Browning <rlb@defaultvalue.org>
7025
7026 * tags.h: scm_t_intptr should have been intptr_t.
7027
7028 2003-04-13 Rob Browning <rlb@defaultvalue.org>
7029
7030 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
7031 test. Instead use
7032 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
7033 as gc_os_dep.c suggests is appropriate.
7034
7035 * goops.c (prep_hashsets): make static to match prototype.
7036 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
7037 Chin.
7038
7039 * c-tokenize.lex: remove trailing comma from enum. Thanks to
7040 Albert Chin.
7041
7042 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
7043 Klausner.
7044
7045 2003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7046
7047 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
7048 indicated through extra fields in getters-n-setters.
7049 (scm_add_slot): Adapted to new format of getters_n_setters slot.
7050 (Thanks to Andy Wingo.)
7051
7052 2003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7053
7054 * gc-segment.c: add comment
7055
7056 2003-04-07 Rob Browning <rlb@defaultvalue.org>
7057
7058 * debug.h: change "id" arg name to "info_id" to avoid objective-c
7059 clash.
7060
7061 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
7062 and add regression test to standalone/.
7063
7064 2003-04-06 Rob Browning <rlb@defaultvalue.org>
7065
7066 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
7067 Thanks to Dale P. Smith.
7068
7069 * random.c: #include gmp.h.
7070 (scm_c_random_bignum): normalize result on return.
7071
7072 * init.c: #include gmp.h.
7073
7074 * numbers.h: remove the gmp.h #include (not needed now).
7075
7076 * posix.h: change occurences of "id" to something else so we don't
7077 cause trouble when included via objective-c (can't hurt, might
7078 help). Still have usage in debug.h, though.
7079
7080 2003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7081
7082 * random.c (scm_c_random_bignum): Don't generate a random number
7083 equal to m (the second argument of scm_c_random_bignum); only
7084 generate numbers in the range 0 <= r < m.
7085 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
7086 scm_var_random_state.
7087
7088 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
7089 clause.
7090
7091 2003-04-05 Rob Browning <rlb@defaultvalue.org>
7092
7093 * modules.c (scm_module_import_interface): move declaration of
7094 uses before any code.
7095
7096 2003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7097
7098 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
7099 not top_srcdir.
7100
7101 * hashtab.c (rehash_after_gc): Clear to_rehash list before
7102 processing it in order to avoid an infinite loop.
7103
7104 * print.c (scm_prin1): Remember old state of pstate->writingp.
7105
7106 2003-04-05 Marius Vollmer <mvo@zagadka.de>
7107
7108 * Changed license terms to the plain LGPL thru-out.
7109
7110 2003-04-04 Rob Browning <rlb@defaultvalue.org>
7111
7112 * socket.c (FLIPCPY_NET_HOST_128): new macro.
7113 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
7114 rewrite to handle GMP bignums.
7115
7116
7117 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
7118
7119 * ports.c (scm_getc): minor tweak.
7120
7121 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
7122 rewrite to handle GMP bignums.
7123
7124 * numbers.c: rewrite *many* functions to handle GMP bignums.
7125
7126 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
7127 handle GMP bignums.
7128
7129 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
7130
7131 * init.c (check_config): remove SCM_BIGDIG conditionals.
7132 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
7133
7134 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
7135
7136 * eval.c: remove SCM_BIGDIG conditionals.
7137
7138 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
7139
7140 2003-03-31 Rob Browning <rlb@defaultvalue.org>
7141
7142 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
7143 to Kevin Ryde.)
7144
7145 2003-03-27 Rob Browning <rlb@defaultvalue.org>
7146
7147 * threads.h: fix various preprocessor usages of new public
7148 symbols to expect 0 or 1 values rather than 1 or undefined.
7149 i.e. change #ifdef to #if, etc.
7150
7151 * threads.c: fix various preprocessor usages of new public
7152 symbols to expect 0 or 1 values rather than 1 or undefined.
7153 i.e. change #ifdef to #if, etc.
7154
7155 * tags.h: fix various preprocessor usages of new public
7156 symbols to expect 0 or 1 values rather than 1 or undefined.
7157 i.e. change #ifdef to #if, etc.
7158
7159 * stacks.c: fix various preprocessor usages of new public
7160 symbols to expect 0 or 1 values rather than 1 or undefined.
7161 i.e. change #ifdef to #if, etc.
7162
7163 * stackchk.h: fix various preprocessor usages of new public
7164 symbols to expect 0 or 1 values rather than 1 or undefined.
7165 i.e. change #ifdef to #if, etc.
7166
7167 * stackchk.c: fix various preprocessor usages of new public
7168 symbols to expect 0 or 1 values rather than 1 or undefined.
7169 i.e. change #ifdef to #if, etc.
7170
7171 * sort.c: fix various preprocessor usages of new public
7172 symbols to expect 0 or 1 values rather than 1 or undefined.
7173 i.e. change #ifdef to #if, etc.
7174
7175 * read.c: fix various preprocessor usages of new public
7176 symbols to expect 0 or 1 values rather than 1 or undefined.
7177 i.e. change #ifdef to #if, etc.
7178
7179 * random.c: fix various preprocessor usages of new public
7180 symbols to expect 0 or 1 values rather than 1 or undefined.
7181 i.e. change #ifdef to #if, etc.
7182
7183 * print.c: fix various preprocessor usages of new public
7184 symbols to expect 0 or 1 values rather than 1 or undefined.
7185 i.e. change #ifdef to #if, etc.
7186
7187 * objects.c: fix various preprocessor usages of new public
7188 symbols to expect 0 or 1 values rather than 1 or undefined.
7189 i.e. change #ifdef to #if, etc.
7190
7191 * numbers.h: fix various preprocessor usages of new public
7192 symbols to expect 0 or 1 values rather than 1 or undefined.
7193 i.e. change #ifdef to #if, etc.
7194
7195 * null-threads.c: fix various preprocessor usages of new public
7196 symbols to expect 0 or 1 values rather than 1 or undefined.
7197 i.e. change #ifdef to #if, etc.
7198
7199 * lang.c: fix various preprocessor usages of new public
7200 symbols to expect 0 or 1 values rather than 1 or undefined.
7201 i.e. change #ifdef to #if, etc.
7202
7203 * lang.h: fix various preprocessor usages of new public
7204 symbols to expect 0 or 1 values rather than 1 or undefined.
7205 i.e. change #ifdef to #if, etc.
7206
7207 * iselect.h: fix various preprocessor usages of new public
7208 symbols to expect 0 or 1 values rather than 1 or undefined.
7209 i.e. change #ifdef to #if, etc.
7210
7211 * init.c: fix various preprocessor usages of new public
7212 symbols to expect 0 or 1 values rather than 1 or undefined.
7213 i.e. change #ifdef to #if, etc.
7214
7215 * gh_data.c: fix various preprocessor usages of new public
7216 symbols to expect 0 or 1 values rather than 1 or undefined.
7217 i.e. change #ifdef to #if, etc.
7218
7219 * gh.h: fix various preprocessor usages of new public
7220 symbols to expect 0 or 1 values rather than 1 or undefined.
7221 i.e. change #ifdef to #if, etc.
7222
7223 * gen-scmconfig.c: change most new public symbols to be defined to
7224 0 or 1 rather than being either 1 or undefined.
7225
7226 * gc_os_dep.c: 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 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
7230
7231 * gc.h: fix various preprocessor usages of new public
7232 symbols to expect 0 or 1 values rather than 1 or undefined.
7233 i.e. change #ifdef to #if, etc.
7234
7235 * gc-card.c: fix various preprocessor usages of new public
7236 symbols to expect 0 or 1 values rather than 1 or undefined.
7237 i.e. change #ifdef to #if, etc.
7238
7239 * gc-mark.c: fix various preprocessor usages of new public
7240 symbols to expect 0 or 1 values rather than 1 or undefined.
7241 i.e. change #ifdef to #if, etc.
7242
7243 * feature.c: fix various preprocessor usages of new public
7244 symbols to expect 0 or 1 values rather than 1 or undefined.
7245 i.e. change #ifdef to #if, etc.
7246
7247 * evalext.c: fix various preprocessor usages of new public
7248 symbols to expect 0 or 1 values rather than 1 or undefined.
7249 i.e. change #ifdef to #if, etc.
7250
7251 * eval.h: fix various preprocessor usages of new public
7252 symbols to expect 0 or 1 values rather than 1 or undefined.
7253 i.e. change #ifdef to #if, etc.
7254
7255 * eval.c: fix various preprocessor usages of new public
7256 symbols to expect 0 or 1 values rather than 1 or undefined.
7257 i.e. change #ifdef to #if, etc.
7258
7259 * eq.c: fix various preprocessor usages of new public
7260 symbols to expect 0 or 1 values rather than 1 or undefined.
7261 i.e. change #ifdef to #if, etc.
7262
7263 * coop.c: fix various preprocessor usages of new public
7264 symbols to expect 0 or 1 values rather than 1 or undefined.
7265 i.e. change #ifdef to #if, etc.
7266
7267 * coop-threads.c: fix various preprocessor usages of new public
7268 symbols to expect 0 or 1 values rather than 1 or undefined.
7269 i.e. change #ifdef to #if, etc.
7270
7271 * coop-pthreads.c: fix various preprocessor usages of new public
7272 symbols to expect 0 or 1 values rather than 1 or undefined.
7273 i.e. change #ifdef to #if, etc.
7274
7275 * coop-defs.h: fix various preprocessor usages of new public
7276 symbols to expect 0 or 1 values rather than 1 or undefined.
7277 i.e. change #ifdef to #if, etc.
7278
7279 * convert.i.c: fix various preprocessor usages of new public
7280 symbols to expect 0 or 1 values rather than 1 or undefined.
7281 i.e. change #ifdef to #if, etc.
7282
7283 * continuations.c: fix various preprocessor usages of new public
7284 symbols to expect 0 or 1 values rather than 1 or undefined.
7285 i.e. change #ifdef to #if, etc.
7286
7287 * _scm.h: fix various preprocessor usages of new public symbols to
7288 expect 0 or 1 values rather than 1 or undefined. i.e. change
7289 #ifdef to #if, etc.
7290
7291 2003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7292
7293 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
7294
7295 * deprecated.c, deprecated.h: New files, to collect deprecated
7296 things in one place.
7297 * Makefile.am: Added them in all the right places.
7298
7299 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
7300 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
7301 builds work.
7302 (DOT_X_FILES): Removed "iselect.x".
7303 (DOT_DOC_FILES): Removed "iselect.doc".
7304
7305 2003-03-25 Rob Browning <rlb@defaultvalue.org>
7306
7307 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
7308 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
7309
7310 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
7311
7312 * vports.c: #include <config.h> if HAVE_CONFIG_H.
7313
7314 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
7315 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7316
7317 * threads.h: replace usage of struct timespect with
7318 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
7319 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
7320 favor of scm_t_timespec from scmconfig.h.
7321
7322 * threads.c: move libguile/_scm.h include to the top so we pick up
7323 any critical defines like _GNU_SOURCE early. Replace usage of
7324 struct timespect with scm_t_timespec. Replace usage of
7325 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
7326 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
7327
7328 * threads-plugin.h: replace usage of struct timespect with
7329 scm_t_timespec.
7330
7331 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
7332 usage of struct timespect with scm_t_timespec.
7333
7334 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
7335 HAVE_INTTYPES_H handling to scmconfig.h. #include
7336 "libguile/__scm.h". Rework handling for scm_t_bits,
7337 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
7338 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
7339 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
7340 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
7341 SCM_HAVE_ARRAYS.
7342
7343 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
7344
7345 * struct.c: #include <config.h> if HAVE_CONFIG_H.
7346
7347 * strports.c: #include <config.h> if HAVE_CONFIG_H.
7348
7349 * strop.c: #include <config.h> if HAVE_CONFIG_H.
7350
7351 * stime.h: move handling of time related headers to scmconfig.h.
7352
7353 * stime.c: #include <config.h> if HAVE_CONFIG_H.
7354
7355 * stacks.c: replace usage of STACK_GROWS_UP with
7356 SCM_STACK_GROWS_UP.
7357
7358 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7359 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7360
7361 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7362 of uint32 and HAVE_UINT_32 with scm_t_int32.
7363
7364 * smob.c: #include <config.h> if HAVE_CONFIG_H.
7365
7366 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
7367
7368 * script.c: #include <config.h> if HAVE_CONFIG_H.
7369
7370 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
7371
7372 * scmconfig.h.top: new file -- preamble for scmconfig.h.
7373
7374 * rw.c: #include <config.h> if HAVE_CONFIG_H.
7375
7376 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
7377
7378 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7379
7380 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
7381
7382 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7383 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
7384 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
7385 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7386
7387 * ramap.c: replace usage of HAVE_LONG_LONGS with
7388 "SCM_SIZEOF_LONG_LONG != 0".
7389
7390 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
7391 "libguile/scmconfig.h".
7392
7393 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
7394
7395 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7396 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7397
7398 * posix.c: #include <config.h> if HAVE_CONFIG_H.
7399
7400 * ports.c: #include <config.h> if HAVE_CONFIG_H.
7401
7402 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7403
7404 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
7405 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
7406 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
7407 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
7408 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
7409 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
7410 "SCM_SIZEOF_LONG_LONG != 0".
7411
7412 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7413 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
7414 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
7415 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
7416
7417 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
7418
7419 * null-threads.h: replace usage of struct timespect with
7420 scm_t_timespec.
7421
7422 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
7423
7424 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
7425 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
7426 scm_t_uint64 and rename usages.
7427
7428 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
7429
7430 * load.c: #include <config.h> if HAVE_CONFIG_H.
7431
7432 * iselect.h: move handling of time related headers to scmconfig.h.
7433 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
7434 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
7435 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
7436
7437 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7438 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7439 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7440
7441 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
7442
7443 * inline.h: #include "libguile/__scm.h" at the top. Change code
7444 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
7445 what to do instead of creating a new public #define. Rename usage
7446 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7447 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
7448 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
7449
7450 * inline.c: rearrange handling -- now we just #define
7451 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
7452 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
7453 appropriate, and we use that in inline.h along with the above
7454 define to determine how to respond.
7455
7456 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7457 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7458
7459 * guile.c: #include <config.h> if HAVE_CONFIG_H.
7460
7461 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7462 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7463
7464 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7465
7466 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
7467
7468 * gen-scmconfig.c: new file -- see comments in file for details.
7469
7470 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
7471
7472 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
7473 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7474
7475 * gc.h: replace usage of SIZEOF_LONG with
7476 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
7477 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
7478 since we handle that in scmconfig.h now.
7479
7480 * gc.c: #include <config.h> if HAVE_CONFIG_H.
7481
7482 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7483 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
7484 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7485
7486 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
7487
7488 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7489 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7490
7491 * fports.c: #include <config.h> if HAVE_CONFIG_H.
7492
7493 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
7494
7495 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7496 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7497
7498 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
7499
7500 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7501 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7502
7503 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
7504 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
7505 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7506 with "SCM_SIZEOF_LONG_LONG != 0".
7507
7508 * error.c: #include <config.h> if HAVE_CONFIG_H.
7509
7510 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7511 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7512 with "SCM_SIZEOF_LONG_LONG != 0".
7513
7514 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
7515
7516 * coop.c: replace usage of struct timespect with scm_t_timespec.
7517 #include <config.h> if HAVE_CONFIG_H.
7518
7519 * coop-threads.c: #include "libguile/_scm.h" early. Replace
7520 usage of struct timespect with scm_t_timespec. Replace usage of
7521 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7522
7523 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
7524 usage of struct timespect with scm_t_timespec. Replace usage of
7525 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7526
7527 * coop-defs.h: move handling of time related headers to
7528 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
7529 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
7530 timespect with scm_t_timespec.
7531
7532 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7533
7534 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7535
7536 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7537 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7538
7539 * continuations.c: move libguile/_scm.h include to the top so we
7540 pick up any critical defines like _GNU_SOURCE early.
7541
7542 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
7543
7544 * async.c: #include <config.h> if HAVE_CONFIG_H.
7545
7546 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
7547
7548 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
7549 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
7550
7551 * __scm.h: move libguile/scmconfig.h include up to the top, so
7552 we're sure to pick up any critical defines like _GNU_SOURCE early.
7553 #include <limits.h> removed in favor of scmconfig.h inclusion when
7554 appropriate. STDC_HEADERS based inclusion of stdlib.h,
7555 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
7556 scmconfig.h inclusion when appropriate. Various Win32 related
7557 definitions removed in favor of scmconfig.h inclusion when
7558 appropriate.
7559 (HAVE_UINTPTR_T): definition removed (see NEWS).
7560 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
7561 (HAVE_LONG_LONGS): definition removed (see NEWS).
7562 (HAVE_LONG_LONG): definition removed (see NEWS).
7563 (HAVE_PTRDIFF_T): definition removed (see NEWS).
7564
7565 * Makefile.am: scmconfig.h is now generated by building and
7566 running gen-scmconfig.h and capturing its output. gen-scmconfig
7567 uses config.h and the configure.in generated gen-scmconfig.h to
7568 decide what to output. See gen-scmconfig.c for details.
7569 (noinst_PROGRAMS): add gen-scmconfig.
7570 (gen_scmconfig_SOURCES): new variable.
7571 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
7572 cross-compiling right.
7573 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
7574 (BUILT_SOURCES): add scmconfig.h.
7575
7576 2003-03-19 Marius Vollmer <mvo@zagadka.de>
7577
7578 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
7579 Adrian Bunk. Thanks!
7580
7581 2003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7582
7583 * goops.c (make_class_from_template): New fourth arg:
7584 applicablep.
7585 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
7586 cpls.
7587
7588 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
7589
7590 * goops.c, objects.c, objects.h (scm_make_extended_class): New
7591 second arg: applicablep.
7592 (scm_i_inherit_applicable): New function.
7593
7594 * goops.c, goops.h (scm_class_applicable,
7595 scm_class_extended_accessor): New classes.
7596
7597 2003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7598
7599 * procs.c (scm_procedure_documentation): Removed redundant
7600 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
7601 predicates.
7602
7603 2003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7604
7605 * list.c, list.h (scm_filter, scm_filter_x): New functions.
7606
7607 * modules.c (scm_module_import_interface): New function.
7608
7609 * goops.c, goops.h (scm_class_accessor_method): Renamed from
7610 scm_class_accessor.
7611 (scm_class_accessor): New class.
7612
7613 2003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7614
7615 * goops.c (scm_primitive_generic_generic): Enable primitive
7616 generic if not enabled.
7617 (scm_sys_goops_loaded): Setup unextended primitive generics.
7618
7619 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
7620
7621 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
7622 snarf macros.
7623
7624 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
7625 testing example. All uses of SCM_GPROC should be converted.)
7626
7627 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
7628 scm_assoc.
7629
7630 * eq.c (scm_equal_p): Turned into a primitive generic.
7631
7632 2003-02-27 Rob Browning <rlb@defaultvalue.org>
7633
7634 * Makefile.am (scmconfig.h): new target -- generate file from
7635 ../config.h.
7636 (modinclude_HEADERS): remove version.h.
7637 (nodist_modinclude_HEADERS): add version.h.
7638
7639 2003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7640
7641 This fixes a serious GC bug, introduced during the latest
7642 reorganization of the GC, which disabled freeing of structs and
7643 GOOPS objects:
7644
7645 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
7646 SCM_EOL.
7647 (scm_struct_prehistory): Move scm_free_structs to
7648 scm_before_mark_c_hook.
7649
7650 * gc-card.c (sweep_card): Check that we haven't swept structs on
7651 this card before. That can happen if scm_i_sweep_all_segments has
7652 been called from some other place than scm_igc.
7653
7654 2003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7655
7656 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7657 (since hash tables now adapt their size).
7658
7659 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7660 (current number of prehistory bindings; hashtable code will select
7661 a prime which is greater than this value).
7662
7663 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7664 (current number of initial symbols).
7665
7666 * properties.c (scm_init_properties): Don't specify size of
7667 scm_properties_whash.
7668
7669 * objprop.c (scm_init_objprop): Don't specify size of
7670 scm_object_whash.
7671
7672 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7673
7674 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7675
7676 The following changes introduce the use of resizable hash tables
7677 throughout Guile. It also renames the old *-hash-table* functions
7678 to *-alist-vector* and places them, together with the rest of the
7679 weak vector support, in the module (ice-9 weak-vector). We should
7680 probably introduce a new, better, API for weak references, for
7681 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7682 look like and are used like ordinary pairs.)
7683
7684 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7685 leaf_environment_fold, obarray_remove_all): Use hashtable
7686 accessors.
7687
7688 * gc.c (scm_init_storage): Moved hook initialization to
7689 scm_storage_prehistory.
7690 (scm_storage_prehistory): New function.
7691 (scm_igc): Added commentary about placement of
7692 scm_after_sweep_c_hook.
7693
7694 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7695 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7696 SCM_WVECT_WEAK_VALUE_P.
7697
7698 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7699 functions.
7700 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7701 Removed.
7702 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7703 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7704
7705 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7706 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7707
7708 * modules.c (module-reverse-lookup): Use hashtable accessors.
7709
7710 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7711
7712 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7713 scm_make_weak_value_alist_vector,
7714 scm_make_doubly_weak_alist_vector): New functions.
7715
7716 * weaks.c (scm_init_weaks_builtins): New function.
7717
7718 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7719 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7720 SCM_WVECT_NOSCAN_P): New macros.
7721
7722 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7723 and SCM_WVECT_WEAK_VALUE_P.
7724
7725 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7726 allocate_weak_vector and exported.
7727
7728 2003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7729
7730 * hashtab.c: Undid thread safety. (We decided that it's better to
7731 let the user explicitly protect the tables (or not) according what
7732 is suitable for the application.)
7733
7734 2003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7735
7736 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7737 thread safe and handle resizing tables.
7738 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7739 SCM_DEFER/ALLOW_INTS.
7740
7741 2003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7742
7743 * hashtab.c (scm_vector_to_hash_table,
7744 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7745 functions.
7746 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7747 safe and handle resizing tables.
7748
7749 * weaks.c (scm_make_weak_key_hash_table,
7750 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7751 Size argument made optional. Return resizable table if not
7752 specified.
7753
7754 2003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7755
7756 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7757 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7758
7759 2003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7760
7761 * debug.c (scm_procedure_source): Handle all objects for which
7762 procedure? is #t. (Thanks to Bill Schottstaedt.)
7763
7764 2003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7765
7766 * futures.c (mark_futures): Don't need to mark data of recycled
7767 futures.
7768 (scan_futures, cleanup_undead): Be smarter about marking
7769 futures---avoid unnecessary passes through future lists.
7770
7771 * futures.h, futures.c: New files; Introduced recycling of
7772 futures. For fine-grained threading this lifts performance to
7773 another level. We can now use parallelization in inner loops of
7774 Guile programs without impossible overhead.
7775
7776 * threads.h, threads.c: Moved futures to their own file.
7777
7778 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7779 (DOT_X_FILES): Added futures.x.
7780 (DOT_DOC_FILES): Added futures.doc.
7781 (modinclude_HEADERS): Added futures.h.
7782
7783 * threads.c, threads.h (scm_i_create_thread): Renamed from
7784 create_thread and made global.
7785
7786 * futures.c (scm_make_future): New procedure.
7787
7788 * eval.c: #include "libguile/futures.h".
7789
7790 * init.c: #include "futures.h"
7791 (scm_init_guile_1): Call scm_init_futures.
7792
7793 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7794
7795 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7796
7797 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7798 functions.
7799
7800 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7801
7802 2003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7803
7804 * threads.c (create_thread): Don't unwind dynwind chain of parent
7805 thread before creation. Just start the new thread with an empty
7806 dynwind chain.
7807
7808 2003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7809
7810 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7811
7812 2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7813
7814 * threads.c (scm_timed_wait_condition_variable): Support timed
7815 waiting also for simple condition variables.
7816
7817 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7818 of calling the procedure change-object-class.
7819
7820 2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7821
7822 * ramap.c (scm_ramapc): Typo in error message.
7823
7824 2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7825
7826 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7827 slots with instance allocation.
7828
7829 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7830 class.
7831 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7832
7833 * goops.c (scm_generic_function_methods): Support extended
7834 generic functions.
7835
7836 2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7837
7838 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
7839 Thanks to Neil for pointing this out!
7840
7841 2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7842
7843 * lang.h: Remove declarations matching definitions removed from
7844 lang.c (just below).
7845
7846 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7847
7848 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7849 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7850 and already commented out.
7851
7852 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7853 scm_lreadparen): Support reading vectors with Elisp syntax if
7854 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7855 is not currently defined, and there isn't even a configure switch
7856 to enable it yet.)
7857
7858 2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7859
7860 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7861 builds work.
7862 (EXTRA_DIST): Added version.h.in.
7863
7864 2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7865
7866 This change makes it possible for one thread to do lazy sweeping
7867 while other threads are running. Now only the mark phase need to
7868 have all threads asleep. We should look further into this issue.
7869 Presently, I've put the locking of scm_i_sweep_mutex at
7870 "conservative" places due to my current lack of knowledge about
7871 the garbage collector. Please feel free to restrict these regions
7872 further to allow for maximal parallelism!
7873
7874 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7875
7876 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7877 scm_gc_register_collectable_memory): Substitute locking of
7878 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7879 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7880 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7881 the single-thread section (which now only contains the mark
7882 phase).
7883 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7884 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7885
7886 * threads.c (gc_section_mutex): Removed.
7887
7888 2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7889
7890 * threads.c (create_thread): Clear parent field in root state in
7891 order not to unnecessarily remember dead threads.
7892
7893 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7894 (scm_trampoline_1, scm_trampoline_2): Use them.
7895
7896 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7897
7898 Partial introduction of real plugin interface.
7899
7900 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7901 (EXTRA_DIST): Added threads-plugin.c.
7902
7903 * threads-plugin.h, threads-plugin.c: New files.
7904
7905 * threads.h: #include "libguile/threads-plugin.h".
7906
7907 * threads.c: #include "libguile/threads-plugin.c".
7908
7909 * pthread-threads.c: Temporarily remove debugging functions.
7910
7911 * threads.c, threads.h (scm_yield): Added back.
7912
7913 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7914
7915 * threads.c (really_launch): Detach before unlocking
7916 thread_admin_mutex in order not to risk being joined.
7917 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7918 thread_admin_mutex locked during GC.
7919
7920 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7921 functions.
7922
7923 2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7924
7925 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7926 support for debugging mutex operations.
7927
7928 * threads.c (scm_thread): Removed filed joining_threads.
7929 (thread_print): Print thread number as well as address of thread
7930 structure.
7931 (scm_join_thread): Bugfix.
7932 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7933 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7934 scm_broadcast_condition_variable): Use the low-level API.
7935 (scm_all_threads): Return copy of thread list (to prevent
7936 unintended destruction).
7937 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
7938
7939 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7940 pthread "native" recursive mutex support.
7941
7942 2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7943
7944 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7945 Simply lock a thread C API recursive mutex.
7946 (SCM_NONREC_CRITICAL_SECTION_START,
7947 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7948 SCM_REC_CRITICAL_SECTION_END): Removed.
7949
7950 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7951 direct calls to scm_rec_mutex_lock / unlock around the three calls
7952 to scm_m_expand_body.
7953
7954 * eval.c, eval.h (promise_free): New function.
7955 (scm_force): Rewritten; Now thread-safe; Removed
7956 SCM_DEFER/ALLOW_INTS.
7957
7958 * pthread-threads.h: Added partially implemented plugin interface
7959 for recursive mutexes. These are, for now, only intended to be
7960 used internally within the Guile implementation.
7961
7962 * pthread-threads.c: New file.
7963
7964 * threads.c: Conditionally #include "pthread-threads.c".
7965
7966 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7967 thread-safe;
7968
7969 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7970 SCM_GLOBAL_REC_MUTEX): New macros.
7971
7972 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7973 macros---use mutexes instead.
7974
7975 * tags.h (SCM_IM_FUTURE): New tag.
7976
7977 * eval.c (scm_m_future): New primitive macro.
7978 (SCM_CEVAL): Support futures.
7979 (unmemocopy): Support unmemoization of futures.
7980
7981 * print.c (scm_isymnames): Name of future isym.
7982
7983 * version.c: Unmade some changes to my private copy that got
7984 committed by mistake.
7985
7986 2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7987
7988 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7989 2002-12-10.
7990
7991 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7992
7993 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7994 logical place.
7995
7996 * threads.c (create_thread): Remember root object until the handle
7997 of the new thread is on all_threads list.
7998
7999 * root.c (scm_make_root): Moved copying of fluids until after
8000 creation of root handle so that the fluids are GC protected. Also
8001 removed the critical section.
8002
8003 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8004
8005 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
8006
8007 * gc-malloc.c (malloc_mutex): New mutex.
8008 (scm_gc_malloc_prehistory): Initialize it.
8009 (scm_realloc): Serialize call to realloc
8010 (scm_calloc): Same for calloc.
8011 Thanks to Wolfgang Jaehrling!
8012 (Now we have to make sure all calls to malloc/realloc are made
8013 through scm_malloc.)
8014
8015 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
8016
8017 * threads.c (really_launch): Release heap (to prevent deadlock).
8018 (create_thread): Release heap before locking thread admin mutex.
8019
8020 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8021
8022 * threads.c (scm_i_thread_invalidate_freelists): New
8023 function.
8024
8025 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
8026
8027 * modules.c (scm_export): Inserted a return statement.
8028
8029 2002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8030
8031 * modules.c (scm_export): new function
8032
8033 * gc-card.c: add a note about malloc()/free() overhead.
8034
8035 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8036
8037 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
8038 in srcdir.
8039
8040 2002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8041
8042 These changes remove scm_ints_disabled (which hasn't has any
8043 effect in Guile for quite some time).
8044
8045 * async.c, error.h (scm_ints_disabled): Removed.
8046
8047 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
8048 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
8049 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
8050 (old_ints): Removed.
8051
8052 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
8053 critical section.
8054 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
8055 SCM_ALLOW_INTS.
8056
8057 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8058
8059 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
8060 Removed accidental #if 0 around these functions.
8061
8062 These changes are the start of support for preemptive
8063 multithreading. Marius and I have agreed that I commit this code
8064 into the repository although it isn't thoroughly tested and surely
8065 introduces many bugs. The bugs should only be exposed when using
8066 threads, though. Signalling and error handling for threads is
8067 very likely broken. Work on making the implementation cleaner and
8068 more efficient is needed.
8069
8070 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
8071 (SCM_NONREC_CRITICAL_SECTION_START,
8072 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
8073 SCM_REC_CRITICAL_SECTION_END): New macros.
8074 (SCM_CRITICAL_SECTION_START/END): Defined here.
8075
8076 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
8077 the three calls to scm_m_expand_body.
8078
8079 * gc.h: #include "libguile/pthread-threads.h";
8080 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
8081
8082 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
8083 scm_t_key;
8084
8085 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
8086 access.
8087
8088 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
8089
8090 * gc-freelist.c, threads.c (really_launch): Use
8091 SCM_FREELIST_CREATE.
8092
8093 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
8094
8095 * gc.c (scm_i_expensive_validation_check, scm_gc,
8096 scm_gc_for_newcell): Put threads to sleep before doing GC-related
8097 heap administration so that those pieces of code are executed
8098 single-threaded. We might consider rewriting these code sections
8099 in terms of a "call_gc_code_singly_threaded" construct instead of
8100 calling the pair of scm_i_thread_put_to_sleep () and
8101 scm_i_thread_wake_up (). Also, we would want to have as many of
8102 these sections eleminated.
8103
8104 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
8105
8106 * inline.h: #include "libguile/threads.h"
8107
8108 * pthread-threads.h: Macros now conform more closely to the
8109 pthreads interface. Some of them now take a second argument.
8110
8111 * threads.c, threads.h: Many changes.
8112
8113 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8114
8115 * Makefile.am (version.h): Changed $^ --> $< in rule for
8116 version.h.
8117
8118 2002-12-08 Rob Browning <rlb@defaultvalue.org>
8119
8120 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
8121 (SCM_MINOR_VERSION): use @--@ substitution now.
8122 (SCM_MICRO_VERSION): use @--@ substitution now.
8123 (scm_effective_version): new function prototype.
8124
8125 * version.c (scm_effective_version): new function, also add
8126 effective-version.
8127
8128 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
8129 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
8130 SCM_LIBRARY_DIR.
8131 (version.h): generate this here rather than configure.in. This
8132 approach tracks source edits better (i.e. more immediately).
8133 Might be worth considering for other .in files too.
8134
8135 2002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
8136
8137 Reorganized thread package selection. A thread package now only
8138 implements a small set of pthread like functions and Guile
8139 implements the rest on top of that. Guile's implementation is
8140 what the "coop-pthreads" package has been previously. Support for
8141 "coop" threads has been removed until I get time to add it again.
8142
8143 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
8144 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
8145 null-threads.c, coop-pthreads.c.
8146 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
8147 pthread-threads.h.
8148
8149 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
8150
8151 * threads.h: Do not include "libguile/coop-defs.h". Include
8152 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
8153 (previously deprecated) C level thread API prototypes. They are
8154 now in the thread package specific headers, "null-threads.h" and
8155 "pthread-threads.h".
8156 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
8157 New.
8158 (scm_threads_init): Removed.
8159 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
8160 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
8161 SCM_I_THREAD_SWITCH_COUNT): Define here.
8162 (scm_single_thread_p): Removed.
8163 (scm_call_with_new_thread): Take two args directly instead of list
8164 of two args.
8165 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
8166 SCM_SET_THREAD_LOCAL_DATA): Define here.
8167
8168 * threads.c: Merged with "coop-pthreads.c".
8169
8170 * null-threads.h: Implement pthread-like API as a set of macros.
8171
8172 * pthread-threads.h: New, implement pthread-like API by deferring
8173 to pthread itself.
8174
8175 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
8176 has been lost in the reorganization.
8177
8178 2002-12-01 Mikael Djurfeldt <mdj@linnaeus>
8179
8180 The following change makes it possible to move procedure
8181 application dispatch outside inner loops. The motivation was
8182 clean implementation of efficient replacements of R5RS primitives
8183 in SRFI-1.
8184
8185 The semantics is clear: scm_trampoline_N returns an optimized
8186 version of scm_call_N (or NULL if the procedure isn't applicable
8187 on N args).
8188
8189 Applying the optimization to map and for-each increases efficiency
8190 noticeably. For example, (map abs ls) is 8 times faster than
8191 before.
8192
8193 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
8194
8195 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
8196
8197 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
8198 (map, for-each): Handle also application on two args as a special
8199 case; Use trampolines.
8200
8201 Other changes:
8202
8203 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
8204 (subr2oless): Removed.
8205 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
8206 vector GC protected.
8207
8208 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
8209 scm_out_of_range.
8210
8211 2002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8212
8213 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
8214
8215 2002-11-17 Mikael Djurfeldt <mdj@linnaeus>
8216
8217 * debug.c (scm_make_iloc): Added missing "return".
8218
8219 2002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
8220
8221 * strports.c (scm_eval_string_in_module): Validate second arg to
8222 be a module. Thanks to Arno Peters!
8223
8224 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8225
8226 * .cvsignore: remove goops.c
8227
8228 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8229
8230 * modules.c (scm_env_top_level, scm_lookup_closure_module,
8231 module_variable, scm_module_lookup_closure,
8232 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
8233 scm_system_module_env_p): Don't compare SCM values with C
8234 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
8235 over SCM_NFALSEP.
8236
8237 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8238
8239 * eval.h (SCM_MAKE_ILOC): New macro.
8240
8241 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
8242 the iloc bitpattern here.
8243
8244 2002-11-14 Mikael Djurfeldt <mdj@linnaeus>
8245
8246 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
8247 part of the API, otherwise it's difficult to write Guile
8248 extensions using non-blocking I/O => moved #include
8249 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
8250
8251 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
8252 s_unlock_mutex.
8253
8254 2002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
8255
8256 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
8257 are defined in configure.in.
8258
8259 * threads.c: Removed SCM_API from function definitions. SCM_API
8260 is only for declarations.
8261
8262 2002-11-07 Mikael Djurfeldt <mdj@linnaeus>
8263
8264 * coop-pthreads.h: Added support for thread specific data to the
8265 generic C API for the coop-pthreads case.
8266
8267 * threads.c, threads.h (scm_cond_init): Undo unintentional API
8268 change.
8269 (scm_cond_broadcast): Added missing function.
8270
8271 2002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8272
8273 * coop.c (coop_next_runnable_thread): Removed, wich should have
8274 happened when GUILE_ISELECT was hard-wired.
8275
8276 2002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
8277
8278 * Makefile.am (libguile_la_SOURCES): Added threads.c
8279 (DOT_DOC_FILES): Added threads.doc.
8280 (DOT_X_FILES): Added threads.x.
8281 (EXTRA_libguile_la_SOURCES): Removed threads.c.
8282 (noinst_HEADERS): Added coop-pthreads.c.
8283 (modinclude_HEADERS): Added coop-pthreads.h.
8284
8285 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
8286 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
8287
8288 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
8289 Thanks to Bill Schottstaedt!
8290
8291 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
8292
8293 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
8294 SCM_COPT_THREADS is defined.
8295 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
8296 is defined.
8297
8298 * coop-pthreads.c: Some harmless renamings of internal stuff.
8299 (create_thread): New, generalized version of
8300 scm_call_with_new_thread.
8301 (scm_call_with_new_thread): Use it.
8302 (scm_spawn_thread): New, use create_thread.
8303
8304 2002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
8305
8306 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
8307 start testing it now.
8308
8309 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
8310 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
8311 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
8312 is defined.
8313
8314 2002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
8315
8316 * scmsigs.c (signal_cell_handlers, install_handler_data,
8317 scm_delq_spine_x, really_install_handler, install_handler): New
8318 scheme for triggering signal handlers, to simplify take_signal.
8319 (take_signal): Simplified, to avoid race conditions.
8320 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
8321 hasn't exited yet.
8322
8323 * async.c (scm_async_click): Reset pending_asyncs, handle
8324 signal_asyncs. Don't set cdr of a non-signal async to #f.
8325 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
8326 always. Set pending_asyncs.
8327 (scm_system_async_mark_for_thread): Check that thread has not
8328 exited.
8329 (scm_unmask_signals, decrease_block): Call scm_async_click after
8330 block_asyncs becomes zero.
8331
8332 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
8333 active_asyncs.
8334
8335 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
8336 fields.
8337 * root.c (root_mark): Mark them.
8338 (make_root): Initialize them.
8339
8340 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
8341 USE_COOP_THREADS.
8342 (scm_internal_select): Define one version for USE_COOP_THREADS and
8343 one for USE_NULL_THREADS.
8344 (scm_init_iselect): Likewise.
8345
8346 * inline.h (scm_cell, scm_double_cell): Also allow
8347 USE_COPT_THREADS to not protect the slot initializers.
8348
8349 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
8350 because threads need to be initialized before the stack, but
8351 gsubrs such as scm_timed_condition_variable_wait can only be
8352 created later.
8353
8354 * threads.h: Include "coop-pthreads.h" when requested.
8355 (scm_threads_make_mutex, scm_threads_lock_mutex,
8356 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
8357 not implemented anyway.
8358 (scm_init_thread_procs, scm_try_mutex,
8359 scm_timed_condition_variable_wait,
8360 scm_broadcast_condition_variable, scm_c_thread_exited_p,
8361 scm_thread_exited_p): New prototypes.
8362 (struct timespec): Define if not already defined.
8363 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8364 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8365 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8366 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
8367 deprecated.
8368
8369 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
8370 requested.
8371 (scm_thread_exited_p): New.
8372 (scm_try_mutex, scm_broadcast_condition_variable): Newly
8373 registered procedures.
8374 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
8375 Use the latter as the procedure for "wait-condition-variable",
8376 thus offering a optional timeout parameter to Scheme.
8377 (scm_wait_condition_variable): Implement in terms of
8378 scm_timed_wait_condition_variable.
8379 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8380 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
8381 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8382 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
8383 scm_make_mutex, etc, and deprecate.
8384 (scm_init_threads): Do not create smobs, leave this to
8385 scm_threads_init. Do not include "threads.x" file.
8386 (scm_init_thread_procs): New, include "threads.x" here.
8387
8388 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
8389 scm_null_mutex_lock, scm_null_mutex_unlock,
8390 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
8391 scm_null_condvar_wait, scm_null_condvar_signal,
8392 scm_null_condvar_destroy): Removed.
8393 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
8394 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
8395 scm_cond_destory): Do not define, they are now deprecated and
8396 handled by threads.{h,c}.
8397
8398 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
8399 (scm_threads_init): Create smobs here, using the appropriate
8400 sizes.
8401 (block): Removed, now unused.
8402 (scm_c_thread_exited_p): New.
8403 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
8404 scm_null_mutex_destroy, scm_null_condvar_init,
8405 scm_null_condvar_wait, scm_null_condvar_signal,
8406 scm_null_condvar_destroy): Removed and updated users to do their
8407 task directly.
8408 (scm_try_mutex, timeval_subtract,
8409 scm_timed_wait_condition_variable,
8410 scm_broadcast_condition_variable): New.
8411 (scm_wait_condition_variable): Removed.
8412
8413 * coop-defs.h (coop_m): Added 'level' field.
8414 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8415 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8416 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8417 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
8418 define.
8419 (coop_condition_variable_broadcast): New.
8420
8421 * coop-threads.c (scm_threads_init): Create smobs here, using the
8422 appropriate sizes.
8423 (scm_c_thread_exited_p, scm_try_mutex,
8424 scm_timed_wait_condition_variable,
8425 scm_broadcast_condition_variable): New.
8426 (scm_wait_condition_variable): Removed.
8427
8428 * coop.c (coop_new_mutex_init): Initialize level.
8429 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
8430 level.
8431 (coop_condition_variable_signal): Renamed to
8432 coop_condition_variable_broadcast and reimplemented in terms of
8433 that. Thus...
8434 (coop_condition_variable_broadcast): New.
8435
8436 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
8437
8438 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
8439
8440 2002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
8441
8442 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
8443 of system headers.
8444
8445 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
8446 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
8447 give better error messages. Thanks to Bill Schottstaedt!
8448
8449 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8450
8451 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
8452 scm_definedp to scm_defined_p and deprecated scm_definedp.
8453
8454 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8455
8456 * async.h, async.c (scm_system_async): Fixed deprecation to work
8457 correctly when deprecated features are excluded.
8458
8459 2002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8460
8461 * async.c (scm_system_async_mark_for_thread): Validate thread
8462 argument.
8463
8464 * coop-threads.c (scm_i_thread_root): Do not validate argument.
8465
8466 * feature.c (scm_init_feature): Don't add 'threads' for
8467 USE_NULL_THREADS.
8468
8469 * inline.h (scm_cell, scm_double_cell): Also allow
8470 USE_NULL_THREADS to not protect the slot initializers.
8471
8472 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
8473 "USE_THREAD".
8474
8475 * Makefile.am (noinst_HEADERS): Added null-threads.c.
8476 (modinclude_HEADERS): Added null-threads.h.
8477
8478 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
8479 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
8480 (scm_init_threads): Use generic type names scm_t_mutex and
8481 scm_t_cond instead of coop_m and coop_c.
8482
8483 * null-threads.c, null-threads.h: New files.
8484
8485 2002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
8486
8487 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
8488 This is to support makes that know about "$<" only in pattern
8489 rules, like Sun's make.
8490
8491 2002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
8492
8493 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
8494 substitution. Thanks to David Allouche!
8495
8496 2002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8497
8498 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
8499 !SCM_ENABLE_DEPRECATED.
8500
8501 2002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8502
8503 * async.c (scm_system_async_mark_for_thread): Only call
8504 scm_i_thread_root when USE_THREADS is defined. Use scm_root
8505 otherwise.
8506
8507 * scmsigs.c (take_signal): Only call scm_i_thread_root when
8508 USE_THREADS is defined. Use scm_root otherwise.
8509 (scm_sigaction_for_thread): Ignore THREAD argument when
8510 USE_THREADS is not defined. Also, move THREAD argument defaulting
8511 out of HAVE_SIGACTION section, which was a bug.
8512
8513 2002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8514
8515 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
8516 signal_handlers, not the closure that is used as the async.
8517 The closure is stored in signal_handler_cells, as previously.
8518
8519 2002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
8520
8521 * root.h (scm_root_state): Added 'block_async' slot.
8522 (scm_active_asyncs): Removed abbrev.
8523 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
8524
8525 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
8526 abbrev.
8527
8528 * async.h (scm_call_with_blocked_asyncs,
8529 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8530 scm_c_call_with_unblocked_asyncs): New prototypes.
8531 (scm_mask_signals, scm_unmask_signals): Deprecated.
8532 (scm_mask_ints): Turned into a macro.
8533 * async.c (scm_mask_ints): Removed.
8534 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
8535 this should not be necessary.
8536 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
8537 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
8538 deprecation warning and check for errornous use. Set block_asyncs
8539 instead of scm_mask_ints.
8540 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
8541 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8542 scm_c_call_with_unblocked_asyncs): New.
8543
8544 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
8545 Asyncs are enabled by default.
8546
8547 2002-10-09 Neil Jerram <neil@ossau.uklinux.net>
8548
8549 * vports.c (scm_make_soft_port): Allow vector argument to carry a
8550 6th element: an input waiting thunk.
8551 (sf_input_waiting): New.
8552
8553 2002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
8554
8555 * root.c (root_mark): Mark active_asyncs slot.
8556
8557 * async.c (scm_async_click): Set the cdr of a executed handler
8558 cell to SCM_BOOL_F, not SCM_EOL.
8559 (scm_i_queue_async_cell): Queue the cell at the end of the list,
8560 and only if the handler procedure is not already present.
8561 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
8562 with SCM_BOOL_F.
8563 * scmsigs.c (scm_sigaction_for_thread): Likewise.
8564
8565 2002-10-04 Rob Browning <rlb@defaultvalue.org>
8566
8567 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
8568
8569 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
8570 scm_lt_dlopenext, and scm_lt_dlerror.
8571 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
8572 and scm_lt_dlerror.
8573 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
8574 and scm_lt_dlerror.
8575 (sysdep_dynl_init): switch to scm_lt_dlinit();
8576
8577 * Makefile.am (libguile_la_LIBADD): switch to use
8578 libguile-ltdl.la.
8579
8580 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
8581
8582 2002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
8583
8584 * scmsigs.h (scm_sigaction_for_thread): New prototype.
8585 * scmsigs.c (got_signal): Removed.
8586 (signal_handler_cells, signal_handler_threads): New.
8587 (take_signal): Queue the cell of the signal for the specified
8588 thread. Reset the signal handler on systems that don't have
8589 sigaction.
8590 (sys_deliver_signals): Removed.
8591 (close_1): New.
8592 (scm_sigaction_for_thread): Renamed from scm_sigaction and
8593 extended to also set the thread of a signal and allocate a cell
8594 for it. Keep the Scheme name "sigaction". Check that signum is
8595 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
8596 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
8597 (scm_init_scmsigs): Allocate signal_handler_cells and
8598 signal_handler_threads vectors.
8599
8600 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
8601 that system asnycs and user asyncs are separated. Reimplemented
8602 system asyncs to work per-thread.
8603
8604 * gc.c (scm_init_gc): Do not use scm_system_async.
8605
8606 * async.h (scm_asyncs_pending, scm_set_tick_rate,
8607 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
8608 Removed prototypes.
8609 (scm_i_queue_async_cell): New.
8610
8611 * __scm.h (scm_asyncs_pending_p): Removed.
8612 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
8613 scm_asyncs_pending_p.
8614
8615 * async.h (scm_system_async_mark_for_thread): New prototype.
8616
8617 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
8618
8619 * root.h (scm_root_state): Added new "active_asyncs" slot.
8620 * root.c (scm_make_root): Initialize it to SCM_EOL.
8621
8622 * coop-defs.h (coop_t): Added new "handle" slot.
8623 * coop-threads.c (all_threads, scm_current_thread,
8624 scm_all_threads, scm_i_thread_root): New.
8625 (scm_threads_init): Add main thread to all_threads.
8626 (scheme_launch_thread): Remove thread from all_threads when it
8627 terminates.
8628 (scm_call_with_new_thread): Initialize handle slot of coop_t
8629 structure and add new thread to all_threads.
8630 (scm_spawn_thread): Likewise.
8631
8632 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
8633 * threads.c (scm_current_thread, scm_all_threads): Register as
8634 primitives.
8635
8636 * dynl.c: Use scm_lt_ prefix for libltdl functions.
8637
8638 2002-09-29 Neil Jerram <neil@ossau.uklinux.net>
8639
8640 * script.c (scm_compile_shell_switches): Fix bad spelling of
8641 `explicitly' in comment.
8642
8643 2002-09-28 Neil Jerram <neil@ossau.uklinux.net>
8644
8645 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
8646 Refer to provided? in doc string rather than deprecated feature?.
8647
8648 2002-09-24 Gary Houston <ghouston@arglist.com>
8649
8650 * inline.h (scm_double_cell): prevent reordering of statements
8651 with any following code (for GCC 3 strict-aliasing).
8652 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8653 the earlier version of the reordering prevention.
8654
8655 2002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8656
8657 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
8658
8659 2002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8660
8661 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8662 protection.
8663
8664 2002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8665
8666 * inline.h: include stdio.h
8667
8668 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8669
8670 2002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8671
8672 * gc-segment.c (scm_i_make_initial_segment): check user settings
8673 for sanity.
8674
8675 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8676 sanity.
8677
8678 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
8679
8680 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8681
8682 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
8683 these won't ever wrap around with high memory usage. Thanks to
8684 Sven Hartrumpf for finding this.
8685
8686 * gc-freelist.c: include <stdio.h>
8687
8688 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8689
8690 2002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8691
8692 * vectors.h (SCM_VECTOR_REF): New.
8693
8694 * snarf.h (SCM_DEFINE_PUBLIC): New.
8695
8696 2002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8697
8698 * socket.c (scm_addr_vector): Added size of address to arguments.
8699 Use it to avoid accessing a non-existent path in a sockaddr_un.
8700 Changed all callers.
8701
8702 2002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8703
8704 * gc.h: remove DOUBLECELL card flags.
8705
8706 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8707 scm_realloc().
8708
8709 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8710 init loop; handle this from scm_init_card_freelist()
8711
8712 * gc-card.c (scm_init_card_freelist): init bit vector here.
8713
8714 * numbers.c (scm_make_real): prevent reordering of statements
8715 num2float.i.c (FLOAT2NUM): idem
8716
8717 2002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8718
8719 * eval.h: prepend libguile/ to include path
8720
8721 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8722
8723 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
8724 years. Thanks to Martin Grabmüller!
8725
8726 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8727
8728 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8729 unsigned numbers for computing minimum heap increment. This
8730 prevents weird results when a a negative minimum increment is
8731 computed.
8732
8733 2002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8734
8735 * gc_os_dep.c: When we have __libc_stack_end, use that directly
8736 instead of the old tricks.
8737
8738 * guile-snarf.in: Do not expect the input file to be the first
8739 argument after the optional "-o" option, just pass everything to
8740 the pre-processor without extracting the input file name.
8741
8742 2002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8743
8744 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
8745 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
8746
8747 2002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8748
8749 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8750 Bill Schottstaedt for the bug report
8751
8752 2002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8753
8754 * print.c (scm_iprin1): Print primitives generics always as
8755 "primitive-generic" even when they have no primitive methods yet.
8756
8757 2002-08-17 Gary Houston <ghouston@arglist.com>
8758
8759 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8760 call.
8761
8762 2002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8763
8764 * ports.c (scm_add_to_port_table): small bugfix.
8765
8766 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8767 malloc.
8768
8769 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8770 only use SCM_MIN_HEAP_SEG_SIZE.
8771
8772 * ports.c (scm_add_to_port_table): add backwards compatibility
8773 function
8774
8775 * ports.h: use scm_i_ prefix for port table and port table size.
8776
8777 2002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8778
8779 * vports.c (scm_make_soft_port): Initialize pt variable.
8780
8781 2002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8782
8783 * strports.h (scm_c_eval_string_in_module,
8784 scm_eval_string_in_module): New prototypes.
8785 * strports.c (scm_eval_string_in_module): New, but use
8786 "eval-string" as the Scheme name and make second parameter
8787 optional.
8788 (scm_eval_string): Implement using scm_eval_string_in_module.
8789 (scm_c_eval_string_in_module): New.
8790 Thanks to Ralf Mattes for the suggestion!
8791
8792 2002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8793
8794 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8795 message and abort.
8796
8797 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8798
8799 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8800 stead of scm_t_port*. The function now takes a tag argument.
8801
8802 2002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8803
8804 * gc.h: add scm_debug_cells_gc_interval to public interface
8805
8806 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8807
8808 * gc.c (scm_i_expensive_validation_check): separate expensive
8809 validation checks from cheap ones.
8810
8811 2002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8812
8813 * read.c (scm_input_error): new function: give meaningful error
8814 messages, and throw read-error
8815
8816 * gc-malloc.c (scm_calloc): add scm_calloc.
8817
8818 2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8819
8820 * tags.h: remove GC bits documentation from the tags table.
8821
8822 * read.c (INPUT_ERROR): Prepare for file:line:column error
8823 messages for errors in scm_lreadr() and friends.
8824
8825 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8826
8827 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
8828 implementation).
8829 (scm_gc_calloc): new function
8830
8831 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8832
8833 * ports.c (scm_new_port_table_entry): init port entry to 0
8834 completely.
8835
8836 * ports.c (scm_new_port_table_entry): change function from
8837 scm_add_to_port_table. This prevents cells with null-pointers from
8838 being exposed to GC.
8839
8840 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
8841 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
8842
8843 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
8844 to gc-stats.
8845
8846 * numbers.c (big2str): return "0" for 0 iso. ""
8847
8848 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8849 private-gc.h: new file
8850
8851 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8852 sweeping. More documentation in workbook/newgc.text
8853
8854 2002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8855
8856 * random.c (rstate_free): Return zero.
8857
8858 2002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8859
8860 * environments.c (remove_key_from_alist): Removed.
8861
8862 (obarray_remove): Simplified.
8863
8864 2002-07-24 Stefan Jahn <stefan@lkcc.org>
8865
8866 * continuations.h: ia64: Include <signal.h> before
8867 <sys/ucontext.h>.
8868
8869 2002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8870
8871 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8872
8873 2002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8874
8875 * goops.c (scm_compute_applicable_methods): use
8876 scm_remember_upto_here_1 iso scm_remember_upto_here
8877
8878 * macros.c: include deprecation.h
8879
8880 * vectors.c (scm_vector_move_right_x): remove side effect in
8881 macro arg.
8882 (scm_vector_move_left_x): idem.
8883
8884 * net_db.c, posix.c, socket.c: variable naming: change ans to
8885 result.
8886
8887 * sort.c (scm_merge_vector_x): accept vector as argument
8888 iso. SCM*. This is needed for full GC correctness.
8889
8890 * gc.h: undo previous undocumented changes related to #ifdef
8891 GENGC.
8892
8893 2002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8894
8895 * *.c: add space after commas everywhere.
8896
8897 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8898 Document cases where SCM_WRITABLE_VELTS() is used.
8899
8900 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8901 SCM_VELTS() return a const pointer
8902 (SCM_VECTOR_SET): add macro.
8903
8904 2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8905
8906 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8907 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8908 Deprecated the special kind of built-in dynamic syntax transformer
8909 that was inaccurately named "macro". Note: The built-in syntax
8910 transformers that are named "mmacro" or "memoizing-macro" still
8911 exist, and it is these which come much closer to what one would
8912 call a macro.
8913
8914 2002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8915
8916 * eval.c (unmemocopy): Fix for
8917 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8918 with internal definitions and local-eval).
8919
8920 2002-07-12 Gary Houston <ghouston@arglist.com>
8921
8922 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8923 defined. They don't do anything useful, especially since the
8924 only case where DYNAMIC_LINKING is undefined seems to be
8925 when --with-modules=no is given to configure, which is basically
8926 requesting that the "dynamic linking module" be omitted.
8927
8928 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8929 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8930
8931 * extensions.c (load_extension): check DYNAMIC_LINKING for
8932 scm_dynamic_call.
8933 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8934 scm_init_dynamic_linking.
8935
8936 2002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8937
8938 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8939 check for Cygwin when including <winsock2.h>, this is already
8940 check for by configure. Thus, revert change from 2002-07-07.
8941
8942 2002-07-10 Gary Houston <ghouston@arglist.com>
8943
8944 * eq.c: include <string.h>
8945 * dynl.c: docstring editing.
8946
8947 2002-07-09 Gary Houston <ghouston@arglist.com>
8948
8949 * dynl.c (scm_dynamic_call): docstring editing.
8950
8951 2002-07-08 Rob Browning <rlb@defaultvalue.org>
8952
8953 * gc_os_dep.c: HURD fixes.
8954
8955 2002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8956
8957 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8958
8959 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8960 this should be compiled for BUILD host.
8961 Override default rule for
8962 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8963 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8964 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8965
8966 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8967 <winsock2.h> on Cygwin even when we have it.
8968
8969 2002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8970
8971 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8972 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8973 the code. Full number of arguments checking of closures is
8974 mandatory now. However, the option to disable the checking has
8975 most probably not been used anyway.
8976
8977 2002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8978
8979 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8980 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8981 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8982 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8983 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8984 (scm_source_properties, scm_set_source_properties_x,
8985 scm_source_property): Removed compile time option SCM_RECKLESS to
8986 clean up the code. Full number of arguments checking of closures
8987 is mandatory now. However, the option to disable the checking has
8988 most probably not been used anyway.
8989
8990 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8991 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8992
8993 2002-06-30 Gary Houston <ghouston@arglist.com>
8994
8995 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8996 do anything useful. Added a comment about need for a mutex if
8997 pre-emptive threading is supported.
8998
8999 * posix.c (scm_convert_exec_args), dynl.c
9000 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
9001 allocate_string_pointers. 2) simplified: don't reallocate the
9002 strings, just make an array of pointers 3) avoid memory leaks on
9003 error 4) let the procedure report errors in its own name.
9004 Consequences: 1) the procedures now assume that SCM strings are
9005 nul-terminated, which should always be the case. 2) Since strings
9006 are not reallocated, it's now possible for strings passed to
9007 dynamic-args-call to be mutated.
9008
9009 2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9010
9011 * __scm.h, eval.c, eval.h: Removed compile time option
9012 MEMOIZE_LOCALS to clean up the code. Now, caching of local
9013 variable positions during memoization is mandatory. However, the
9014 option to disable the caching has most probably not been used
9015 anyway.
9016
9017 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
9018
9019 * print.c (scm_simple_format): Print missing part of format before
9020 ~% control. Thanks to Daniel Skarda!
9021
9022 2002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
9023
9024 * mkstemp.c: Added exception notice to license statement.
9025
9026 2002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
9027
9028 * numbers.c (mem2ureal): When returning an inexact zero, make sure
9029 it is represented as a floating point value so that we can change
9030 its sign.
9031
9032 From John W. Eaton <jwe@bevo.che.wisc.edu>
9033
9034 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
9035
9036 2002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
9037
9038 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
9039 in addition to `i386'. Thanks to Dale P. Smith.
9040
9041 2002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
9042
9043 * eq.c (real_eqv): New.
9044 (scm_eqv_p): Use it when comparing reals and complexes.
9045
9046 * numbers.c: Include <string.h>, for strncmp.
9047 (mem2complex): Do not create negative NaNs.
9048 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
9049 NaN.
9050 (scm_inexact_to_exact): Signal error when converting a NaN.
9051
9052 2002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
9053
9054 * posix.c (scm_putenv): Handle removing variables explicitely by
9055 calling unsetenv.
9056
9057 From John W. Eaton.
9058
9059 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
9060 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
9061 and scm_nan.
9062 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
9063 [SCO && ! HAVE_ISINF] (isinf): New function.
9064 (xisinf, xisnan): New functions.
9065 (IS_INF): Delete.
9066 (isfinite): Define in terms of xisinf.
9067 (scm_inf_p, scm_nan_p): New functions.
9068 (guile_Inf, guile_NaN): New file-scope vars.
9069 (guile_ieee_init): New function.
9070 (scm_inf, scm_nan): New functions.
9071 (idbl2str): Handle Inf and NaN. Remove funny label and
9072 corresponding gotos.
9073 (ALLOW_DIVIDE_BY_ZERO): New macro.
9074 (scm_divide): Allow division by zero to occur if
9075 ALLOW_DIVIDE_BY_ZERO is defined.
9076 Handle bignums and ints as special cases.
9077
9078 Additional stuff by me:
9079
9080 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
9081 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
9082 (iflo2str): Don't output a '+' for negative numbers or for Inf and
9083 NaN. They will provide their own sign.
9084 (scm_divide): Only allow divides by inexact zeros. Dividing by
9085 exact zeros still signals an errors.
9086
9087 2002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
9088
9089 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
9090 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
9091 (scm_slot_exists_p): Rename from scm_slots_exists_p.
9092 Thanks to Andreas Rottmann.
9093
9094 2002-04-20 Gary Houston <ghouston@arglist.com>
9095
9096 * removal of unused fields in root state (thanks to Christopher
9097 Cramer for pointing out the disuse.)
9098 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
9099 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
9100
9101 * root.c (root_mark): don't mark them.
9102 (scm_make_root): don't set them to #f.
9103 * init.c (scm_init_standard_ports): don't initialise with the
9104 default ports.
9105
9106 2002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
9107
9108 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
9109 cpp_sig_symbols.c.
9110
9111 2002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
9112
9113 * guile-snarf.in: Do not clean input file. This would write to
9114 the $(srcdir) during a VPATH build, which is not allowed. It also
9115 isn't needed since it only works when an output filename has been
9116 specified and in that case we don't need to clean the input file
9117 because the output file will already exist.
9118
9119 2002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
9120
9121 * guile-snarf: Install the trap for removing $cleanfile only when
9122 the value of $cleanfile is actually known.
9123
9124 2002-04-10 Rob Browning <rlb@defaultvalue.org>
9125
9126 * .cvsignore: add versiondat.h and *.c.clean.c.
9127
9128 2002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
9129
9130 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
9131 function, replaces macro SRCBRKP.
9132
9133 (SRCBRKP): Deprecated.
9134
9135 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
9136 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
9137 temporary variable.
9138
9139 2002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9140
9141 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
9142 CHECK_EXIT and removed all references to them.
9143
9144 2002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
9145
9146 * debug.h (scm_ready_p, debug_print): Removed declarations.
9147
9148 * eval.c (EVALCELLCAR): Removed.
9149
9150 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
9151 operation from condition.
9152
9153 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
9154
9155 * guile-snarf.in: When the output filename is "-", write to
9156 stdout. When no "-o" option is given, use "-" as the output
9157 filename (i.e., stdout). Only 'clean' the inputfile or remove the
9158 output file on error when the output file name is not "-". Define
9159 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
9160
9161 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
9162
9163 2002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
9164
9165 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
9166 and the corresponding goto statements. Removed redundant code.
9167
9168 2002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
9169
9170 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
9171 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
9172 Re-enabled handing of rpsubrs and asubrs.
9173
9174 2002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
9175
9176 * eval.c (SIDEVAL): Removed.
9177
9178 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
9179 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
9180 argument checking order for set! to locals, variables and symbols.
9181 Improvements to control structure. Removed some uses of arg1 and
9182 arg2 as temporary variables.
9183
9184 2002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
9185
9186 * guile-snarf.in: Remove "--compat=1.4" support.
9187 Add "-d" and "-D" support.
9188
9189 (deprecated_list): New var.
9190 (compat_mode_clean_xxx): Delete.
9191 (grep_deprecated): New func.
9192 ("main"): If "-d" or "-D", call `grep_deprecated'.
9193
9194 2002-03-15 Neil Jerram <neil@ossau.uklinux.net>
9195
9196 * hooks.h: Change scm_t_c_hookype_t everywhere to
9197 scm_t_c_hook_type.
9198
9199 Docstring fixes:
9200
9201 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
9202
9203 * ports.c (scm_sys_make_void_port): Use `@file'.
9204
9205 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
9206 than `else'.
9207
9208 * macros.c (scm_makmacro): Don't say that the form replaces its
9209 source, because it doesn't.
9210 (scm_makmmacro): Clarify difference between this and scm_makmacro.
9211
9212 * backtrace.c (scm_display_error), filesys.c (scm_umask,
9213 scm_select, scm_basename), goops.c (scm_method_generic_function),
9214 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
9215 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
9216 spelling mistakes.
9217
9218 * debug.c (scm_debug_options), eval.c
9219 (scm_eval_options_interface), read.c (scm_read_options): Change
9220 incorrect @var in docstring to @code.
9221
9222 2002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
9223
9224 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
9225
9226 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
9227 guile-snarf can remove trailing non-init code.
9228
9229 * guile-snarf.in (modern_snarf): Remove everything following and
9230 including "^:^" from the output.
9231
9232 2002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9233
9234 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
9235
9236 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
9237
9238 2002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
9239
9240 * guile-snarf.in: Update copyright.
9241 Rewrite to internalize error handling.
9242 Add "--compat=1.4" handling.
9243 Add commentary.
9244
9245 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
9246 (snarfcppopts): New var.
9247 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
9248 (.c.doc): Use $(snarfcppopts).
9249
9250 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
9251 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
9252 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
9253 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
9254 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
9255 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
9256 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
9257 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
9258 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
9259 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
9260 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
9261 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
9262 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
9263 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
9264
9265 2002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9266
9267 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
9268 The next step will be to remove the union 't' and simplify the
9269 code of SCM_CEVAL that way.
9270
9271 2002-03-12 Neil Jerram <neil@ossau.uklinux.net>
9272
9273 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
9274 rreadfds, rwritefds, rexceptfds): Made static.
9275
9276 * gc.c (terminating), fports.c (terminating): Renamed
9277 scm_i_terminating.
9278
9279 2002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
9280
9281 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
9282 potential overflow problems. Thanks to John W Eaton!
9283
9284 * strop.c (string_capitalize_x): Treat characters as unsigned so
9285 that 8-bit chars work. Thanks to David Pirotte!
9286
9287 2002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9288
9289 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
9290 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
9291 proc as temporary variables. Introduced temporary variables with
9292 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9293 by a more explicit predicate in some places.
9294
9295 2002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
9296
9297 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
9298 Added lots of comments regarding the implementation of #@dispatch.
9299 Changed intra-procedure communication to use t.arg1 instead of
9300 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
9301 variables. Introduced temporary variables with hopefully
9302 descriptive names for clarification. Replaced SCM_N?IMP by a more
9303 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
9304 of computing the expression explicitly. Eliminate now unused
9305 label nontoplevel_cdrxbegin.
9306
9307 * goops.h (SCM_INSTANCE_HASH): New macro.
9308
9309 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
9310
9311 2002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9312
9313 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
9314 "guile-snarf" moved back from `noinst_SCRIPTS'.
9315
9316 2002-03-08 Neil Jerram <neil@ossau.uklinux.net>
9317
9318 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
9319 exists when adding a source property other than those that are
9320 handled explicitly, add the new property to the SRCPROPS obj's
9321 plist.
9322
9323 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
9324 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
9325
9326 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
9327 debug.status. It isn't needed, and it can overflow the bits
9328 reserved for it (which may lead to a segv or a GC abort).
9329
9330 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9331
9332 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
9333 side-effecting operations from conditions and macro calls.
9334 Replaced SCM_N?IMP by a more explicit predicate in some places.
9335 Minimized the scope of some variables.
9336
9337 2002-03-02 Stefan Jahn <stefan@lkcc.org>
9338
9339 * convert.i.c: Fixed int <-> long conversions which would have
9340 failed if their sizes were different.
9341
9342 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9343
9344 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
9345 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
9346 as temporary variables. Removed side-effecting operations from
9347 conditions and macro calls. Introduced temporary variables with
9348 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9349 by a more explicit predicate in some places. Removed code that
9350 was conditionally compiled if SICP was defined - which it never
9351 is.
9352
9353 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9354
9355 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
9356 Removed some uses of t.arg1 and proc as temporary variables.
9357 Removed side-effecting operations from conditions and macro calls.
9358 Introduced temporary variables with hopefully descriptive names
9359 for clarification. Replaced SCM_N?IMP by a more explicit
9360 predicate in some places.
9361
9362 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9363
9364 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
9365 explicit predicate in some places.
9366
9367 (CHECK_EQVISH): Removed.
9368
9369 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
9370 variables. Removed side-effecting operations from conditions and
9371 macro calls. Introduced temporary variables for clarification.
9372 Sorted if-else-if check for the type of the last form in a list by
9373 frequency. Avoided some unnecessary tail-recursion calls.
9374
9375 2002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9376
9377 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
9378 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
9379 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
9380 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
9381 scm_cell and all its uses to scm_t_cell in accordance to Guile's
9382 naming scheme for types.
9383
9384 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
9385 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
9386 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
9387 (scm_make_environment), eval.c (scm_closure), fports.c
9388 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
9389 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
9390 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
9391 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
9392 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
9393 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
9394 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
9395 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
9396 scm_alloc_cell to scm_cell.
9397
9398 * environments.c (core_environments_observe), gc.c
9399 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
9400 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
9401 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
9402 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
9403 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
9404 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
9405 (allocate_weak_vector): Renamed scm_alloc_double_cell to
9406 scm_double_cell.
9407
9408 2002-02-27 Stefan Jahn <stefan@lkcc.org>
9409
9410 * convert.i.c, convert.c: Better range checking.
9411
9412 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
9413
9414 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
9415 Windows (MinGW).
9416
9417 2002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
9418
9419 * Makefile.am: Update path to pre-inst-guile automake frag.
9420
9421 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9422
9423 * gc.c (scm_gc_sweep): Make it compile even when deprecated
9424 features are excluded.
9425
9426 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9427
9428 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
9429
9430 2002-02-25 Gary Houston <ghouston@arglist.com>
9431
9432 * convert.c: include <string.h> for convert_i.c.
9433
9434 2002-02-24 Rob Browning <rlb@defaultvalue.org>
9435
9436 * .cvsignore: add stamp-h1.
9437
9438 2002-02-21 Neil Jerram <neil@ossau.uklinux.net>
9439
9440 * unif.c (scm_array_to_list): Correct name, which had been
9441 accidentally changed to scm_t_arrayo_list!
9442
9443 2002-02-20 Mikael Djurfeldt <mdj@linnaeus>
9444
9445 * gc.c (scm_gc_sweep): Print an error message when aborting due to
9446 underflowing scm_mallocated.
9447
9448 2002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9449
9450 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
9451 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
9452 Reimplemented using the new scm_gc_malloc, etc., functions and
9453 deprecated.
9454
9455 2002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
9456
9457 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
9458 to `noinst_PROGRAMS'.
9459 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
9460 (noinst_PROGRAMS, noinst_SCRIPTS): New.
9461
9462 2002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9463
9464 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
9465 non-zero is returned from a port or smob free function.
9466 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
9467 scm_gc_register_collectable_memory,
9468 scm_gc_unregister_collectable_memory, scm_gc_malloc,
9469 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
9470
9471 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
9472 debug-malloc.c, dynl.c, environments.c, environments.h,
9473 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
9474 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
9475 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
9476 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
9477 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
9478 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
9479 appropriate. Return zero from smob and port free functions.
9480
9481 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
9482
9483 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
9484 messages while the GC is running.
9485 (scm_c_issue_deprecation_warning_fmt): New.
9486
9487 * fports.c (scm_setvbuf): Reset read buffer to saved values when
9488 it is pointing to the putback buffer.
9489
9490 2002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9491
9492 * gsubr.c (create_gsubr): On "too many args" error,
9493 also display arg count and name. Thanks to Bill Schottstaedt.
9494
9495 2002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
9496
9497 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
9498
9499 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
9500 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
9501 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
9502
9503 * guile-snarf-docs-texi.in: Bye bye.
9504
9505 2002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9506
9507 * symbols.c (scm_make_symbol): Fix typo in docstring.
9508
9509 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9510 scm_make_symbol): New prototypes.
9511
9512 2002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
9513
9514 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
9515 (SCM_SYMBOL_INTERNED_P): New.
9516 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
9517 SCM_MAKINUM since hash values can well be bignums.
9518 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
9519 This signals a interned symbol.
9520 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9521 scm_make_symbol): New.
9522
9523 * print.c (scm_iprin1): Print uninterned symbols unreadably.
9524
9525 2002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
9526
9527 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
9528 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
9529 Thanks to Dave Love.
9530
9531 2002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
9532
9533 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
9534 This might help to make unintended clashes less likely.
9535 (scm_string_to_symbol): Protect the string until the symbols is
9536 created.
9537
9538 2002-01-31 Stefan Jahn <stefan@lkcc.org>
9539
9540 * convert.c, convert.h, convert.i.c: New files containing C
9541 array to Scheme conversion helpers meant to be replacement
9542 functions for the deprecated gh interface.
9543
9544 * Makefile.am: Setup rules for new `convert.*' files.
9545
9546 2002-01-28 Stefan Jahn <stefan@lkcc.org>
9547
9548 * symbols.c (scm_c_symbol2str): New function, replacement for
9549 `gh_scm2newsymbol()'.
9550
9551 * strings.c (scm_c_substring2str): New function. Proper
9552 replacement for `gh_get_substr()'.
9553
9554 * socket.c: Include `stdint.h' if available for the `uint32_t'
9555 declaration.
9556
9557 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
9558 compiler warning).
9559
9560 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
9561
9562 2002-01-22 Neil Jerram <neil@ossau.uklinux.net>
9563
9564 Other changes unrelated to Elisp...
9565
9566 * eval.c (scm_m_if): Use s_if rather than repeating string literal
9567 "if".
9568 (comments): Fix a few typos.
9569 (scm_for_each): Add parentheses around oddly unparenthesized
9570 if/while conditions.
9571
9572 * read.c (scm_read_opts): Add full stop at end of doc for
9573 `keywords' option.
9574
9575 * script.c (scm_compile_shell_switches): Use scm_str2symbol
9576 instead of gh_symbol2scm.
9577
9578 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
9579 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
9580
9581 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
9582 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
9583
9584 First batch of changes for Elisp support...
9585
9586 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
9587 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
9588 throw.c, vectors.c, weaks.c: Add #include for lang.h.
9589
9590 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
9591 conditionalize compilation and initialization of Elisp support
9592 function.
9593
9594 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
9595 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
9596 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
9597 filesys.c (fill_select_type, retrieve_select_type), fluids.c
9598 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
9599 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
9600 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
9601 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
9602 options.c (change_option_setting, scm_options), posix.c
9603 (environ_list_to_c), print.c (scm_iprlist), throw.c
9604 (scm_exit_status), vectors.c (scm_vector), weaks.c
9605 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
9606
9607 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
9608 just SCM_FALSEP.
9609
9610 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
9611 of just SCM_BOOLP.
9612
9613 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
9614 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
9615 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
9616 (scm_m_atfop): Support function aliasing. Support both function
9617 args, which need transformation, and macro args, which do not.
9618 Add explanatory comments.
9619 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
9620 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
9621 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
9622 SCM_NULLP || SCM_NILP instead of checks against (removed)
9623 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
9624 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
9625
9626 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
9627 scm_m_while, scm_nil_eq): Commented out; I don't think we need
9628 these, but I don't want to remove them yet, just in case.
9629 (scm_init_lang): Define `%nil' variable on Scheme level to hold
9630 Elisp nil value.
9631
9632 * lang.h (SCM_NILP): Test against Elisp nil value instead of
9633 against (removed) scm_lisp_nil.
9634 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
9635 (SCM_NULL_OR_NIL_P): New.
9636
9637 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
9638 SCM_VALIDATE_NULL.
9639
9640 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
9641 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
9642 value).
9643
9644 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
9645 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
9646 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9647 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9648
9649 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9650 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9651 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9652 Numbering shifted down accordingly.
9653 (SCM_ELISP_NIL): New IFLAG.
9654
9655 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
9656
9657 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9658
9659 * eval.c: Removed outdated references to "everr". Improved some
9660 comments.
9661
9662 (scm_deval_args, deval_args): Renamed scm_deval_args to
9663 deval_args, since it is not part of the interface.
9664
9665 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9666 use references to debug.vect[0] before it exists. Add parentheses
9667 to switch statement.
9668
9669 * goops.h: Added local emacs variables.
9670
9671 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9672
9673 * eval.[ch] (scm_deval_args): Made static.
9674
9675 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9676 test.
9677
9678 * strings.c (scm_c_string2str): Clarified comment. Replaced
9679 THINKME by FIXME for uniformness. Removed question about whether
9680 arguments need to be protected from garbage collection: Arguments
9681 must be protected as any other variable.
9682
9683 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9684
9685 * procs.h (SCM_CLOSURE_BODY): New Macro.
9686
9687 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9688 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9689 get_slot_value, set_slot_value), procs.c
9690 (scm_procedure_documentation), sort.c (closureless), stacks.c
9691 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9692 SCM_CLOSURE_BODY.
9693
9694 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9695
9696 2001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9697
9698 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9699 use "cp" instead.
9700
9701 2001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9702
9703 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9704 everywhere.
9705
9706 * continuations.c (scm_make_continuation): Do not retain the
9707 throw_value when the continuation is invoked.
9708
9709 2001-12-08 Stefan Jahn <stefan@lkcc.org>
9710
9711 * strings.c (scm_c_string2str): New function. Converts a
9712 given Scheme string into a C string. Also put in two
9713 THINKME's regarding the malloc policy for the missing converter
9714 routines.
9715
9716 2001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9717
9718 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9719 gh_symbol2scm.
9720
9721 2001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9722
9723 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9724 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9725
9726 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9727 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9728 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9729 macros.
9730
9731 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9732
9733 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9734 SCM_GC_CELL_* macros when accessing free cells.
9735
9736 2001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9737
9738 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
9739 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
9740 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9741 * strings.h (SCM_MAKE_STRING_TAG): New.
9742 * procs.h (SCM_MAKE_CCLO_TAG): New.
9743 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9744
9745 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9746 !SCM_ENABLE_DEPRECATED.
9747
9748 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9749 New.
9750
9751 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9752 signal handlers are allowed to divert the flow of control. Call
9753 scm_system_async_mark_from_signal_handler instead of
9754 scm_system_async_mark.
9755
9756
9757 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9758 scm_alloc_double_cell in their place.
9759
9760 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9761 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9762 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9763 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9764 scm_deprecated_newcell and scm_deprecated_newcell2.
9765
9766 gc.c (scm_tc16_allocated): Only define when including deprecated
9767 features.
9768 (scm_debug_newcell, scm_debug_newcell2): Removed.
9769 (scm_init_storage): Do not initialize scm_tc16_allocated.
9770 (scm_init_gc): Do it here.
9771 (allocated_mark): New, from old code.
9772 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9773
9774 * inline.c, inline.h: New files.
9775 * Makefile.am: Added them in all the right places.
9776
9777 * _scm.h: Include "libguile/inline.h".
9778
9779 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9780 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9781 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9782 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9783 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9784 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9785 scm_alloc_double_cell, respectively.
9786
9787 2001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9788
9789 * modules.c (scm_c_use_module): Adapt to changes to
9790 `process-use-modules'.
9791
9792 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9793
9794 * numbers.c (scm_divide): Fix more division by zero errors.
9795
9796 2001-11-21 Gary Houston <ghouston@arglist.com>
9797
9798 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9799 obsolete. autogen.sh says:
9800 invalid unused variable name: `OMIT_DEPENDENCIES'
9801
9802 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9803
9804 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9805 reporting the bug.
9806
9807 2001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9808
9809 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9810 Thanks to Eric Gillespie, Jr!
9811
9812 2001-11-21 Stefan Jahn <stefan@lkcc.org>
9813
9814 * win32-socket.c (getservent, setservent, endservent,
9815 getprotoent, setprotoent, endprotoent): New functions.
9816 Appropriate replacements for M$-Windows.
9817
9818 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9819 these definitions for GUILE_DEBUG.
9820
9821 * net_db.c: Include "win32-socket.h" if compiling with a native
9822 M$-Windows compiler. Include some pieces of code (protoent and
9823 servent interface) protected by HAVE_* macros when using a
9824 native M$-Windows compiler.
9825
9826 2001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9827
9828 * modules.c (scm_c_export): Do nothing when the first argument is
9829 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9830
9831 2001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9832
9833 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9834 also include `buildstamp'.
9835
9836 2001-11-18 Rob Browning <rlb@defaultvalue.org>
9837
9838 * version.c
9839 (s_scm_major_version): use SCM_MAJOR_VERSION.
9840 (s_scm_minor_version): use SCM_MINOR_VERSION.
9841 (s_scm_micro_version): use SCM_MICRO_VERSION.
9842 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9843 SCM_MICRO_VERSION.
9844
9845 * version.h.in
9846 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9847 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9848 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9849
9850 2001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9851
9852 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9853 Rewrite docstrings without reference to substring-move-left/right,
9854 since the latter no longer exist.
9855
9856 2001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9857
9858 * eval.c: Removed bogus comment about acros.
9859
9860 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9861 Minimize scope of local variable. Eliminate dependency on
9862 macro DEBUG_EXTENSIONS.
9863
9864 (s_splicing): New error message string.
9865
9866 (scm_m_body): Issue 'bad body' message rather than 'missing
9867 expression' message.
9868
9869 (scm_m_quote): Eliminate unnecessary copying.
9870
9871 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9872 checking of the body to scm_m_body.
9873
9874 (scm_m_do): Move comment to function header. Rename arg1 to
9875 binding. Made the code a bit easier to read.
9876
9877 (evalcar): Removed.
9878
9879 (iqq): Added a comment. Changed the depth parameter to
9880 unsigned. Use size_t for vector lengths. Make sure vector object
9881 is gc protected as long as its contents are read. Add some syntax
9882 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9883 control structure a bit.
9884
9885 (scm_m_delay): Added comment about the implementation of
9886 scm_m_delay.
9887
9888 (scm_m_define): Add comment about guile's currying define
9889 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9890 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9891
9892 (scm_m_letrec1): Removed. Part of the functionality is taken
9893 over by the new function 'transform_bindings'.
9894
9895 (transform_bindings): New function. Takes over some of the
9896 functionality of removed function 'scm_m_letrec1', namely to split
9897 a list of bindings into a reversed list of variables and a list of
9898 initializers.
9899
9900 (scm_m_letrec): Call 'transform_bindings'.
9901
9902 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9903 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9904 test. Use 'transform_bindings'. Fixed scoping error with named
9905 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9906 Jerram for suggesting the fix). Cleaned up the control structure
9907 a bit.
9908
9909 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9910 unnecessary consing. Eliminated unnecessary
9911 SCM_DEFER/ALLOW_INTS.
9912
9913 (SCM_CEVAL): Un-obfuscated some loops.
9914
9915 2001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9916
9917 * gc.h (scm_unhash_name): Old declaration removed.
9918
9919 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9920 @code{primitive-eval}.
9921
9922 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9923 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9924 Change @deffnx lines in docstrings to say {Scheme Procedure}
9925 rather than primitive or procedure.
9926
9927 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9928 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9929 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9930 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9931 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9932 (scm_string_split, scm_string_ci_to_symbol), strings.c
9933 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9934 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9935 Docstring fixes and improvements reflecting edits that have been
9936 made in the reference manual source.
9937
9938 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9939 scm_object_property, scm_set_object_property_x): Remove invalid
9940 @deffnx lines for corresponding procedure property primitives.
9941
9942 These changes add a @deffnx C function declaration and function
9943 index entries for each Guile primitive to the copy of the doc
9944 snarf output that is used for reference manual synchronization.
9945 Online help is unchanged.
9946
9947 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9948 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9949 name to SCM_SNARF_DOCS.
9950
9951 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9952 snarf-check-and-output-texi.
9953
9954 * Makefile.am (guile-procedures.texi): New rule.
9955 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9956 Changed so that the last stage of doc snarfing is now performed
9957 twice, once to produce guile-procedures.txt for online help, and
9958 once to produce guile.texi for reference manual synchronization.
9959
9960 2001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9961
9962 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9963 safely usable as a single statement followed by a ';', for example
9964 in an if statement.
9965
9966 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9967
9968 2001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9969
9970 * random.c (scm_random_solid_sphere_x,
9971 scm_random_hollow_sphere_x): Correct "shere" typos.
9972
9973 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9974
9975 * version.c (scm_version): Update docstring to include
9976 `micro-version'.
9977
9978 2001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9979
9980 * modules.c (scm_c_export): Call va_end after collecting the
9981 symbols.
9982
9983 * strop.h, strop.c (scm_substring_move_left_x,
9984 scm_substring_move_right_x): Removed.
9985
9986 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9987 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9988 configure does.
9989
9990 2001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9991
9992 * numbers.c: Document macros to define when including
9993 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9994 now rely on SIZEOF_ macros that have been figured out at
9995 configure time.
9996
9997 * num2integral.i.c: Adapt to new interface.
9998 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9999 target type by casting it and checking whether it is still the
10000 same. Do not try to handle bignums for integral types that are
10001 smaller than fixnums. When handling bignums, collect the
10002 magnituse first into a unsigned type, and correctly check for
10003 overflow.
10004 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
10005 only -MIN_VALUE can still be negative of all negative numbers (in
10006 twos-complement).
10007
10008 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
10009
10010 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
10011 HAVE_LONG_LONG depending on whether their size is non-zero.
10012
10013 2001-11-11 Thien-Thi Nguyen <ttn@glug.org>
10014
10015 * strop.c (scm_string_null_p): Docfix; nfc.
10016 Thanks to Scott Lenser.
10017
10018 2001-11-07 Neil Jerram <neil@ossau.uklinux.net>
10019
10020 * extensions.c (scm_load_extension): Canonicalize docstring
10021 whitespace.
10022
10023 * unif.c (scm_uniform_array_write), ports.c
10024 (scm_current_output_port, scm_force_output), dynwind.c
10025 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
10026 filesys.c (scm_open, scm_lstat), struct.c
10027 (scm_make_struct_layout), random.c (scm_random,
10028 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
10029 (scm_i_index): Remove superfluous whitespace from end of docstring
10030 lines.
10031
10032 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
10033 strings.c (scm_make_string), variable.c (scm_make_variable,
10034 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
10035 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
10036 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
10037 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
10038 newline at end of docstrings.
10039
10040 * modules.c (scm_set_current_module): Add missing newline to
10041 docstring.
10042
10043 2001-11-07 Stefan Jahn <stefan@lkcc.org>
10044
10045 * win32-socket.[ch]: New files. Defines Winsock-API error codes
10046 and makes them available through Guile. That is because the
10047 Winsock-API does not store its errors in `errno' and thus cannot
10048 return error messages via `strerror (errno)'.
10049
10050 * socket.c (scm_init_socket): Initialize `win32-socket' part
10051 here under M$-Windows.
10052
10053 * numbers.h: Added missing declaration of
10054 `scm_sys_check_number_conversions()'.
10055
10056 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
10057 and use in `(strerror)' and `(system-error)'.
10058
10059 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
10060 `win32-socket.[ch]' to extra source and header files.
10061
10062 2001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
10063
10064 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
10065 a call to turn-on-debugging when --debug has been given instead of
10066 turning it on directly. Also, handle new `--no-debug' option,
10067 which might suppress the call to turn-on-debugging.
10068
10069 2001-11-05 Stefan Jahn <stefan@lkcc.org>
10070
10071 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
10072
10073 2001-11-04 Stefan Jahn <stefan@lkcc.org>
10074
10075 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
10076 here (was at guile_LDADD) which describes the dependency
10077 correctly and allows a clean build on Win32.
10078
10079 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
10080 into FOO.
10081
10082 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
10083 import macros for external libraries (libcrypt, libqthreads,
10084 libreadline and libregex).
10085
10086 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
10087
10088 * posix.c (flock): Added support for flock() in M$-Windows.
10089
10090 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
10091 of __SCM_IMPORT__.
10092
10093 * fports.c (getflags): Differentiate reading and writing pipes
10094 descriptors.
10095
10096 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
10097 M$-Windows.
10098
10099 * coop.c (coop_condition_variable_timed_wait_mutex): Use
10100 conditionalized error code if `ETIMEDOUT' is not available.
10101 (scm_thread_usleep): Remove bogus declaration of `struct timeval
10102 timeout'.
10103
10104 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
10105 belongs. That is because NO_PREPRO_MAGIC gets undefined after
10106 each inclusion of `num2integral.i.c'.
10107 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
10108
10109 2001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
10110
10111 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
10112 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
10113
10114 2001-11-02 Mikael Djurfeldt <mdj@linnaeus>
10115
10116 * print.c (scm_iprin1): Mark print state as revealed when
10117 dispatching to generic write or display.
10118
10119 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
10120
10121 2001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
10122
10123 Support for native Win32. Thanks to Stefan Jahn!
10124
10125 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
10126 and win32-dirent.h to extra source and header files. These
10127 include the uname() and the POSIX dirent interface implementation
10128 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
10129 linkers which do not allow unresolved symbols inside shared
10130 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
10131 dependency.
10132
10133 * __scm.h: Defined SCM_API. This macro gets prepended to all
10134 function and data definitions which should be exported or imported
10135 in the resulting dynamic link library in the Win32 port.
10136
10137 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
10138 chars.h, continuations.h, coop-defs.h, coop-threads.h,
10139 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
10140 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
10141 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
10142 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
10143 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
10144 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
10145 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
10146 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
10147 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
10148 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
10149 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
10150 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
10151 vports.h, weaks.h:
10152 Prefixed each each exported symbol with SCM_API.
10153
10154 * continuations.c: Added comment about the use of the extern
10155 declarations of {get,set}context() functions used in the ia64 port.
10156
10157 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
10158 is meant to be a `unsigned long *'.
10159
10160 * filesys.c: Include `direct.h' if possible. Use local
10161 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
10162 macros for M$-Windows. Implementation of `fstat_Win32()' which is
10163 able to differentiate between sockets and other file descriptors.
10164 Use this function as wrapper in `scm_fstat()'. Fixed typo in
10165 `scm_dirname()'.
10166
10167 * fports.c: Include `io.h' is possible. Put `*fp' into referring
10168 statement block in `scm_fport_buffer_add()'.
10169 Some corrections in `getflags()'.
10170
10171 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
10172
10173 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
10174 build on Win32. Disable preloaded symbols on Win2 platforms.
10175
10176 * ioext.c, ports.c: Include `io.h' is possible.
10177
10178 * mkstemp.c: Include `process.h' is possible.
10179
10180 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
10181 too.
10182 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
10183
10184 * posix.c: Remove unnecessary dirent includes and defines. Include
10185 local `win32-uname.h' for MinGW. Extern declaration of
10186 `mkstemp()' for systems where it does not exists. Make
10187 `getlogin()' available on M$-Windows.
10188
10189 * scmsigs.c: Made `usleep()' avalable on MinGW.
10190
10191 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
10192
10193 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
10194
10195 * win32-uname.c: Include "win32-uname.h", not "uname.h".
10196
10197 2001-10-28 Mikael Djurfeldt <mdj@linnaeus>
10198
10199 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
10200 Don't apply scm_uniform_vector_length on arrays.
10201
10202 2001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
10203
10204 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
10205 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
10206 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
10207 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
10208 scm_list_<n> over scm_cons[2]?.
10209
10210 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
10211 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
10212 SCM_C[AD][AD]R instead of explicit form.
10213
10214 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
10215 comparison parameters.
10216
10217 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
10218 !SCM_NULLP instead of SCM_NIMP.
10219
10220 (scm_m_case): Don't copy the form. Renamed proc to clause and
10221 minimized its scope. Renamed x to clauses. Removed side
10222 effecting operation from macro call.
10223
10224 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
10225 minimized its scope. Renamed x to clauses. Minimized the scope
10226 of variable 'len'. Make sure the else clause is treated specially
10227 even in case of '=>' occurences. Don't change the else to #t in
10228 order to be able to distinguish this case in the evaluator. Leave
10229 type checking of the recipient to the evaluator.
10230
10231 (scm_c_improper_memq): Made the comment somewhat clearer.
10232
10233 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
10234 test for SCM_IM_LET at the place of the formal parameters.
10235 Simplified the formal parameter checking.
10236
10237 (scm_m_letstar): Added Comment. Renamed proc to bindings.
10238 Renamed arg1 to binding and minimized its scope. Eliminated
10239 unnecessary consing.
10240
10241 (scm_m_do): Renamed proc to bindings. Minimized the scope of
10242 variable 'len'.
10243
10244 (build_binding_list): New static function.
10245
10246 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
10247 Further, split up the 'letrec' unmemoizing code to the
10248 corresponding parts for 'do', 'let' and 'letrec', adding comments
10249 to each form. Cleanup the handling of the do form (This removes
10250 some *real* code :-).
10251
10252 (SCM_CEVAL): Removed side effecting operation from macro call.
10253 Handle the 'else clause of the 'cond form specially - the symbol
10254 'else is not replaced with #t any more.
10255
10256 2001-10-14 Gary Houston <ghouston@arglist.com>
10257
10258 * version.c (scm_version): use sprintf instead of snprintf,
10259 for portability. thanks to Bill Schottstaedt.
10260
10261 2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
10262
10263 * read.c (scm_lreadr): When user-defined hash procedure returns
10264 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
10265 an exception. (This prevents parsing of uniform vectors from
10266 interfering with parsing of numbers.)
10267
10268 2001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
10269
10270 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
10271 PTRDIFF_MIN. Thanks to Ken Raeburn.
10272
10273 2001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
10274
10275 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
10276
10277 * eval.c (scm_m_atbind): First try to find the variable without
10278 defining it locally; when it has not been found, define it
10279 locally.
10280
10281 * modules.c (module_variable): Pass over variables that exist but
10282 are unbound.
10283
10284 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10285
10286 * backtrace.c (display_backtrace_file_and_line): Only use
10287 scm_basename when POSIX support is compiled in. Thanks to Chris
10288 Cramer.
10289
10290 2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10291
10292 * numbers.c (mem2uinteger): Return number read so far when coming
10293 across a hexdigit after having read a # or if not reading a hex
10294 value. This will enable the calling code to correctly handle
10295 forms like 1e2. (The background is, that the exponent markers d,
10296 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
10297 providing this patch.
10298
10299 (mem2complex): Fix erroneous double-negation. Now, numbers like
10300 1-i will be read correctly.
10301
10302 2001-10-12 Mikael Djurfeldt <mdj@linnaeus>
10303
10304 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
10305
10306 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
10307
10308 2001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
10309
10310 * print.c (scm_print_state_vtable, print_state_pool):
10311 Initialize. These variables are now registered as gc roots.
10312
10313 (scm_current_pstate): Update documentation.
10314
10315 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
10316 scm_prin1, scm_init_print): print_state_pool is registered as a
10317 gc root and thus does not need to be protected by a surrounding
10318 pair any more.
10319
10320 (make_print_state): The car of print_state_pool no longer holds
10321 the scm_print_state_vtable.
10322
10323 (scm_current_pstate, scm_make_print_state, print_circref,
10324 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
10325 SCM_N<foo>.
10326
10327 (scm_prin1): When building lists, prefer scm_list_<n> over
10328 scm_cons[2]?.
10329
10330 (scm_iprlist): Removed a redundant SCM_IMP test.
10331
10332 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
10333
10334 2001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10335
10336 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
10337
10338 (scm_memcons, scm_mem_to_proc): When building lists, prefer
10339 scm_list_<n> over scm_cons[2]?.
10340
10341 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
10342
10343 (scm_procedure_name): Use SCM_CADR instead of explicit form.
10344
10345 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
10346 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
10347 for some reason his patch didn't make it into the cvs.
10348
10349 2001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
10350
10351 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
10352 little bit - should even be somewhat more accurate now.
10353
10354 2001-10-08 Rob Browning <rlb@defaultvalue.org>
10355
10356 * gc.c: support ia64 register backing store.
10357 (SCM_MARK_BACKING_STORE): new macro.
10358
10359 * continuations.h: support ia64 register backing store.
10360 (struct scm_t_contregs): add ia64 register backing store.
10361
10362 * continuations.c: support ia64 register backing store.
10363 (continuation_mark): mark ia64 register backing store.
10364 (continuation_free): free ia64 register backing store.
10365 (scm_make_continuation): capture ia64 register backing store.
10366 (copy_stack_and_call): copy ia64 register backing store.
10367
10368 2001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10369
10370 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
10371 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
10372 instead of SCM_NIMP to test for that case.
10373
10374 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
10375 scm_t_bits instead of long.
10376
10377 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10378
10379 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
10380 SCM_T_SIGNED_BITS_MIN): New.
10381 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
10382 Use them to make these macros computable by the preprocessor.
10383
10384 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
10385 whether the integral type fits in a fixnum, not the compiler.
10386 This removes a spurious compiler warning. Also, honor the
10387 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
10388 needed for `long long's.
10389
10390 * numbers.c: Define NO_PREPRO_MAGOC when including
10391 num2integral.c.i for `long long' and `signed long long'.
10392
10393 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
10394
10395 These changes fixes a race condition in the Guile coop - pthread
10396 compatibility code.
10397
10398 * coop.c (mother_awake_p): New variable.
10399 (coop_create): Set mother_awake_p before creating or signalling
10400 mother; wait until mother is going to sleep before returning.
10401 (mother): Reset mother_awake_p before going to sleep.
10402
10403 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10404
10405 * options.c (protected_objects, scm_init_options): The content of
10406 protected_objects is now protected from garbage collection using
10407 scm_gc_register_root instead of scm_permanent_object.
10408
10409 (get_option_setting): New static function that computes an option
10410 setting as it was formerly done in the function scm_options.
10411
10412 (get_documented_option_setting): New static function that
10413 returns option documentation as it was formerly done in the
10414 function scm_options. Note that documentation C strings are no
10415 longer precomputed into SCM objects. Instead, they are converted
10416 into SCM strings every time get_documented_option_setting is
10417 called.
10418
10419 (change_option_setting): New static functions that modifies the
10420 option setting as it was formerly done in the function
10421 scm_options. The function is now exception safe, i. e. won't
10422 cause a memory leak when interrupted. Further, only non-immediate
10423 option values are added to the protection list.
10424
10425 (scm_options): This function now has only the purpose to dispatch
10426 to to get_option_setting, get_documented_option_setting or
10427 change_option_setting, depending on the arguments given to
10428 scm_options.
10429
10430 (scm_init_opts): Don't convert documentation C strings into SCM
10431 strings. Further, don't protect any object values: They _must_
10432 be immediate values, otherwise there is no guarantee that they
10433 have not been collected before anyway.
10434
10435 * options.[ch] (scm_t_option): Made type unsigned, name into a
10436 constant char* and val into a scm_t_bits type.
10437
10438 (scm_options, scm_init_opts): The number of options is guaranteed
10439 to be larger or equal to zero. Thus, the type is changed to
10440 unsigned.
10441
10442 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10443
10444 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
10445 testing an unsigned value for being >= 0.
10446
10447 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10448
10449 * numbers.h: Removed old comment about using SCM_CAR to access
10450 non-pair cells.
10451
10452 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
10453 the return value is signed. Thanks to Brian Crowder for the bug
10454 report.
10455
10456 (SCM_SRS): Avoid unnecessary casting and don't unpack input
10457 values. With this patch, SCM_SRS can be safely used for other
10458 types than scm_t_signed_bits. However, it should still better be
10459 an internal macro and thus be renamed to SCM_I_SRS.
10460
10461 (SCM_MAKINUM, SCM_INUM): Use proper casting.
10462
10463 2001-10-03 Gary Houston <ghouston@arglist.com>
10464
10465 * continuations.h, unif.h: in the descriptions of the bit patterns
10466 of the heap cells, make bit 0 the least significant.
10467
10468 2001-09-25 Thien-Thi Nguyen <ttn@glug.org>
10469
10470 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
10471 Thanks to Golubev I. N.
10472
10473 2001-09-25 Gary Houston <ghouston@arglist.com>
10474
10475 * ports.c (scm_drain_input): extended the docstring. thanks to
10476 Alex Schroeder and Thien-Thi Nguyen.
10477
10478 2001-09-23 Mikael Djurfeldt <mdj@linnaeus>
10479
10480 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
10481 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
10482 macros. (The NUM names might soon change.)
10483
10484 * numbers.h: Added missing declarations.
10485
10486 2001-09-22 Mikael Djurfeldt <mdj@linnaeus>
10487
10488 * Makefile.am: Distribute num2float.i.c.
10489
10490 * num2float.i.c: New file, multiply included by numbers.c, used
10491 to "templatize" the float <-> num conversion routines.
10492
10493 * numbers.c: New functions: scm_num2float, scm_float2num,
10494 scm_num2double, scm_double2num.
10495
10496 2001-09-21 Rob Browning <rlb@defaultvalue.org>
10497
10498 * .cvsignore: really add version.h
10499
10500 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
10501 Otherwise it fails on the alpha. However, we might rather choose
10502 this size conditionally.
10503
10504 * numbers.c (scm_gcd): change "k" to a long from an int.
10505 Otherwise it fails on the alpha. However, we might rather choose
10506 this size conditionally.
10507
10508 * error.c (scm_wta): coerce char* to intptr_t before int
10509 assignment.
10510
10511 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
10512 int.
10513
10514 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
10515
10516 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10517
10518 * numbers.c (scm_integer_expt): Accept inexact integer in second
10519 argument. (Thanks to Bill Schottstaedt.)
10520
10521 2001-09-20 Rob Browning <rlb@defaultvalue.org>
10522
10523 * .cvsignore: add version.h
10524
10525 * versiondat.h.in: removed (obsolete).
10526
10527 * version.h.in: renamed from version.h.
10528 (SCM_GUILE_MAJOR_VERSION): new public macro.
10529 (SCM_GUILE_MINOR_VERSION): new public macro.
10530 (SCM_GUILE_MICRO_VERSION): new public macro.
10531
10532 * version.h: renamed to version.h.in.
10533
10534 * version.c
10535 (scm_major_version): support integer *_VERSION macros.
10536 (scm_minor_version): support integer *_VERSION macros.
10537 (scm_micro_version): support integer *_VERSION macros.
10538 (scm_version): support integer *_VERSION macros.
10539
10540 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10541
10542 * error.c, error.h: Made error keys globally accessible.
10543 Applications might want to test for these or use them in a direct
10544 call to scm_error.
10545
10546 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
10547 routines are passed an inexact. This change in behavior is
10548 motivated by concordance with R5RS: It is more common that a
10549 primitive doesn't want to accept an inexact for an exact.
10550
10551 2001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10552
10553 The following patch partially undoes my patch from 2001-06-30,
10554 where I added the function scm_gc_mark_cell_conservatively. The
10555 function is buggy, since it breaks guile during conservative
10556 marking if a pointer on the stack points directly into the list of
10557 free cells on the heap: With conservative cell marking this will
10558 cause the whole free list to be scanned and marked - boom!
10559
10560 * gc.c (allocated_mark, MARK, heap_segment,
10561 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
10562 (scm_gc_mark_cell_conservatively): Remove function
10563 scm_gc_mark_cell_conservatively and update the corresponding
10564 comments and uses accordingly. Thanks to Christopher Cramer for
10565 the patch. (Minor corrections by me.)
10566
10567 2001-09-15 Gary Houston <ghouston@arglist.com>
10568
10569 * root.h (scm_root_state): removed the continuation_stack and
10570 continuation_stack_ptr members, which have no apparent purpose.
10571 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
10572 removed.
10573
10574 * root.c (root_mark), init.c (restart_stack, start_stack), gc
10575 (scm_igc): remove all references to contination_stack and
10576 continuation_stack_ptr, avoiding allocation of a vector and
10577 useless processing during gc.
10578
10579 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10580
10581 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
10582
10583 (TCONC_IN): Make sure that the cell word 0 is initialized last.
10584
10585 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
10586
10587 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
10588
10589 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
10590 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
10591
10592 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10593
10594 * guardians.c (mark_dependencies_in_tconc,
10595 whine_about_self_centered_zombies, scm_init_guardians): Register
10596 the static global variable `self_centered_zombies' via
10597 scm_gc_register_root, to make some cdr-ing unnecessary.
10598
10599 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10600
10601 * backtrace.c (display_backtrace_file,
10602 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
10603 values, use SCM_FALSEP when comparing SCM values against #f.
10604 Thanks to Rob Browning for the bug report.
10605
10606 2001-09-12 Martin Baulig <martin@home-of-linux.org>
10607
10608 * strings.[ch] (scm_str2string): New function.
10609
10610 2001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
10611
10612 * gc.c (scm_done_free): Always subtract size from scm_mallocated
10613 when computing nm, even if it's negative.
10614 (scm_must_malloc): Abort on overflow of scm_mtrigger.
10615 (scm_must_realloc): Likewise.
10616
10617 2001-09-01 Michael Livshin <mlivshin@bigfoot.com>
10618
10619 * numbers.c (scm_sys_check_number_conversions): new function,
10620 defined if Guile is compiled in debugging mode. currently checks
10621 `scm_num2ulong', should check much much more.
10622
10623 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
10624 unsigned, ensure that it's positive. thanks to Martin Baulig!
10625
10626 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10627
10628 * __scm.h: Added new section about compile time selectable
10629 features.
10630
10631 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
10632 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
10633 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
10634 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
10635 Removed.
10636
10637 * deprecation.c (scm_include_deprecated_features): Simplified.
10638
10639 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
10640 `SCM_IMP' instead of `!SCM_CELLP´.
10641
10642 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
10643 Extract side-effecting operations from macros.
10644
10645 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
10646 scm_top_level_lookup_closure_var and scm_system_transformer.
10647
10648 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10649
10650 (heap_segment): Use CELL_P instead of SCM_CELLP.
10651
10652 * init.c (start_stack): Don't initialize
10653 scm_top_level_lookup_closure_var and scm_system_transformer.
10654
10655 * modules.c (scm_set_current_module): Don't access
10656 scm_top_level_lookup_closure_var and scm_system_transformer.
10657
10658 (scm_sym2var): Don't call scm_variable_set_name_hint.
10659
10660 (scm_post_boot_init_modules): Removed deprecated initializations.
10661
10662 * print.c (scm_ipruk): Don't access cell contents of non cells.
10663
10664 * strings.c (scm_string_set_x): All strings are writable.
10665
10666 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10667 type. There is only one string type now.
10668
10669 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10670
10671 * tags.h: Remove comments about two different string types.
10672
10673 (SCM_CELLP, SCM_NCELLP): Deprecated.
10674
10675 * variable.c (make_variable): Remove code variant for vcells.
10676
10677 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10678 SCM_VARIABLE_LOC): Remove code variant for vcells.
10679
10680 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10681 SCM_ENABLE_DEPRECATED with the logic reversed.
10682
10683 * dynl.c (moddata, registered_mods), dynl.[ch]
10684 (scm_register_module_xxx, scm_registered_modules,
10685 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10686 (*top-level-lookup-closure*), eval.[ch]
10687 (scm_top_level_lookup_closure_var, scm_system_transformer,
10688 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10689 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10690 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10691 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10692 scm_unprotect_object), modules.c (root_module_lookup_closure,
10693 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10694 beautify_user_module_x_var, try_module_autoload_var,
10695 scm_module_full_name), modules.[ch] (scm_the_root_module,
10696 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
10697 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
10698 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10699 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10700 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10701 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10702 scm_make_shared_substring), tags.h (scm_tc7_substring,
10703 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10704 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10705 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10706 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10707 Removed.
10708
10709 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10710 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10711 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10712 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10713 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10714 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10715 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10716 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10717 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10718 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10719 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10720 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10721 (setzone, scm_strftime, scm_strptime), vports.c
10722 (scm_make_soft_port): Remove calls to
10723 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10724 gone, all strings are 0-terminated anyway.
10725
10726 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10727 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10728 double inclusion of the same headers to the SCM_<filename>_H
10729 format.
10730
10731 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10732 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10733 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10734 any more.
10735
10736 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10737 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10738 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10739 !SCM_<foo> over SCM_N<foo>.
10740
10741 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10742
10743 * Makefile.am: Remove references to symbols-deprecated.c.
10744
10745 * symbols.c (scm_init_symbols): Don't initialize deprecated
10746 symbol functions.
10747
10748 * symbols-deprecated.c: Removed.
10749
10750 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10751 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10752 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10753 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10754 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10755 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10756 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10757 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10758 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10759 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10760 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10761 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10762 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10763 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10764 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10765 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10766 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10767 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10768 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10769 scm_intern0, scm_sysintern, scm_sysintern0,
10770 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10771 scm_string_to_obarray_symbol, scm_intern_symbol,
10772 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10773 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10774 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10775 vectors.[ch] (scm_vector_set_length_x): Removed.
10776
10777 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10778 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10779 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10780 Renamed the macros that are defined to inhibit double inclusion of
10781 the same headers to the SCM_<filename>_H format.
10782
10783 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10784 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10785 SCM_N<foo>.
10786
10787 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10788
10789 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10790 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10791 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10792 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10793 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10794 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10795 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10796 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10797 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10798 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10799 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10800 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10801
10802 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10803 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10804 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10805 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10806 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10807 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10808 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10809 double inclusion of the same headers to the SCM_<filename>_H
10810 format.
10811
10812 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10813 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10814 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10815 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10816 !SCM_<foo> over SCM_N<foo>.
10817
10818 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10819
10820 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10821 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10822 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10823 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10824 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10825 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10826 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10827 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10828 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10829 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10830 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10831 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10832 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10833 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10834 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10835 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10836 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10837 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10838 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10839 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10840 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10841 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10842 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10843 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10844 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10845 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10846 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10847 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10848 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10849 the macros that are defined to inhibit double inclusion of the
10850 same headers to the SCM_<filename>_H format.
10851
10852 2001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10853
10854 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10855 "scm_t_portable" with "scm_port_table" which was an artifact from
10856 the great "scm_*_t -> scm_t_" renaming.
10857
10858 2001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10859
10860 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10861 used; nfc. Thanks to Bill Schottstaedt.
10862
10863 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10864 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10865 Thanks to Chris Cramer.
10866
10867 2001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10868
10869 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10870
10871 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10872 dynamic scope.
10873 * dynwind.h (scm_swap_bindings): Declare.
10874 * dynwind.c (scm_swap_bindings): Make non-static.
10875
10876 2001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10877
10878 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10879 doing exactly nothing about them). thanks Neil!
10880
10881 2001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10882
10883 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
10884
10885 2001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10886
10887 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10888 (proto) in the case when either `GUILE_DEBUG' or
10889 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10890
10891 (map_free_list): Fix typo: Ref `f' correctly.
10892
10893 Thanks to Chris Cramer.
10894
10895 2001-08-15 Rob Browning <rlb@defaultvalue.org>
10896
10897 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10898 variables.
10899 (libpath.h): change libguileversion to libguileinterface.
10900
10901 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10902
10903 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10904 ChangeLog-2000. Thanks to Daniel Skarda!
10905
10906 2001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10907
10908 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10909 do it from the Makefile.
10910
10911 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10912 are of a reasonable size.
10913
10914 2001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10915
10916 * stacks.c (scm_make_stack): Improve docstring by explaining use
10917 of cutting args.
10918
10919 2001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10920
10921 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10922 scm_char_whitespace_p, scm_char_upper_case_p,
10923 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10924 characters to fulfill isascii in addition to the primary
10925 predicate.
10926
10927 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10928
10929 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10930 scm_istr2flo, scm_istring2number): Removed.
10931
10932 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10933 SCM_SLOPPY_<foo>.
10934
10935 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10936 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10937 Added.
10938
10939 (scm_string_to_number): Use new number parser.
10940
10941 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10942 handles complex numbers.
10943
10944 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10945 SCM_<foo>_H.
10946
10947 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10948 SCM_N<pred>.
10949
10950 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10951
10952 (scm_i_mem2number): Added.
10953
10954 (scm_exact_to_inexact): Changed signature.
10955
10956 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10957 here instead of within scm_i_mem2number. Call scm_i_mem2number
10958 instead of scm_istr2int and scm_istring2number.
10959
10960 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10961
10962 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10963 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10964 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10965 !SCM_<pred> over SCM_N<pred>.
10966
10967 (scm_eval_body): Remove side effecting code from macro call.
10968
10969 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10970 SCM_NIMP test.
10971
10972 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10973
10974 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10975
10976 2001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10977
10978 Removed vcell slot from structs.
10979
10980 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10981 subsequent indices.
10982
10983 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10984 zero. Use scm_vtable_index_layout instead of "0" when accessing
10985 said slot.
10986 (scm_init_struct): Remove vcell slot layout code from
10987 required_vtable_fields.
10988
10989 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10990
10991 * goops.c (build_class_class_slots): Removed vcell slot
10992 definition.
10993
10994 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10995 Removed vcell slot layout code.
10996 (scm_si_vcell): Removed.
10997
10998 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10999
11000 "Glocs" have been removed.
11001
11002 * tags.h: Update tag system docs.
11003 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
11004 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
11005 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
11006 or SCM_NCONSP, respectively.
11007
11008 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
11009 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
11010 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
11011
11012 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
11013 tell glocs from structs.
11014
11015 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
11016
11017 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
11018 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
11019 instead of with glocs.
11020 (EVALCAR): Do not test for glocs.
11021 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
11022 condition.
11023 (scm_unmemocar): Do not handle glocs.
11024 (scm_m_atfop): Memoize as a variable, not as a gloc.
11025 (scm_eval_args, scm_deval_args): Do not handle glocs.
11026 (scm_ceval, scm_deval): Likewise.
11027
11028 * eval.h (SCM_XEVALCAR): Do not test for glocs.
11029 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
11030 Removed.
11031
11032 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
11033
11034 * dynwind.c (scm_swap_bindings): Likewise.
11035 (scm_dowinds): Updated to recognize lists of variables instead of
11036 lists of glocs.
11037
11038 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
11039
11040
11041 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
11042 where it is needed.
11043
11044 2001-07-25 Gary Houston <ghouston@arglist.com>
11045
11046 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
11047 docstrings to reflect the n-ary implementation.
11048
11049 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
11050
11051 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
11052 value of a variable, not the plain "return" statement.
11053
11054 2001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
11055
11056 * eval.c: Allow variables in memoized code (in addition to glocs).
11057 (scm_lookupcar): Handle variables in lost races. Replace symbol
11058 with variable directly, do not make a gloc.
11059 (scm_unmemocar): Rewrite variables using a reverse lookup, just
11060 like glocs.
11061 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
11062 the main switch.
11063
11064 2001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
11065
11066 * variable.c (scm_i_variable_print): Use "value" instead of
11067 "binding" since a binding is the mapping between symbols and
11068 variables, not between variables and their values.
11069
11070 * tags.h (scm_tc7_variable): New.
11071 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
11072 * print.c (scm_iprin1): Likewise.
11073
11074 * variable.h (scm_tc16_variable): Removed.
11075 (SCM_VARIABLEP): Test for new tc7 code.
11076 (scm_i_variable_print): New.
11077 * variable.c (scm_tc16_variable): Removed.
11078 (variable_print): Renamed to scm_i_variable_print and made
11079 non-static.
11080 (variable_equal_p): Removed.
11081 (make_variable): Construct a tc7 object instead of a smob.
11082 (scm_init_variable): Do not register smob.
11083
11084 2001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
11085
11086 * tags.h: Include inttypes.h when we have it.
11087
11088 2001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
11089
11090 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
11091 is taken by the new SCM_IM_CALL_WITH_VALUES.
11092 * print.c (scm_isymnames): Update table accordingly.
11093
11094 2001-07-22 Gary Houston <ghouston@arglist.com>
11095
11096 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
11097 SCM_MAKINUM to convert regoff_t value to SCM.
11098
11099 2001-07-21 Gary Houston <ghouston@arglist.com>
11100
11101 * scmsigs.c: include sys/time.h for itimer stuff.
11102
11103 2001-07-19 Rob Browning <rlb@defaultvalue.org>
11104
11105 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
11106
11107 * c-tokenize.lex: add option %nounput to quiet warning.
11108 Add prototype for yylex to quiet warning.
11109
11110 * scmconfig.h.in: add flags for setitimer and getitimer.
11111
11112 * scmsigs.h (scm_init_scmsigs): new prototype.
11113 (scm_init_scmsigs): new prototype.
11114
11115 * scmsigs.c (s_scm_setitimer): new function.
11116 (s_scm_setitimer): new function.
11117
11118 2001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11119
11120 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
11121 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
11122 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
11123 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
11124 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
11125 guile-func-name-check.in, guile-snarf-docs-texi.in,
11126 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
11127 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
11128 objprop.c, objprop.h, options.c, options.h, random.h,
11129 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
11130 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
11131 version.c, version.h: Updated copyright notice.
11132
11133 2001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11134
11135 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
11136 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
11137 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
11138 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
11139 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
11140 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
11141 sym_environment, scm_sym_change_class): New static variables to
11142 hold predefined symbols.
11143
11144 (build_class_class_slots): Build the list using scm_list_n
11145 instead of cons. Also, slots are already created as lists, thus
11146 making a call to maplist unnecessary.
11147
11148 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
11149 scm_class_direct_subclasses, scm_class_direct_methods,
11150 scm_class_precedence_list, scm_class_slots, scm_class_environment,
11151 scm_method_procedure, create_standard_classes, purgatory): Use
11152 predefined symbols.
11153
11154 (build_slots_list, compute_getters_n_setters,
11155 scm_sys_initialize_object, scm_sys_inherit_magic_x,
11156 get_slot_value_using_name, set_slot_value_using_name,
11157 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
11158 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
11159 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
11160
11161 (scm_sys_prep_layout_x): Minimize variable scopes.
11162
11163 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
11164 scm_sys_fast_slot_set_x): Fix signedness.
11165
11166 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
11167 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
11168 scm_memoize_method, scm_wrap_object): Use packing and unpacking
11169 when converting to and from SCM values.
11170
11171 (scm_enable_primitive_generic_x): Add rest argument checking.
11172
11173 (map, filter_cpl, maplist, scm_sys_initialize_object,
11174 scm_sys_prep_layout_x, slot_definition_using_name,
11175 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
11176 call_memoize_method, scm_make, scm_make_class): Prefer explicit
11177 predicates over SCM_N?IMP tests.
11178
11179 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
11180 checking.
11181
11182 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
11183 alias.
11184
11185 2001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11186
11187 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
11188
11189 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
11190
11191 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
11192
11193 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
11194
11195 2001-07-12 Michael Livshin <mlivshin@bigfoot.com>
11196
11197 * strings.c (s_scm_string): fix arg position in assert.
11198
11199 2001-07-11 Gary Houston <ghouston@arglist.com>
11200
11201 * strports.c (st_write): use memcpy, not strncpy. thanks to
11202 Dale P. Smith.
11203
11204 2001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
11205
11206 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
11207 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
11208 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
11209 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
11210 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
11211 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
11212 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
11213 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
11214 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
11215 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
11216 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
11217 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
11218 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
11219 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
11220 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
11221 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
11222 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
11223 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
11224 weaks.c, weaks.h: Remove "face-lift" comment.
11225
11226 2001-07-08 Rob Browning <rlb@defaultvalue.org>
11227
11228 * .cvsignore: add stamp-h.in.
11229
11230 2001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11231
11232 * hooks.c (scm_make_hook, scm_add_hook_x),
11233 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
11234 value info to the docstrings.
11235
11236 2001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11237
11238 Some more compatibility patches for Windows.
11239
11240 * posix.c (getlogin): getlogin() implementation for Windows.
11241
11242 * backtrace.c, ioext.c: Include <stdio.h>.
11243
11244 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
11245 exist.
11246
11247 * cpp_sig_symbols.in: Added SIGBREAK.
11248
11249 2001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
11250
11251 * strports.c (scm_read_0str, scm_eval_0str): Call
11252 scm_c_read_string and scm_c_eval_string respectively, not
11253 themselves. Thanks to Dale P. Smith!
11254
11255 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11256
11257 * unif.c (scm_array_set_x): The variable args does not
11258 necessarily have to be a list. Further, got rid of a redundant
11259 SCM_NIMP test.
11260
11261 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11262
11263 * list.c (SCM_I_CONS): Make sure the cell type is initialized
11264 last.
11265
11266 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
11267 init_heap_seg): Fixed signedness.
11268
11269 (init_heap_seg): Replaced strange for-loop with a while loop.
11270
11271 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
11272
11273 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
11274
11275 The following patch adds conservative marking for the elements of
11276 free or allocated cells.
11277
11278 * gc.c (allocated_mark, heap_segment): New static functions.
11279
11280 (which_seg): Deleted, since the functionality is now provided by
11281 function heap_segment.
11282
11283 (map_free_list): Use heap_segment instead of which_seg.
11284
11285 (MARK): If cell debugging is disabled, mark free cells
11286 conservatively.
11287
11288 (scm_mark_locations, scm_cellp): Extracted the search for the
11289 heap segment of a SCM value into function heap_segment.
11290
11291 (scm_init_storage): Allocated cells must be marked
11292 conservatively.
11293
11294 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
11295
11296 The following patch changes the representation of weak vectors to
11297 double cells instead of using an extension of the vector's
11298 allocated memory.
11299
11300 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
11301 the result of SCM_WVECT_GC_CHAIN.
11302
11303 (scm_gc_sweep): Weak vectors don't have extra fields any more.
11304
11305 * weaks.c (allocate_weak_vector): New static function. It does
11306 not patch any previously created vector object during the
11307 construction of a weak vector, and thus doesn't need to switch
11308 off interrupts during vector creation.
11309
11310 (scm_make_weak_vector, scm_make_weak_key_hash_table,
11311 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11312 Use allocate_weak_vector to provide the new weak vector object.
11313
11314 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
11315 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
11316 now stored in the double cell.
11317
11318 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
11319 Use SCM_WVECT_TYPE.
11320
11321 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
11322 using an entry of the double cell.
11323
11324 2001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
11325
11326 * stamp-h.in: bye bye
11327
11328 2001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
11329
11330 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
11331 scm_eval_0str.
11332
11333 * load.c, load.h (scm_c_primitive_load,
11334 scm_c_primitive_load_path): New.
11335
11336 * strports.c, strports.h (scm_c_read_string): Renamed from
11337 scm_read_0str. Also, added "const" qualifier to argument.
11338 (scm_c_eval_string): Renamed from scm_eval_0str.
11339 (scm_read_0str, scm_eval_0str): Deprecated.
11340
11341 2001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11342
11343 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
11344 SCM_LIST1.
11345
11346 2001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
11347
11348 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
11349 scm_list_n): New functions.
11350 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
11351 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
11352 (lots of files): Use the new functions.
11353
11354 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
11355
11356 * strings.c: #include "libguile/deprecation.h".
11357
11358 2001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11359
11360 * read.c (scm_lreadr): When reading a hash token, check for a
11361 user-defined hash procedure first, so that overriding the builtin
11362 hash characters is possible (this was needed for implementing
11363 SRFI-4's read synax `f32(...)').
11364
11365 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
11366 because the latter is unsigned now and breaks comparisons like
11367 (n < (scm_t_signed_bits)MIN_VALUE).
11368
11369 2001-06-26 Neil Jerram <neil@ossau.uklinux.net>
11370
11371 * eval.h, eval.c (scm_call_4): New function.
11372
11373 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
11374 directly rather than dispatching to them via scm_ithrow and a lazy
11375 catch.
11376
11377 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
11378 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
11379 for trap handler procedures.
11380
11381 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
11382 procedures not being #f.
11383
11384 2001-06-27 Michael Livshin <mlivshin@bigfoot.com>
11385
11386 * Makefile.am (c-tokenize.c): add rule to generate it.
11387 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
11388
11389 filter-doc-snarfage.c: remove.
11390
11391 2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11392
11393 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
11394
11395 The following set of changes makes compiling Guile under various
11396 Windows compilers easier. Compilation under GNU systems should
11397 not be affected at all.
11398
11399 Thanks to Stefan Jahn for all necessary information, patches and
11400 testing.
11401
11402 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
11403 getpgrp, ttyname, primitive-fork and some header inclusion for
11404 Windows.
11405
11406 * random.c: Define M_PI, if not predefined and use __int64 for
11407 LONG64 under Windows.
11408
11409 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
11410 Windows and conditionalize some signal names.
11411
11412 * socket.c (scm_getsockopt): Added missing comma.
11413 Include socket library header under Windows.
11414
11415 * stime.c (CLKTCK): Add cast to int, to make it compile under
11416 Windows.
11417
11418 * ports.c (truncate): New function, compiled only under Windows.
11419
11420 * net_db.c: Do not declare errno under Windows.
11421
11422 * iselect.h, inet_aton.c: Include socket library headers under
11423 Windows.
11424
11425 * guile.c (inner_main): Under Windows, initialize socket library
11426 and initialize gdb_interface data structures.
11427
11428 * gdb_interface.h: Under Windows, gdb_interface cannot be
11429 initialized statically. Initialize at runtime instead.
11430
11431 * fports.c (write_all): ssize_t -> size_t.
11432 (fport_print): Conditionalize call to ttyname().
11433 (getflags): New function, compiled only under Windows.
11434
11435 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
11436 primitives chown, link, fcntl.
11437 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
11438 as path seperator.
11439
11440 * backtrace.c: Include <io.h> under Windows.
11441
11442 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
11443
11444 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
11445 declaration.
11446
11447 2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
11448
11449 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11450 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
11451 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11452 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
11453 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
11454 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
11455 (scm_dynamic_wind, scm_dowinds), environments.c
11456 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
11457 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
11458 goops.c (GETVAR, purgatory, make_class_from_template,
11459 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
11460 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
11461 (scm_primitive_load), modules.c (scm_resolve_module,
11462 scm_c_define_module, scm_c_use_module, scm_c_export,
11463 module_variable, scm_eval_closure_lookup, scm_sym2var,
11464 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
11465 ports.c (scm_port_for_each), print.c (scm_printer_apply),
11466 properties.c (scm_primitive_property_ref), ramap.c (ramap,
11467 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
11468 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
11469 (scm_object_to_string, scm_call_with_output_string,
11470 scm_call_with_input_string), throw.c (scm_body_thunk,
11471 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
11472 scm_make_shared_array), vports.c (sf_flush, sf_write,
11473 sf_fill_input, sf_close): Use one of the above functions.
11474 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
11475
11476 2001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11477
11478 * filesys.c (scm_close), ports.c (scm_close_port,
11479 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
11480 instead of SCM_NEGATE_BOOL.
11481
11482 * filesys.c (scm_stat): Clean up type dispatch.
11483
11484 * filesys.c (scm_stat), ports.c (scm_input_port_p,
11485 scm_output_port_p): Get rid of redundant IM type check.
11486
11487 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
11488 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
11489 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
11490 scm_return_entry), numbers.c (scm_number_to_string), objects.c
11491 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
11492 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
11493 scm_addr_vector), stime.c (scm_strftime), strings.c
11494 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
11495 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
11496 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11497 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
11498 instead of scm_makfromstr.
11499
11500 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
11501 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
11502 scm_read_hash_extend), stime.c (scm_strftime), strings.c
11503 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
11504 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
11505 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
11506 !SCM_<pred> over SCM_N<pred>.
11507
11508 * strings.[ch] (scm_makfromstr): Deprecated.
11509
11510 (scm_mem2string): New function, replaces scm_makfromstr.
11511
11512 * strings.c (scm_substring), strop.c (string_copy,
11513 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11514 (scm_symbol_to_string): Fix gc problem.
11515
11516 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
11517 SCM_<foo>_H.
11518
11519 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
11520 warning about comparing signed and unsigned values. This fix is
11521 not optimal, since it won't work reliably if sizeof (c_start) >
11522 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
11523 solution is to define this macro as an inline function, thus
11524 allowing to specifiy the types of c_start and c_end.
11525
11526 2001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
11527
11528 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
11529 scm_t_debug_frame*.
11530
11531 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
11532 Rename <foo>H to SCM_<foo>_H.
11533
11534 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
11535 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11536
11537 (narrow_stack): Make i unsigned. Don't use side-effecting
11538 operations in conditions.
11539
11540 (narrow_stack, scm_make_stack, scm_stack_id,
11541 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
11542
11543 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
11544 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
11545 more.
11546
11547 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
11548 signedness.
11549
11550 (scm_last_stack_frame): Remove bogus `;'.
11551
11552 * stacks.h (SCM_FRAMEP): Fix type check.
11553
11554 2001-06-25 Michael Livshin <mlivshin@bigfoot.com>
11555
11556 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
11557 c-tokenize.c when doing maintainer-clean.
11558
11559 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
11560
11561 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
11562 simplify.
11563
11564 * eval.c: all hash signs are in column 0.
11565
11566 * Makefile.am (guile_filter_doc_snarfage): build using
11567 c-tokenize.c, not filter-doc-snarfage.c.
11568 rearrange snarfing dependencies a bit.
11569
11570 * c-tokenize.lex: new file.
11571
11572 2001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
11573
11574 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
11575 scm_t_srcpropso_plist. See the big type renaming.
11576 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
11577 Thanks to Seth Alves!
11578
11579 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
11580 they aren't defined already.
11581
11582 2001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
11583
11584 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
11585 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
11586 problem.
11587
11588 * backtrace.c (display_expression, scm_set_print_params_x,
11589 display_application, display_frame, scm_backtrace), numbers.c
11590 (scm_istring2number), objects.c (scm_class_of,
11591 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
11592 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11593
11594 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
11595 always positive.
11596
11597 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
11598 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
11599
11600 * objects.c (scm_class_of): Type fix.
11601
11602 (scm_mcache_lookup_cmethod): Improved comment, simplified,
11603 eliminated goto.
11604
11605 * pairs.h (scm_error_pair_access): The function can return if
11606 called recursively.
11607
11608 2001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11609
11610 * init.c (scm_init_guile_1): Removed initialization of tag.c.
11611
11612 * gdbint.c, init.c: Removed inclusion of tag.h.
11613
11614 * tag.h, tag.c: Removed files.
11615
11616 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
11617
11618 2001-06-20 Gary Houston <ghouston@arglist.com>
11619
11620 * deprecation.c, extensions.c, rw.c: include string.h.
11621
11622 2001-06-19 Gary Houston <ghouston@arglist.com>
11623
11624 * filter-doc-snarfage.c (process): added ungetc in
11625 MULTILINE_COOKIE case since otherwise it fails when there's no
11626 space between the '(' and the quote of the following string
11627 (gcc 3.0).
11628
11629 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11630
11631 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
11632
11633 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11634
11635 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
11636 extension takes place.
11637 * strings.h (SCM_STRING_LENGTH): Likewise.
11638 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
11639
11640 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
11641 it.
11642
11643 * tags.h: Include <stdint.h> when we have it.
11644 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
11645 available. Else use "unsigned long".
11646 (scm_signed_bits_t): New.
11647
11648 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11649 (SCM_INUM): Cast result to scm_signed_bits_t.
11650
11651 2001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11652
11653 * mkstemp.c: Update path to #include file scmconfig.h.
11654 Thanks to Golubev I. N.
11655
11656 2001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11657
11658 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11659
11660 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
11661 the macro definition.
11662
11663 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11664 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11665 instead of SCM_INST_TYPE.
11666
11667 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11668 the object is a struct before accessing its struct flags.
11669
11670 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11671
11672 2001-06-10 Gary Houston <ghouston@arglist.com>
11673
11674 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11675 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11676 work reliably anymore. try it from boot-9.scm instead.
11677
11678 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11679
11680 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
11681 Thanks to Matthias Köppe!
11682
11683 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11684
11685 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11686 space-happy C preprocessors.
11687
11688 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
11689 inside cookies. thanks to Matthias Köppe!
11690
11691 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11692
11693 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11694 keywords. Fix gc protection.
11695
11696 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11697 operations in macro calls.
11698
11699 * pairs.c (scm_error_pair_access): Avoid recursion.
11700
11701 Thanks to Matthias Koeppe for reporting the bugs that correspond
11702 to the following set of patches.
11703
11704 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11705 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11706 bitvector base address using SCM_BITVECTOR_BASE.
11707
11708 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11709 unsigned long*.
11710
11711 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11712
11713 * goops.c (SCM_CLASS_REDEF): Removed.
11714
11715 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11716 SCM_<foo>_H.
11717
11718 Thanks to Matthias Koeppe for reporting the bugs that correspond
11719 to the following set of patches.
11720
11721 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11722 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11723 scm_sys_allocate_instance, clear_method_cache,
11724 scm_sys_invalidate_method_cache_x, scm_make,
11725 create_standard_classes, scm_make_port_classes, scm_make_class,
11726 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11727
11728 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11729
11730 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11731
11732 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11733 UNARY_ELTS_CODE): Remove bogus break statement.
11734
11735 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11736 Don't access bit vectors elements as SCM objects.
11737
11738 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11739 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11740 Don't assign to an unpacked value.
11741
11742 2001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11743
11744 * __scm.h (SCM_NORETURN): Moved here from error.h.
11745
11746 (SCM_UNUSED): New macro.
11747
11748 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11749
11750 * backtrace.c (display_error_handler), continuations.c
11751 (continuation_print), debug.c (debugobj_print), dynwind.c
11752 (guards_print), environments.c (observer_print,
11753 core_environments_finalize, leaf_environment_cell,
11754 leaf_environment_print, eval_environment_print,
11755 eval_environment_observer, import_environment_define,
11756 import_environment_undefine, import_environment_print,
11757 import_environment_observer, export_environment_define,
11758 export_environment_undefine, export_environment_print,
11759 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11760 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11761 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11762 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11763 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11764 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11765 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11766 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11767 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11768 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11769 set_slot_value, test_slot_existence, scm_change_object_class,
11770 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11771 default_setter), guardians.c (guardian_print, guardian_gc_init,
11772 guardian_zombify, whine_about_self_centered_zombies), guile.c
11773 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11774 mallocs.c (malloc_print), numbers.c (scm_print_real,
11775 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11776 end_input_default, scm_port_print, fill_input_void_port,
11777 write_void_port), root.c (root_print), smob.c (scm_mark0,
11778 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11779 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11780 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11781 (scm_struct_free_0, scm_struct_free_standard,
11782 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11783 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11784 scm_handle_by_throw, scm_ithrow), weaks.c
11785 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11786 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11787 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11788
11789 * error.h (SCM_NORETURN): Moved to __scm.h.
11790
11791 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11792 Renamed <foo>H to SCM_<foo>_H.
11793
11794 * gc.c (debug_cells_gc_interval): New static variable.
11795
11796 (scm_assert_cell_valid): If selected by the user, perform
11797 additional garbage collections.
11798
11799 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11800 if additional garbage collections are desired.
11801
11802 (mark_gc_async): If additional garbage collections are selected
11803 by the user, don't call the after-gc-hook. Instead require the
11804 user to run the hook manually.
11805
11806 * pairs.c (scm_error_pair_access): New function. Only compiled
11807 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11808
11809 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11810
11811 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11812 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11813 is a real pair object. (Glocs are also accepted, but that may
11814 change.) If not, abort with an error message.
11815
11816 2001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11817
11818 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11819
11820 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11821 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11822
11823 2001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11824
11825 * extensions.c (scm_c_register_extension): Allow NULL as library
11826 name.
11827 (load_extension): Ignore NULL library names when comparing.
11828
11829 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11830 non-pointers are being compared. Thanks to Alexander Klimov!
11831
11832 2001-06-04 Gary Houston <ghouston@arglist.com>
11833
11834 * rw.c (scm_write_string_partial): new procedure implementing
11835 write-string/partial in (ice-9 rw).
11836 * rw.h: declare scm_write_string_partial.
11837
11838 2001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11839
11840 * keywords.c (keyword_print): Substract 1 from length of symbol
11841 name, accounting for the silly dash.
11842
11843 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11844 Do not emit deprecation warning.
11845
11846 Added exception notice to all files.
11847
11848 * dynl.c: Include "deprecation.h".
11849
11850 2001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11851
11852 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11853 scm_clear_registered_modules): Deprecated.
11854
11855 2001-06-02 Rob Browning <rlb@cs.utexas.edu>
11856
11857 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11858 guile-snarf-docs-texi.
11859
11860 * fports.c: HAVE_ST_BLKSIZE changed to
11861 HAVE_STRUCT_STAT_ST_BLKSIZE.
11862 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11863 HAVE_STRUCT_STAT_ST_BLKSIZE.
11864
11865 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11866 HAVE_STRUCT_STAT_ST_RDEV.
11867 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11868 HAVE_STRUCT_STAT_ST_BLKSIZE.
11869 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11870 HAVE_STRUCT_STAT_ST_BLOCKS.
11871
11872 2001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11873
11874 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11875 of scm_eval_x to allow module changes between the forms in the
11876 string. Set/restore module using scm_c_call_with_current_module.
11877
11878 * mkstemp.c: New file, slightly modified from libiberties
11879 mkstemps.c.
11880
11881 2001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11882
11883 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11884 filter-doc-snarfage.c: new files.
11885
11886 * Makefile.am: add stuff to [build,] use and distribute
11887 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11888
11889 * guile-snarf.in: grok the new snarf output.
11890
11891 * snarf.h: make the output both texttools- and `read'-friendly.
11892
11893 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11894 guile-snarf-docs. (should also deprecate, I guess. maybe not).
11895
11896 2001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11897
11898 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11899 error for unsupported format controls and for superflous
11900 arguments. Thanks to Daniel Skarda!
11901
11902 * print.h, print.c (scm_print_symbol_name): Factored out of
11903 scm_iprin1.
11904 (scm_iprin1): Call it.
11905
11906 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11907 weird names are printed correctly.
11908
11909 * print.c (scm_print_symbol_name): Symbols whose name starts with
11910 `#' or `:' or ends with `:' are considered weird.
11911
11912 2001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11913
11914 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11915 and /.
11916
11917 2001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11918
11919 * debug.h: Removed prototype for scm_eval_string.
11920
11921 2001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11922
11923 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
11924 (make-string 2000 #\!))' in an older version).
11925
11926 Change strncpy to memcpy to allow embedded NUL characters in
11927 symbol prefix.
11928
11929 2001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11930
11931 * hooks.c (scm_create_hook): deprecated.
11932 (make_hook): deleted.
11933 (scm_make_hook): all the hook creation code is now here.
11934
11935 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11936 a hook, make it permanent, and do a `scm_c_define' on it.
11937
11938 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11939
11940 * socket.c (s_scm_inet_pton): fix docstring quoting.
11941 (s_scm_inet_ntop): ditto.
11942
11943 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11944
11945 * hashtab.c (scm_internal_hash_fold): fix argument position in
11946 SCM_ASSERT.
11947
11948 * environments.c (s_scm_import_environment_set_imports_x): fix
11949 argument position in SCM_ASSERT.
11950
11951 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11952 (s_scm_make_iloc): ditto.
11953
11954 2001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11955
11956 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11957
11958 * eval.c (promise_print): Read the promise's value as an object.
11959
11960 (SCM_CEVAL): Don't perform side-effecting operations in macro
11961 parameters.
11962
11963 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11964 conditional expression.
11965
11966 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11967 initializer.
11968
11969 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11970 text, removed redundant computation of effective_length and fixed
11971 the overflow check.
11972
11973 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11974 values.
11975
11976 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11977
11978 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11979
11980 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11981 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11982
11983 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11984
11985 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11986 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11987 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11988 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11989
11990 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11991
11992 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11993
11994 * ramap.c (ramap_rp): Removed bogus `;'.
11995
11996 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11997 problem.
11998
11999 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
12000 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
12001 Read SCM objects rather than scm_bits_t values.
12002
12003 * tags.h (SCM_VOIDP_TEST): Removed.
12004
12005 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
12006 value of 2 now corresponds to the former 1, the current 1
12007 corresponds to the former situation that SCM_VOIDP_TEST was
12008 defined.
12009
12010 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
12011 If this appears to be not ANSI compliant, we will change it to
12012 typedef struct scm_unused_struct { } * SCM;
12013 Thanks to Han-Wen Nienhuys for the suggestion.
12014
12015 * unif.c (scm_array_set_x): Fix typing problem, and use
12016 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
12017 dealing with uniform vectors.
12018
12019 2001-05-27 Michael Livshin <mlivshin@bigfoot.com>
12020
12021 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
12022 (scm_igc): mark from them, too (precisely, not conservatively!).
12023
12024 * root.h (scm_gc_registered_roots): new object in
12025 scm_sys_protects.
12026
12027 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
12028 `scm_protect_object'. shouldn't call it at all, though, it seems.
12029
12030 * gc.c (scm_[un]protect_object): deprecated.
12031 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
12032 (scm_gc_[un]register_root[s]): new.
12033
12034 * gc.h: add prototypes for scm_gc_[un]protect_object,
12035 scm_gc_[un]register_root[s].
12036
12037 2001-05-26 Michael Livshin <mlivshin@bigfoot.com>
12038
12039 revert the controversial part of the 2001-05-24 changes.
12040
12041 2001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
12042
12043 * modules.c (scm_env_module): Exported to Scheme.
12044
12045 * eval.c (scm_debug_opts): New option `show-file-name'.
12046
12047 * debug.h (SCM_SHOW_FILE_NAME): New.
12048
12049 * backtrace.c: Include "libguile/filesys.h".
12050 (sym_base, display_backtrace_get_file_line,
12051 display_backtrace_file, display_backtrace_file_and_line): New.
12052 (display_frame): Call display_backtrace_file_and_line if that is
12053 requested.
12054 (display_backtrace_body): Call scm_display_backtrace_file if
12055 requested.
12056
12057 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
12058 Prototypes removed since there's no definition for these
12059 functions.
12060
12061 2001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12062
12063 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
12064 Changed use of scm_array->scm_array_t and
12065 scm_array_dim->scm_array_dim_t to enable build with
12066 --disable-deprecated.
12067
12068 2001-05-24 Michael Livshin <mlivshin@bigfoot.com>
12069
12070 The purpose of this set of changes is to regularize Guile's usage
12071 of ANSI C integral types, with the following ideas in mind:
12072
12073 - SCM does not nesessarily have to be long.
12074 - long is not nesessarily enough to store pointers.
12075 - long is not nesessarily the same size as int.
12076
12077 The changes are incomplete and possibly buggy. Please test on
12078 something exotic.
12079
12080 * validate.h
12081 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
12082 new macros.
12083
12084 * unif.h: type renaming:
12085 scm_array -> scm_array_t
12086 scm_array_dim -> scm_array_dim_t
12087 the old names are deprecated, all in-Guile uses changed.
12088
12089 * tags.h (scm_ubits_t): new typedef, representing unsigned
12090 scm_bits_t.
12091
12092 * stacks.h: type renaming:
12093 scm_info_frame -> scm_info_frame_t
12094 scm_stack -> scm_stack_t
12095 the old names are deprecated, all in-Guile uses changed.
12096
12097 * srcprop.h: type renaming:
12098 scm_srcprops -> scm_srcprops_t
12099 scm_srcprops_chunk -> scm_srcprops_chunk_t
12100 the old names are deprecated, all in-Guile uses changed.
12101
12102 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
12103 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
12104 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
12105 vectors.c, vports.c, weaks.c:
12106 various int/size_t -> size_t/scm_bits_t changes.
12107
12108 * random.h: type renaming:
12109 scm_rstate -> scm_rstate_t
12110 scm_rng -> scm_rng_t
12111 scm_i_rstate -> scm_i_rstate_t
12112 the old names are deprecated, all in-Guile uses changed.
12113
12114 * procs.h: type renaming:
12115 scm_subr_entry -> scm_subr_entry_t
12116 the old name is deprecated, all in-Guile uses changed.
12117
12118 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
12119 type renaming:
12120 scm_option -> scm_option_t
12121 the old name is deprecated, all in-Guile uses changed.
12122
12123 * objects.c: various long -> scm_bits_t changes.
12124 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
12125
12126 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
12127 SCM_I_FIXNUM_BIT.
12128
12129 * num2integral.i.c: new file, multiply included by numbers.c, used
12130 to "templatize" the various integral <-> num conversion routines.
12131
12132 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
12133 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
12134 deprecated.
12135 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
12136 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
12137 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
12138 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
12139 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
12140 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
12141 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
12142 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
12143 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
12144 scm_num2size): new functions.
12145
12146 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
12147
12148 * load.c: change int -> size_t in various places (where the
12149 variable is used to store a string length).
12150 (search-path): call scm_done_free, not scm_done_malloc.
12151
12152 * list.c (scm_ilength): return a scm_bits_t, not long.
12153 some other {int,long} -> scm_bits_t changes.
12154
12155 * hashtab.c: various [u]int -> scm_bits_t changes.
12156 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
12157 (scm_ihashx): n: uint -> scm_bits_t
12158 use scm_bits2num instead of scm_ulong2num.
12159
12160 * gsubr.c: various int -> scm_bits_t changes.
12161
12162 * goops.[hc]: various {int,long} -> scm_bits_t changes.
12163
12164 * gh_data.c (gh_num2int): no loss of precision any more.
12165
12166 * gh.h (gh_str2scm): len: int -> size_t
12167 (gh_{get,set}_substr): start: int -> scm_bits_t,
12168 len: int -> size_t
12169 (gh_<num>2scm): n: int -> scm_bits_t
12170 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
12171 (gh_length): return scm_bits_t, not unsigned long.
12172
12173 * gc.[hc]: various small changes relating to many things stopping
12174 being long and starting being scm_[u]bits_t instead.
12175 scm_mallocated should no longer wrap around.
12176
12177 * fports.h: type renaming:
12178 scm_fport -> scm_fport_t
12179 the old name is deprecated, all in-Guile uses changed.
12180
12181 * fports.c (fport_fill_input): count: int -> scm_bits_t
12182 (fport_flush): init_size, remaining, count: int -> scm_bits_t
12183
12184 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
12185 those prototypes, as the functions they prototype don't exist.
12186
12187 * fports.c (default_buffer_size): int -> size_t
12188 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
12189 default_size: int -> size_t
12190 (scm_setvbuf): csize: int -> scm_bits_t
12191
12192 * fluids.c (n_fluids): int -> scm_bits_t
12193 (grow_fluids): old_length, i: int -> scm_bits_t
12194 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
12195 scm_bits_t
12196 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
12197
12198 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
12199 the new and shiny SCM_NUM2INT.
12200
12201 * extensions.c: extension -> extension_t (and made a typedef).
12202
12203 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
12204 there are no nasty surprises if/when the various deeply magic tag
12205 bits move somewhere else.
12206
12207 * eval.c: changed the locals used to store results of SCM_IFRAME,
12208 scm_ilength and such to be of type scm_bits_t (and not int/long).
12209 (iqq): depth, edepth: int -> scm_bits_t
12210 (scm_eval_stack): int -> scm_bits_t
12211 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
12212 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
12213 i: int -> scm_bits_t
12214
12215 * environments.c: changed the many calls to scm_ulong2num to
12216 scm_ubits2num.
12217 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
12218
12219 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
12220
12221 * debug.h: type renaming:
12222 scm_debug_info -> scm_debug_info_t
12223 scm_debug_frame -> scm_debug_frame_t
12224 the old names are deprecated, all in-Guile uses changed.
12225 (scm_debug_eframe_size): int -> scm_bits_t
12226
12227 * debug.c (scm_init_debug): use scm_c_define instead of the
12228 deprecated scm_define.
12229
12230 * continuations.h: type renaming:
12231 scm_contregs -> scm_contregs_t
12232 the old name is deprecated, all in-Guile uses changed.
12233 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
12234 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
12235
12236 * continuations.c (scm_make_continuation): change the type of
12237 stack_size from long to scm_bits_t.
12238
12239 * ports.h: type renaming:
12240 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
12241 scm_port -> scm_port_t
12242 scm_ptob_descriptor -> scm_ptob_descriptor_t
12243 the old names are deprecated, all in-Guile uses changed.
12244 (scm_port_t.entry): int -> scm_bits_t.
12245 (scm_port_t.line_number): int -> long.
12246 (scm_port_t.putback_buf_size): int -> size_t.
12247
12248 * __scm.h (long_long, ulong_long): deprecated (they pollute the
12249 global namespace and have little value beside that).
12250 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
12251 SCM handle).
12252 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
12253 exist (for size_t & ptrdiff_t).
12254 (scm_sizet): deprecated.
12255
12256 * Makefile.am (noinst_HEADERS): add num2integral.i.c
12257
12258 2001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
12259
12260 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
12261 SCM_VARIABLE_INIT since that it what it used to be.
12262
12263 * deprecation.c (scm_include_deprecated_features): Make docstring
12264 ANSIsh. Thanks to Matthias Köppe!
12265
12266 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
12267
12268 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
12269 needed for weak-key hashtables.
12270
12271 * procs.c (scm_make_subr_with_generic): Add missing last argument
12272 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
12273
12274 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
12275 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
12276
12277 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
12278
12279 2001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
12280
12281 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
12282 `duplicate_string'. Do not use an indirect cell, store symbol
12283 directly in collision list of hash table.
12284 (duplicate_string): Removed.
12285
12286 * init.c (scm_init_guile_1): Call scm_init_extensions.
12287
12288 * Makefile.am: Add "extensions.c" and related files in all the
12289 right places.
12290
12291 * extensions.h, extension.c: New files.
12292
12293 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
12294
12295 * modules.h (scm_system_module_env_p): Move out of deprecated
12296 section.
12297
12298 * rw.h (scm_init_rw): Added prototype.
12299
12300 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
12301 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
12302 New functions. They replace scm_make_gsubr and
12303 scm_make_gsubr_with_generic. The `make' variants only create the
12304 gsubr object, while the `define' variants also put it into the
12305 current module. Changed all callers.
12306 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
12307
12308 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
12309 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
12310 functions. They replace scm_make_subr, scm_make_subr_opt and
12311 scm_make_subr_with_generic. The `make' variants only create the
12312 subr object, while the `define' variants also put it into the
12313 current module. Changed all callers.
12314 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
12315 Deprecated.
12316
12317 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
12318 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
12319 the comments above.
12320
12321 2001-05-19 Neil Jerram <neil@ossau.uklinux.net>
12322
12323 * throw.c (scm_lazy_catch): Slight docstring clarification.
12324
12325 2001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
12326
12327 * throw.c: Lazy-catch handlers are no longer allowed to return.
12328 Fixed comments throughout.
12329 (scm_ithrow): Signal an error when a lazy-catch handler returns.
12330 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
12331 recognized as such.
12332
12333 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
12334 refered to s_scm_minor_version previously.
12335
12336 * modules.h, modules.c: Moved around a lot of code so that
12337 deprecated features appear at the bottom.
12338 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
12339 module_prefix, make_modules_in_var, beautify_user_module_x_var,
12340 scm_the_root_module, scm_make_module, scm_ensure_user_module,
12341 scm_load_scheme_module): Deprecated.
12342 (scm_system_module_env_p): Return SCM_BOOL_T directly for
12343 environments corresponding to the root module.
12344 (convert_module_name, scm_c_resolve_module,
12345 scm_c_call_with_current_module, scm_c_define_module,
12346 scm_c_use_module, scm_c_export): New.
12347 (the_root_module): New static variant of scm_the_root_module. Use
12348 it everywhere instead of scm_the_root_module.
12349
12350 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
12351 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
12352 (scm_c_with_fluid): New.
12353 (scm_with_fluids): Use scm_c_with_fluids instead of
12354 scm_internal_with_fluids.
12355
12356 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
12357 `scm_init_goops'. Do not explicitly create/switch modules.
12358 Return SCM_UNSPECIFIED.
12359 (scm_init_goops): Only register `%init-goops-builtins' procedure.
12360 (scm_load_goops): Use scm_c_resolve_module instead of
12361 scm_resolve_module.
12362
12363 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
12364 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
12365 `scm_init_rw' prior to loading the startup files.
12366
12367 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
12368 scm_init_rdelim. Do not explicitly create/switch modules.
12369 Return SCM_UNSPECIFIED.
12370 (scm_init_rdelim): Only register `%init-rdelim-builtins'
12371 procedure.
12372
12373 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
12374 explicitly create/switch modules. Return SCM_UNSPECIFIED.
12375 (scm_init_rw): Only register `%init-rw-builtins' procedure.
12376
12377 * script.c (scm_shell): Evaluate the compiled switches in the
12378 current module, not in the root module.
12379
12380 2001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
12381
12382 * fluids.c (scm_c_with_fluids): Rename from
12383 scm_internal_with_fluids.
12384 (scm_internal_with_fluids): Deprecated.
12385 (scm_c_with_fluid): New.
12386
12387 2001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12388
12389 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
12390
12391 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
12392 accessed with SCM_C[AD]R.
12393
12394 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
12395
12396 2001-05-16 Rob Browning <rlb@cs.utexas.edu>
12397
12398 * version.c (s_scm_major_version): doc fixes.
12399 (s_scm_minor_version): doc fixes.
12400 (s_scm_minor_version): new function.
12401
12402 * version.h (scm_init_version): new function.
12403
12404 * versiondat.h.in: add GUILE_MICRO_VERSION.
12405
12406 2001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
12407
12408 * deprecation.c (scm_init_deprecation): Renamed
12409 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
12410
12411 2001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
12412
12413 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
12414 dependent on cpp_cnvt.awk
12415
12416 2001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12417
12418 * script.c (scm_compile_shell_switches): New command line option
12419 `--use-srfi' for loading a list of SRFIs on startup.
12420 (scm_shell_usage): Added `--use-srfi' to help message.
12421
12422 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12423
12424 Merged from mvo-vcell-cleanup-1-branch.
12425
12426 The concept of vcells has been removed from Guile. With it,
12427 explicit obarrays and associated operations are gone. Use
12428 hashtables instead of obarrays.
12429
12430 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
12431 result as variable instead of vcell. Glocs no longer point to a
12432 vcell but to a variable. Use scm_c_define instead of
12433 scm_sysintern and treat the result as a variable (which it is),
12434 not a vcell.
12435
12436 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
12437 SCM_DEFVARIABLEP): Deprecated.
12438 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
12439 (variable_print): Do not print name of variable.
12440 (variable_equalp): Compare values, not vcells.
12441 (anonymous_variable_sym): Removed.
12442 (make_vcell_variable): Removed.
12443 (make_variable): New, as replacement.
12444 (scm_make_variable, scm_make_undefined_variable): Do not take name
12445 hint parameter.
12446 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
12447 error in that case.
12448 (scm_builtin_variable): Deprecated.
12449
12450 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
12451 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
12452 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
12453 scm_sysintern, scm_sysintern0, scm_symbol_value0,
12454 scm_string_to_obarray_symbol, scm_intern_symbol,
12455 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
12456 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
12457 Deprecated and moved to "symbols-deprecated.c".
12458 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
12459 (scm_init_symbols): Call scm_init_symbols_deprecated.
12460 * symbols-deprecated.c: New file.
12461 * Makefile.am: Added symbols-deprecated.c and related files in all
12462 the right places.
12463
12464 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
12465 SCM_GLOBAL_VCELL_INIT): Deprecated.
12466 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
12467 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
12468
12469 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
12470 SCM_GLOC_SYM.
12471
12472 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
12473 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
12474 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
12475 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
12476 Changed according to the `throughout' comments.
12477
12478 * modules.h, modules.c (scm_module_system_booted_p): Changed type
12479 to `int'.
12480 (scm_module_type): Removed.
12481 (the_root_module): Renamed to the_root_module_var. Now points to
12482 a variable instead of a vcell. Updated all uses.
12483 (scm_the_root_module): Return SCM_BOOL_F when module systems
12484 hasn't been booted yet.
12485 (SCM_VALIDATE_STRUCT_TYPE): Removed.
12486 (scm_post_boot_init_modules): Made static.
12487 (scm_set_current_module): Call scm_post_boot_init_modules on first
12488 call.
12489 (make_modules_in, beautify_user_module_x, resolve_module,
12490 try_module_autoload, module_make_local_var_x): Tacked on "_var"
12491 suffix. Now point to variables instead of vcells. Updated all
12492 uses.
12493 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
12494 and return SCM_BOOL_F in that case.
12495 (scm_module_transformer): Likewise.
12496 (sym_module, scm_lookup_closure_module, scm_env_module): New.
12497 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
12498 (scm_eval_closure_lookup): Do not allow new definitions when
12499 `interface' flag is set.
12500 (scm_standard_interface_eval_closure): New.
12501 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
12502 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
12503 scm_c_lookup, scm_c_module_define, scm_c_define,
12504 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
12505 scm_modules_prehistory): New.
12506 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
12507 instead of scm_intern0.
12508
12509 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
12510 symbol.
12511
12512 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
12513 hashtable operations to maintain the keywords, not obarray ones.
12514
12515 * init.c (scm_load_startup_files): Do not call
12516 scm_post_boot_init_modules. This is done by
12517 scm_set_current_module now.
12518 (scm_init_guile_1): Call scm_modules_prehistory. Call
12519 scm_init_variable early on.
12520
12521 * goops.c (s_scm_sys_goops_loaded): Get
12522 var_compute_applicable_methods from scm_sym2var, not from a direct
12523 invocation of scm_goops_lookup_closure.
12524
12525 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
12526
12527 * gc.c: Added simple debugging hack to mark phase of GC: When
12528 activated, do not tail-call scm_gc_mark. This gives nice
12529 backtraces.
12530 (scm_unhash_name): Removed.
12531
12532 * feature.c (features): Renamed to features_var. Now points to a
12533 variable instead of a vcell. Updated all uses.
12534
12535 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
12536 `scm_current_module_lookup_closure' which will do the right thing
12537 when the module system hasn't been booted yet.
12538 (SCM_GLOC_SYM): Removed.
12539 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
12540 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
12541
12542 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
12543 instead of with vcells. Do not overwrite `var' with the result of
12544 the lookup, use the new `real_var' instead. Remove `var2' in
12545 exchange (which was only used with threads).
12546 (sym_three_question_marks): New.
12547 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
12548 `SCM_GLOC_SYM'.
12549 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
12550 (scm_m_atfop): Expect the function definition to be a variable
12551 instead of a vcell.
12552 (scm_macroexp): Do not use `unmemocar', explicitely remember the
12553 symbol instead.
12554 (scm_unmemocopy): Removed thoughts about anti-macro interface.
12555 (scm_eval_args): Use more explicit code in the gloc branch of the
12556 atrocious struct ambiguity test. The optimizer will sort this
12557 out.
12558 (scm_deval_args): Likewise.
12559 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
12560 remember the symbol instead. Added some comments where
12561 scm_tc3_cons_gloc really exclusively refers to structs.
12562 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
12563 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
12564 of scm_sysintern in general.
12565
12566 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
12567 explicit magic.
12568
12569 * debug.c (s_scm_make_gloc): Only allow proper variables, no
12570 pairs. Put the variable directly in the gloc.
12571 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
12572 (scm_init_debug): Use scm_c_define instead scm_sysintern.
12573
12574 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
12575
12576 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
12577 scm_the_last_stack_fluid_var. It now points to a variable instead
12578 of a vcell. Updated all uses.
12579 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
12580 instead of a vcell. Updated all uses.
12581
12582 * _scm.h: Include "variables.h" and "modules.h" since almost
12583 everybody needs them now.
12584
12585 * root.h (scm_symhash, scm_symhash_vars): Removed.
12586 * gc.c (scm_init_storage): Do not initialize them.
12587
12588 2001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12589
12590 * eval.c (scm_init_eval): Initialize scm_undefineds and
12591 scm_listofnull.
12592
12593 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
12594 like the SCM_NEWCELL macro counterparts.
12595
12596 (scm_init_storage, scm_init_gc): Moved initialization of
12597 scm_tc16_allocated from scm_init_gc to scm_init_storage.
12598
12599 (scm_init_storage): Moved initialization of scm_undefineds and
12600 scm_listofnull to eval.c, initializion of scm_nullstr to
12601 strings.c, initializion of scm_nullvect to vectors.c.
12602
12603 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
12604 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
12605
12606 * init.c (scm_init_guile_1): Reordered some initializations and
12607 added dependcy information comments.
12608
12609 * load.c (scm_init_load): Use scm_nullstr.
12610
12611 * strings.c (scm_init_strings): Initialize scm_nullstr.
12612
12613 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
12614
12615 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
12616
12617 * values.c (print_values): Print as a unreadable object, not as
12618 multiple lines. Thanks to Matthias Köppe!
12619
12620 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
12621
12622 * deprecation.c: Fixed copyright date.
12623
12624 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
12625 DEPRECATION_H to SCM_DEPRECATION_H.
12626
12627 2001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
12628
12629 * guile-doc-snarf.in: Update copyright.
12630 Fix relative path bug. Thanks to Sergey Poznyakoff.
12631
12632 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12633
12634 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
12635 accept open ports. Thanks to Quetzalcoatl Bradley!
12636
12637 2001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12638
12639 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
12640 has 779 primitives on startup.
12641
12642 2001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
12643
12644 * eval.c (scm_i_eval): Copy expression before passing it to
12645 SCM_XEVAL. The copy operation was removed unintendedly during my
12646 change on 2001-03-25.
12647
12648 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12649
12650 from Matthias Köppe (thanks!):
12651
12652 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12653 portable.
12654
12655 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12656 docstring.
12657
12658 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12659
12660 * gc.c (scm_init_gc): Added FIXME comment.
12661
12662 * hooks.c: Since hooks don't have a name any more, it is not
12663 necessary to include objprop.h.
12664
12665 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12666
12667 (symbol_name, scm_make_hook_with_name): Removed.
12668
12669 (scm_create_hook): Don't set the hook's name property.
12670
12671 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12672
12673 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12674
12675 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12676
12677 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12678 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12679 FLOBUFLEN and define it unconditionally.
12680
12681 2001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12682
12683 * gh_data.c (gh_lookup): Call gh_module_lookup with
12684 `scm_current_module ()', not `#f'.
12685 (gh_module_lookup): Expect a module instead of an obarray as first
12686 argument and do lookup in that module.
12687
12688 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12689 arrays. The length of array is already determined differently and
12690 scm_uniform_vector_length does not work on arrays.
12691
12692 2001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12693
12694 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12695 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12696
12697 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12698 they are not used. Changed `wrong type' error into `wrong num
12699 args' error. Changed all callers.
12700
12701 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12702 arguments are supplied.
12703
12704 2001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12705
12706 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12707 describe `regexp/notbol' and `regexp/noteol' execution flags.
12708
12709 * strop.c (scm_substring_move_x): Doc fix; nfc.
12710
12711 2001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12712
12713 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12714 (scm_set_object_procedure_x): Use it to check argument. Fix
12715 docstring.
12716
12717 * evalext.c (scm_definedp): Fix docstring.
12718
12719 2001-05-05 Gary Houston <ghouston@arglist.com>
12720
12721 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12722 support.
12723
12724 2001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12725
12726 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12727 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12728 Change R4RS references to R5RS.
12729
12730 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12731 docstring source are correctly reproduced in the output (ii)
12732 we don't anymore get occasional trailing quotes. Also reorganized
12733 and commented the code a little.
12734
12735 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12736 fixes.
12737
12738 2001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12739
12740 * strop.c (scm_string_split): New procedure.
12741
12742 * strop.h (scm_string_split): Added prototype.
12743
12744 2001-05-04 Gary Houston <ghouston@arglist.com>
12745
12746 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12747 Dale P. Smith.
12748
12749 2001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12750
12751 * rw.c: Include "modules.h" and "strports.h".
12752
12753 * net_db.h (scm_gethost): Added prototype.
12754
12755 * deprecation.h, deprecation.c: New.
12756 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12757 (DOT_X_FILES): Added "deprecation.x".
12758 (modinclude_HEADERS): Added "deprecation.h".
12759
12760 * init.c: Include "deprecation.h".
12761 (scm_init_guile_1): Call scm_init_deprecation.
12762
12763 2001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12764
12765 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12766 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12767 New.
12768
12769 2001-04-29 Gary Houston <ghouston@arglist.com>
12770
12771 * rw.c: new file, implementing C part of module (ice-9 rw).
12772 (scm_read_string_x_partial): moved from ioext.c
12773 (scm_init_rw): new proc.
12774 * rw.h: new file.
12775 init.c: include rw.h and call scm_init_rw.
12776 Makefile.am: include rw.c and rw.h.
12777
12778 2001-04-28 Rob Browning <rlb@cs.utexas.edu>
12779
12780 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12781 know what's supposed to happen to it.
12782
12783 * list.h (scm_list_star): deprecation expired - removed.
12784
12785 * numbers.h (scm_dblproc): deprecation expired - removed.
12786 (SCM_UNEGFIXABLE): deprecation expired - removed.
12787 (SCM_FLOBUFLEN): deprecation expired - removed.
12788 (SCM_INEXP): deprecation expired - removed.
12789 (SCM_CPLXP): deprecation expired - removed.
12790 (SCM_REAL): deprecation expired - removed.
12791 (SCM_IMAG): deprecation expired - removed.
12792 (SCM_REALPART): deprecation expired - removed.
12793 (scm_makdbl): deprecation expired - removed.
12794 (SCM_SINGP): deprecation expired - removed.
12795 (SCM_NUM2DBL): deprecation expired - removed.
12796 (SCM_NO_BIGDIG): deprecation expired - removed.
12797
12798 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12799 (scm_tc_dblr): deprecation expired - removed.
12800 (scm_tc_dblc): deprecation expired - removed.
12801 (scm_tc16_flo): deprecation expired - removed.
12802 (scm_tc_flo): deprecation expired - removed.
12803
12804 * tag.h (scm_tag): deprecation expired - removed.
12805
12806 * tag.c: (scm_tag): deprecation expired - removed.
12807
12808 * ioext.c: (scm_fseek): deprecation expired - removed.
12809
12810 * ioext.h (scm_fseek): deprecation expired - removed.
12811
12812 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12813
12814 * gh.h (gh_int2scmb): deprecation expired - removed.
12815
12816 2001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12817
12818 * stacks.c (scm_make_stack): Fix typo in docstring.
12819
12820 2001-04-27 Rob Browning <rlb@cs.utexas.edu>
12821
12822 * error.c (scm_sysmissing): deprecation expired - removed.
12823
12824 * error.h (scm_sysmissing): deprecation expired - removed.
12825
12826 * gc.c
12827 (scm_init_gc): gc-thunk deprecation expired - removed.
12828 (scm_gc_vcell): deprecation expired - removed.
12829 (gc_async_thunk): scm_gc_vcell related code removed.
12830
12831 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12832
12833 * strings.h
12834 (SCM_NSTRINGP): deprecation expired - removed.
12835 (SCM_NRWSTRINGP): deprecation expired - removed.
12836
12837 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12838
12839 * chars.h
12840 (SCM_ICHRP): deprecation expired - removed.
12841 (SCM_ICHR): deprecation expired - removed.
12842 (SCM_MAKICHR): deprecation expired - removed.
12843
12844 * ports.h
12845 (SCM_INPORTP): deprecation expired - removed.
12846 (SCM_OUTPORTP): deprecation expired - removed.
12847
12848 2001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12849
12850 * modules.c (scm_module_type): New.
12851 (scm_post_boot_init_modules): Initialize from Scheme value.
12852 (the_module, scm_current_module, scm_init_modules): the_module is
12853 now a C only fluid.
12854 (scm_current_module): Export to Scheme.
12855 (scm_set_current_module): Do not call out to Scheme, do all the
12856 work in C. Export procedure to Scheme. Only accept modules, `#f'
12857 is no longer valid as the current module. Only set
12858 scm_top_level_lookup_closure_var and scm_system_transformer when
12859 they are not deprecated.
12860 (scm_module_transformer, scm_current_module_transformer): New.
12861
12862 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12863 scm_current_module_transformer, scm_module_transformer): New.
12864
12865 * gh_data.c: Removed FIXME comment about gh_lookup returning
12866 SCM_UNDEFINED. That's the right thing to do.
12867
12868 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12869 into the conditionally compiled sections.
12870 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12871 scm_current_module_transformer instead of scm_system_transformer.
12872 * init.c (start_stack): Move initialization of
12873 scm_system_transformer to the deprecated section.
12874
12875 2001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12876
12877 * throw.c (scm_throw): Correct docstring.
12878
12879 2001-04-22 Gary Houston <ghouston@arglist.com>
12880
12881 * socket.c: attempted to improve the docstrings slightly.
12882
12883 * net_db.c: remove bogus "close" declaration.
12884 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12885 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12886 moved to socket.c.
12887 * net_db.h: declarations moved too.
12888
12889 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12890 long.
12891 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12892 (VALIDATE_INET6): new macro.
12893 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12894 inet-pton and inet-ntop.
12895 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12896 (scm_addr_vector): use ipv6_net_to_num.
12897
12898 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12899
12900 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12901 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12902
12903 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12904 when compiled in debug mode.
12905
12906 (scm_gc_sweep): Only call smob's free function if it is defined.
12907
12908 * print.c (scm_iprin1): No need to check for validity of smob
12909 type or existence of print function.
12910
12911 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12912 Resizing will not work well with preemptive threading.
12913
12914 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12915
12916 (scm_make_smob_type): Extracted initialization of smob
12917 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12918 of the critical section.
12919
12920 (scm_smob_prehistory): Initialize all smob descriptors. By
12921 default, don't assign a smob free function: Most smob types don't
12922 need one.
12923
12924 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12925
12926 2001-04-21 Gary Houston <ghouston@arglist.com>
12927
12928 * socket.c (FLIP_NET_HOST_128): new macro.
12929 (scm_fill_sockaddr): use new macro.
12930 (scm_addr_vector): completed IPv6 address support. added const
12931 to the address parameter.
12932
12933 2001-04-20 Gary Houston <ghouston@arglist.com>
12934
12935 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12936 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12937 is defined.
12938 (scm_addr_vector): use a switch instead of multiple if statements.
12939 Add support for IPv6 (incomplete) .
12940 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
12941
12942 2001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12943
12944 * struct.c (scm_free_structs): Only pairs may be accessed with
12945 SCM_C[AD]R.
12946
12947 2001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12948
12949 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12950
12951 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12952 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12953 parentheses in order to get the correct associativity.
12954
12955 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12956
12957 * unif.c (scm_array_to_list): Added missing handling of arrays of
12958 bytes. Thanks to Masao Uebayashi for the bug report.
12959
12960 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12961
12962 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12963 consistently.
12964
12965 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12966
12967 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12968
12969 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12970 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
12971 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
12972 SCM_CLOSURE_FORMALS.
12973
12974 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12975 (scm_i_procedure_arity): Prefer stronger predicates like
12976 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12977
12978 * macros.c (macro_print): Extracted macro printing code from
12979 print.c and simplified it.
12980
12981 (scm_macro_type): Use SCM_MACRO_TYPE;
12982
12983 (scm_init_macros): Use macro_print for printing macros.
12984
12985 * print.c (scm_print_opts): Improved option documentation.
12986
12987 (scm_iprin1): Extracted printing of macros to macros.c.
12988 Simplified printing of ordinary closures.
12989
12990 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12991 Martin Grabmueller for the bug report.
12992
12993 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12994
12995 This patch eliminates some further applications of SCM_C[AD]R to
12996 non pair cells.
12997
12998 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12999 never been applied to real pairs.
13000
13001 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
13002
13003 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
13004
13005 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
13006 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
13007 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
13008
13009 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
13010 Added.
13011
13012 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
13013 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
13014
13015 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
13016 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
13017 SCM_SET{AND,OR}_CAR.
13018
13019 2001-04-17 Gary Houston <ghouston@arglist.com>
13020
13021 * some initial support for IPv6:
13022
13023 * socket.c (scm_fill_sockaddr): improve the argument validation.
13024 don't allocate memory until all args are checked. instead of
13025 unconditional memset of soka, try setting sin_len to 0 if
13026 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
13027 (scm_socket, scm_connect): extend docstrings for IPv6.
13028 (scm_init_socket): intern AF_INET6 and PF_INET6.
13029
13030 2001-04-17 Niibe Yutaka <gniibe@m17n.org>
13031
13032 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
13033 matches SCM_DEFER_INTS at the beginning of the function.
13034
13035 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
13036
13037 * gc.c (scm_igc): Unconditionally call
13038 SCM_CRITICAL_SECTION_START/END.
13039
13040 * fluids.c (next_fluid_num): Unconditionally call
13041 SCM_CRITICAL_SECTION_START/END.
13042 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
13043
13044 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
13045 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
13046 Removed.
13047
13048 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
13049 Defined as nothing for the case of !defined(USE_THREADS).
13050 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
13051 Removed.
13052 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
13053 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
13054 LINE.
13055 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
13056 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
13057 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
13058 SCM_CRITICAL_SECTION_START/END.
13059 (SCM_REALLOW_INTS: Bug fix. Don't call
13060 SCM_THREAD_SWITCHING_CODE.
13061 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
13062 SCM_THREAD_SWITCHING_CODE directly.
13063 (SCM_ENTER_A_SECTION): Unconditionally use
13064 SCM_CRITICAL_SECTION_START/END. (was:
13065 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
13066
13067 2001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13068
13069 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
13070 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
13071 allowed to explicitly set this macro via the CFLAGS variable
13072 during make.
13073
13074 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
13075 (SCM_THREAD_CRITICAL_SECTION_START,
13076 SCM_THREAD_CRITICAL_SECTION_END): Renamed
13077 SCM_THREAD_CRITICAL_SECTION_START/END to
13078 SCM_CRITICAL_SECTION_START/END.
13079
13080 2001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
13081
13082 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
13083 instead of bzero.
13084
13085 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
13086 (MISSING_BZERO_DECL): Remove the declaration.
13087
13088 Thanks to NIIBE Yutaka.
13089
13090 2001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13091
13092 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
13093 goops module should be registered in order to work for an
13094 application which uses libguile statically linked.)
13095
13096 2001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
13097
13098 * numbers.[ch] (scm_num2long, scm_num2long_long,
13099 scm_num2ulong_long, scm_num2ulong): Argument position is an
13100 unsigned integer.
13101
13102 * environments.c (eval_environment_folder,
13103 import_environment_folder), gh_data.c (gh_scm2longs,
13104 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
13105 for integers and pointers, respectively.
13106
13107 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
13108 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
13109 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
13110 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
13111
13112 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
13113 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
13114 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
13115 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
13116 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
13117 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
13118
13119 2001-04-09 Neil Jerram <neil@ossau.uklinux.net>
13120
13121 * strings.c (scm_read_only_string_p): Update docstring to reflect
13122 current (non-)usage of "read only" strings.
13123 (scm_make_shared_substring): Clarify docstring by changing
13124 "semantics" to "arguments".
13125
13126 2001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13127
13128 * hooks.c (scm_make_hook, scm_make_hook_with_name),
13129 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
13130 improvements.
13131
13132 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13133
13134 The following changes make the documentation more consistent.
13135
13136 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
13137 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
13138 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
13139 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
13140 ... @end lisp.
13141
13142 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
13143 (scm_array_dimensions, scm_make_shared_array),
13144 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
13145 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
13146 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
13147 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
13148 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
13149 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
13150 macros.c (scm_makmmacro), list.c (scm_append), environments.c
13151 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
13152 @example ... @end example to @lisp ... @end lisp.
13153
13154 * weaks.c (scm_weak_vector): Corrected docstring.
13155
13156 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
13157 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
13158 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
13159 (scm_hashx_set_x, scm_hashx_get_handle),
13160 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
13161 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
13162 vectors.c (scm_vector_fill_x), strings.c
13163 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
13164 objprop.c (scm_set_object_properties_x):
13165 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
13166 strports.c (scm_call_with_input_string), ports.c
13167 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
13168 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
13169 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
13170 (scm_make_weak_vector,scm_weak_vector_p),
13171 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
13172 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
13173 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13174 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
13175 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
13176 Made parameter names match documentation by renaming parameters
13177 and/or fixing docstrings.
13178
13179 * numbers.c (scm_ash): Corrected Texinfo markup.
13180
13181 * strop.c (scm_string_index, scm_string_rindex),
13182 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
13183
13184 * vports.c (scm_make_soft_port), unif.c
13185 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
13186 (scm_dimensions_to_uniform_array, scm_transpose_array),
13187 (scm_array_in_bounds_p, scm_uniform_vector_ref),
13188 (scm_bit_count, scm_bit_position, scm_bit_count_star),
13189 (scm_array_to_list, scm_list_to_uniform_array),
13190 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
13191 (scm_open_input_string, scm_open_output_string),
13192 (scm_get_output_string), strop.c (scm_string_copy),
13193 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
13194 (scm_get_internal_real_time, scm_times),
13195 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
13196 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
13197 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
13198 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
13199 simpos.c (scm_system), random.c (scm_random_uniform),
13200 (scm_random_normal, scm_random_exp), ramap.c
13201 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
13202 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
13203 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
13204 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
13205 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
13206 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
13207 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
13208 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
13209 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
13210 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
13211 (scm_logand, scm_logior, scm_logxor, scm_lognot),
13212 (scm_integer_expt, scm_bit_extract, scm_logcount),
13213 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
13214 net_db.c (scm_inet_netof, scm_lnaof), modules.c
13215 (scm_interaction_environment), macros.c (scm_makacro),
13216 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
13217 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
13218 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
13219 (scm_fluid_ref), filesys.c (scm_open_fdes),
13220 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
13221 Docstring correction: `Returns' -> `Return'
13222
13223 * gc.c (scm_set_debug_cell_accesses_x):
13224 (s_scm_gc_set_debug_check_freelist_x):
13225 * fluids.c (scm_fluid_p): Added texinfo markup.
13226
13227 * error.c (scm_strerror): Made docstring more precise.
13228
13229 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
13230 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
13231 (scm_symbol_p, scm_symbol_to_string), strorder.c
13232 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
13233 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
13234 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
13235 (scm_string_ci_geq_p), strop.c (scm_string_copy),
13236 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
13237
13238 2001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
13239
13240 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
13241 mode, as suggested by Michael Livshin.
13242
13243 2001-03-31 Michael Livshin <mlivshin@bigfoot.com>
13244
13245 * backtrace.c (display_backtrace_body): since the `print_state'
13246 variable is not used (instead its data field is used directly as
13247 `pstate'), protect it from the hungry compiler optimizations.
13248 thanks to Bill Schottstaedt for the report.
13249
13250 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13251
13252 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
13253 It is only defined and used if guile is compiled with
13254 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
13255 let cells with a free_cell type tag be visible outside of the
13256 garbage collector when in debug mode.
13257
13258 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
13259
13260 (scm_assert_cell_valid): Use a local static variable to avoid
13261 recursion.
13262
13263 (MARK): Only check for rogue cell pointers in debug mode. Use
13264 scm_cellp for this purpose and place all checks for rogue pointers
13265 into that function. Further, since due to conservative scanning
13266 we may encounter free cells during marking, don't use the standard
13267 cell type accessor macro to determine the cell type.
13268
13269 (scm_cellp): Check if the cell pointer actually points into a
13270 card header.
13271
13272 (scm_init_gc): Initalize scm_tc16_allocated.
13273
13274 * gc.h (GCH): Renamed to SCM_GC_H.
13275
13276 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
13277 might be unnecessary, but I feel better this way :-)
13278
13279 (SCM_GC_CELL_TYPE): New macro.
13280
13281 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
13282 in guile, and it is unlikely that they will be applied to real
13283 pairs anyway.
13284
13285 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
13286
13287 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
13288 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
13289
13290 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
13291 make sure that in debug mode no free cell will ever be visible
13292 outside of the garbage collector.
13293
13294 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13295
13296 * async.c (scm_asyncs_pending): Don't use != to compare SCM
13297 values.
13298
13299 * async.c (scm_system_async), variable.c (scm_make_variable,
13300 scm_make_undefined_variable): Use scm_cons to create a pair.
13301
13302 * debug.c (scm_reverse_lookup): Perform proper type checking.
13303 Remove suspicious use of SCM_SLOPPY_CONSP.
13304
13305 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
13306 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
13307 the corresponding optimization.
13308
13309 * eval.c (iqq): Use proper type check.
13310
13311 (scm_m_expand_body): Remove redundant type checks.
13312
13313 (promise_print): Don't access promise cells as pairs.
13314
13315 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
13316 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
13317 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
13318 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
13319 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
13320
13321 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
13322 (scm_iprin1): Use new macro predicate and accessors.
13323
13324 * eval.h (scm_tc16_macro): Removed declaration. It is declared
13325 in macros.h.
13326
13327 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
13328 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
13329 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
13330 SCM_VARIABLE_H. Even the macros that are used to inhibit
13331 including a header file twice should be in the SCM_ namespace.
13332
13333 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
13334 properties.c (scm_primitive_property_ref,
13335 scm_primitive_property_del_x): Prefer stronger predicates like
13336 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13337
13338 * gc.c (MARK): Use proper macros to access procedure-with-setter
13339 cell elements and closure cell elements.
13340
13341 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
13342 access free cells as pairs.
13343
13344 (scm_unprotect_object): scm_hashq_get_handle returns #f if
13345 no hashtab entry is found.
13346
13347 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
13348 SCM_CLR_PORT_OPEN_FLAG.
13349
13350 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
13351 use SCM_SET_C[AD]R for uninitialized cells.
13352
13353 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
13354 If the hashtable has no slots, return #f instead of '(). This
13355 unifies the return value with most assoc-functions.
13356
13357 (scm_hash_fn_ref): Use proper type check.
13358
13359 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
13360 Removed references to non-existing functions from documentation.
13361
13362 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
13363 access keyword cell elements.
13364
13365 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
13366 macros.
13367
13368 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
13369
13370 * print.c (scm_iprlist): Added comment. Improved loop
13371 conditions.
13372
13373 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
13374 pairs.
13375
13376 * smob.c (scm_markcdr): Don't access smob cells as pairs.
13377
13378 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
13379
13380 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
13381 cells as pairs.
13382
13383 * variable.c (variable_print, variable_equalp, scm_variable_ref,
13384 scm_variable_set_x): Use proper macros to access variable cell
13385 elements.
13386
13387 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
13388
13389 * variable.h (SCM_VARVCELL): Don't access variable cells as
13390 pairs.
13391
13392 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
13393 added FIXME comment, removed register specifier.
13394
13395 2001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
13396
13397 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
13398 * init.c (scm_init_guile_1): Don't init goopscore module.
13399
13400 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13401
13402 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
13403
13404 2001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13405
13406 * strop.c (scm_string_to_list): Fixed docstring markup.
13407 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
13408 (scm_string_downcase, scm_string_capitalize_x),
13409 (scm_string_capitalize): Rewrote and corrected docstrings.
13410 (scm_string_ci_to_symbol): Made docstring more explicit.
13411
13412 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13413
13414 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
13415 eval.c can use it.
13416 (scm_call_with_values): Removed.
13417 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
13418 so that it can be exported.
13419 (scm_call_with_values): Removed.
13420
13421 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
13422 * eval.c: Include "libguile/values.h"
13423 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
13424 New.
13425 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
13426 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
13427 New delcarations to support above change.
13428
13429 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
13430 errors with last change.
13431
13432 2001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
13433
13434 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
13435 scm_i_eval): Moved the application of the system transformer from
13436 scm_i_eval to scm_primitive_eval.
13437
13438 2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
13439
13440 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
13441
13442 * strop.c (scm_string_index): Fix docstring line break
13443 regression.
13444
13445 * list.c (scm_cons_star): Fix docstring typo.
13446
13447 2001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13448
13449 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
13450 (big2str), ports.c (scm_drain_input), read.c (scm_read,
13451 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
13452 scm_make_string, scm_string_append), strports.c (st_resize_port,
13453 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
13454 scm_makstr with calls to scm_allocate_string.
13455
13456 * strings.[ch] (scm_allocate_string): New function.
13457
13458 * strings.[ch] (scm_makstr): Deprecated.
13459
13460 2001-03-18 Gary Houston <ghouston@arglist.com>
13461
13462 * posix.c (scm_tmpnam): check that return value from tmpnam is not
13463 NULL. rewrote the docstring.
13464 (scm_mkstemp): new procedure implementing "mkstemp!".
13465 * posix.h: declare scm_mkstemp.
13466
13467 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
13468 normally it would be found in netdb.h.
13469
13470 2001-03-17 Gary Houston <ghouston@arglist.com>
13471
13472 * sort.c (scm_sort): move sortvec variable to avoid a compiler
13473 warning when HAVE_ARRAYS is not defined. move len too.
13474
13475 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
13476 (EXTRA_DOT_X_FILES): let configure set the value.
13477 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
13478
13479 * gc.c (scm_must_malloc): changed the comment explaining when
13480 scm_must variants of malloc/free etc., should be used, based on
13481 explanation from Dirk Herrmann.
13482 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
13483 string with procedure name. use scm_must_malloc instead of malloc.
13484 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
13485 of malloc/free.
13486 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
13487 scm_ungetc): use scm_must variants of malloc/realloc/free.
13488 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
13489
13490 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13491
13492 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13493 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
13494 scm_wrong_type_arg instead.
13495
13496 (SCM_WNA): Deprecated.
13497
13498 * error.[ch] (scm_wta): Deprecated.
13499
13500 * numbers.c (s_i_log): Minor comment fix.
13501
13502 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
13503 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
13504 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
13505 wrong-num-args or misc errors.
13506
13507 * unif.c (scm_make_shared_array, scm_transpose_array,
13508 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
13509 Validate the rest argument (note: this is only done when guile is
13510 built with SCM_DEBUG_REST_ARGUMENT=1)
13511
13512 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
13513 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
13514
13515 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
13516 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
13517
13518 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13519
13520 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
13521 instead of scm_wrong_num_args.
13522
13523 * coop-threads.c: Don't include libguile/strings.h. (Was only
13524 needed for former implementation of SCM_WRONG_NUM_ARGS.)
13525
13526 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
13527 wrong-num-args errors.
13528
13529 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13530
13531 * error.[ch] (scm_error_num_args_subr): New function.
13532
13533 2001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13534
13535 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
13536 (scm_length, scm_append, scm_reverse, scm_list_ref),
13537 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
13538 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
13539 (scm_delete1_x), gc.c (scm_map_free_list),
13540 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
13541 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
13542 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
13543 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
13544 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
13545 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
13546 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
13547
13548 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
13549 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13550 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
13551 symbols.c (scm_symbol_interned_p), numbers.c
13552 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
13553 markup.
13554
13555 2001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
13556
13557 * snarf.h (SCM_CONST_LONG): Deprecated.
13558 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
13559
13560 2001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13561
13562 * numbers.c (scm_num2ulong): Check that a bignum is positive
13563 before looking at the magnitude. Correctly check for overflow
13564 during conversion.
13565 (scm_num2long_long): Likewise.
13566 (scm_num2ulong_long): New.
13567 (ULONG_LONG_MAX): Define if not already defined.
13568 * numbers.h: (scm_num2ulong_long): New prototype.
13569
13570 2001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13571
13572 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
13573
13574 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
13575 (SCM_OPOUTSTRPORTP): New predicate macros.
13576 (scm_open_input_string, scm_open_output_string),
13577 (scm_get_output_string): New prototypes.
13578
13579 * strports.c (scm_open_input_string, scm_open_output_string),
13580 (scm_get_output_string): New procedures (SRFI-6 compliant).
13581 Made scm_tc16_strport non-static.
13582
13583 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13584
13585 * macros.h (SCM_ASSYNT): Removed unused object argument from
13586 signature.
13587
13588 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
13589 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
13590 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
13591 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
13592 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
13593 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
13594 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
13595 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13596 scm_m_atdispatch): Removed unused object argument from call to
13597 SCM_ASSYNT.
13598
13599 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13600
13601 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
13602 const int* to reflect that the input array of integers remains
13603 unchanged. Thanks to Brett Viren for the hint.
13604
13605 2001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13606
13607 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
13608 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
13609 in various places.
13610 (gh_scm2newstr, gh_symbol2newstr): Change call to
13611 scm_must_malloc() to malloc(), because user-free()able memory is
13612 allocated.
13613
13614 * gc.c: Added declaration of `scm_debug_check_freelist'.
13615
13616 2001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13617
13618 * ports.c (scm_port_mode): Changed `mode' array size to 4.
13619
13620 2001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
13621
13622 * strports.c (scm_object_to_string): New procedure.
13623 (scm_strprint_obj): Deprecated.
13624 * strports.h: Reflect the changes.
13625
13626 2001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
13627
13628 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
13629
13630 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13631 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
13632 SCM_ASSYNT to check for correct argument types. Either use some
13633 SCM_VALIDATE_* macro or an explicit test.
13634
13635 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
13636 misc-errors.
13637
13638 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
13639 instead of calling scm_wta.
13640
13641 2001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13642
13643 * load.c (scm_primitive_load, scm_primitive_load_path),
13644 (scm_sys_search_load_path): Corrected docstrings (file ->
13645 filename).
13646
13647 * eval.c (scm_force): Added texinfo markup to docstring.
13648 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13649
13650 * debug-malloc.c: Reinserted #include <stdio.h>.
13651
13652 2001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13653
13654 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13655
13656 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13657 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13658 Use SCM_LISTn instead of scm_listify.
13659
13660 2001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13661
13662 * _scm.h: Removed #include <errno.h>.
13663
13664 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13665 errno variable (can be a macro on some systems, for example when
13666 using linux libc with threads).
13667
13668 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13669 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13670 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13671 #include <errno.h> in these 20 out of 100 files.
13672
13673 2001-03-10 Gary Houston <ghouston@arglist.com>
13674
13675 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13676 not already defined.
13677
13678 2001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13679
13680 * coop.c: Inserted #include <stdio.h>.
13681
13682 * iselect.c: Reinserted #include <stdio.h>.
13683
13684 2001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13685
13686 * posix.c: Replaced `#define' of __USE_XOPEN right before
13687 including unistd.h with a define of _GNU_SOURCE at the very top of
13688 the file.
13689
13690 2001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13691
13692 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13693 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13694 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13695 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13696 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13697 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13698 print.c, procprop.c, procs.c, properties.c, ramap.c,
13699 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13700 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13701 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
13702 Remove #include <stdio.h>
13703 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13704
13705 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13706
13707 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13708
13709 * posix.c (scm_gethostname): Set initial name length to 256 for
13710 Solaris.
13711
13712 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13713
13714 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13715 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13716 (scm_sethostname, scm_gethostname): New prototypes.
13717
13718 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13719 <sys/file.h>, if present.
13720 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13721 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13722 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13723 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13724 (scm_sethostname, scm_gethostname): New procedures.
13725
13726 2001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13727
13728 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13729 not optional (ii) "recommend" spelling correction.
13730
13731 2001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13732
13733 * ramap.c (racp): Removed optimization which caused array copying
13734 to fail if the two arrays shared storage. Re-inserted the IVDEP
13735 macros removed in the change of 2000-03-09. (Don't really have a
13736 complete grasp of what they are for, but they seem to be necessary
13737 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13738
13739 * hash.c (scm_string_hash): Don't downcase characters.
13740
13741 2001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13742
13743 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
13744 size from 277 --> 1009.
13745
13746 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13747 function.
13748
13749 * coop-threads.c: Fixed change of 2001-03-06.
13750
13751 * validate.h: Code formatting.
13752
13753 2001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13754
13755 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13756 (*.doc): Add dependency on guile-snarf.awk.in.
13757
13758 * guile-snarf.awk.in: Neglect spaces at the end of
13759 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13760 middle of docstrings. (To avoid the problem with gcc-2.96.)
13761
13762 2001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13763
13764 * coop-threads.c (scm_call_with_new_thread), load.c
13765 (scm_primitive_load, scm_sys_search_load_path), random.c
13766 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13767 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13768 (potentially) issue a scm-misc-error or wrong-num-args error
13769 message.
13770
13771 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13772 about the expected type with the wrong-type-arg error message.
13773
13774 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13775 a C level bug that can't be fixed from scheme anyway.
13776
13777 2001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13778
13779 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13780 Duplicate bindings are OK in a let* since a let* is semantically
13781 equivalent to a nested set of let:s.
13782
13783 2001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13784
13785 * print.c (scm_print_options): Fixed texinfo in docstring.
13786
13787 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13788 the underlying functions getservent, getprotoent or getnetent
13789 return NULL instead of signalling an error.
13790
13791 2001-03-04 Gary Houston <ghouston@arglist.com>
13792
13793 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13794 taking an unexpectedly large filename for an AF_UNIX socket from
13795 bind/connect/sendto (thanks to Martin Grabmueller).
13796
13797 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13798 former and adjusted the latter.
13799 (scm_socket, scm_socketpair): cosmetic changes.
13800 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13801 size_t as socklen_t substitute. don't restrict args/return values
13802 to INUM: allow full range of int or size_t.
13803 (scm_fill_sockaddr): check arguments before allocating memory, to
13804 avoid leakage. use malloc, not scm_must_malloc.
13805 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13806 substitute. free the sockaddr structure before throwing an error.
13807 (scm_init_add_buffer): procedure removed, together with its static
13808 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13809 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13810 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13811 scm_sendto): use a local buffer instead of scm_addr_buffer.
13812 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13813 not size_t.
13814 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13815 call to detect whether recvfrom could be bothered to set the address.
13816 (scm_init_socket): don't call scm_init_addr_buffer.
13817
13818 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13819
13820 * debug.c (scm_procedure_source, scm_procedure_environment),
13821 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13822 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13823 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13824 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13825 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13826 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13827 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13828 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13829 scm_array_to_list, scm_array_prototype), validate.h
13830 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13831 scm_misc_error or scm_wrong_type_arg instead.
13832
13833 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13834
13835 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13836
13837 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13838 (scm_sys_tag_body): Added.
13839
13840 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13841
13842 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13843 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13844 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13845 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13846 options.c (scm_options), ports.c (scm_remove_from_port_table),
13847 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13848 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13849 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13850 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13851 instead.
13852
13853 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13854
13855 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13856
13857 2001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13858
13859 * eval.c (scm_s_duplicate_bindings): New error message.
13860 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13861
13862 2001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13863
13864 * eval.h (SCM_EVALIM2): New macro. Use it when a
13865 immediate, literal constant should be evaluated.
13866 * eval.c (scm_s_duplicate_formals): New error message string.
13867 (scm_c_improper_memq): New function.
13868 (scm_m_lambda): Check for duplicate arguments.
13869 (scm_ceval, scm_deval): When executing a body: only cons a new
13870 toplevel environment frame when it is different from the
13871 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13872 check for empty combinations; use SCM_EVALIM2 for the same reason
13873 in the non-toplevel loop.
13874 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13875 New labels with the meaning of their non-"nontoplevel" partners,
13876 but they are used when it is known that the body is not evaluated at
13877 top-level.
13878 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13879 reporting for empty combinations.
13880
13881 2001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13882
13883 * Remove dump facilities.
13884 * dump.c, dump.h: Removed.
13885 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13886 * init.c: Remove #include "libguile/dump.h".
13887 (scm_init_guile_1): Remove scm_init_dump.
13888 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13889 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13890 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13891 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13892
13893 * keywords.c: Remove #include "libguile/dump.h".
13894 (keyword_dump, keyword_undump): Removed.
13895 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13896
13897 2001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13898
13899 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13900 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13901 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13902 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13903 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13904 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13905 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13906 to @code{} as the texinfo manual recommends, converted the
13907 examples to use a @lisp{}-environment.
13908
13909 * strports.c (scm_eval_string): Cleaned up the docstring.
13910
13911 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13912 markup.
13913
13914 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13915 (scm_number_to_string, scm_string_to_number, scm_number_p)
13916 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13917 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13918 (scm_ash): Added texinfo markup and removed obsolete @refill.
13919 (scm_gr_p): Corrected comment.
13920 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13921 docstring) comments.
13922 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13923 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13924 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13925 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13926 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13927 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13928 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13929 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13930
13931 2001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13932
13933 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13934 (Obviously nobody compiles with SCM_RECKLESS defined...)
13935
13936 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13937
13938 2001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13939
13940 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13941
13942 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13943
13944 2001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13945
13946 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13947 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13948 since use of `z' suggests that the arguments may be complex.
13949
13950 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13951 typos.
13952
13953 2001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13954
13955 * dump.c (scm_binary_write, scm_binary_read), eval.c
13956 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13957 scm_guardian_greedy_p, scm_make_guardian), fports.c
13958 (scm_file_port_p): Minor docstring fixes.
13959
13960 2001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13961
13962 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
13963
13964 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13965 scm_i_eval.
13966 (make_class_from_template): Do not bother to set the current
13967 module around the call to DEFVAR, scm_eval takes care of that.
13968 (scm_init_goops): Make scm_module_goops and
13969 scm_goops_lookup_closure permanent objects.
13970
13971 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13972 top level, create a fresh top-level environment for each
13973 expression instead of mutating the exisint frame. This is
13974 important when that frame is closed over.
13975
13976 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13977 SCM_DIGSPERLONG instead of DIGSPERLONG.
13978
13979 2001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13980
13981 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13982 before applying arrow procedure in `cond' and before applying
13983 receiver procedure in call-with-current-continuation.
13984 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13985 macro. The argument is expanded more than one time.
13986
13987 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13988 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13989
13990 2001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13991
13992 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13993 notice and license.
13994
13995 2001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13996
13997 * variable.c (scm_make_variable, scm_make_undefined_variable)
13998 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13999 (scm_variable_bound_p), values.c (scm_values)
14000 (scm_call_with_values), unif.c (scm_bit_count)
14001 (scm_bit_set_star_x), symbols.c (scm_gentemp)
14002 (scm_gensym), strings.c (scm_string_p, scm_make_string)
14003 (scm_read_only_string_p, scm_string_length, scm_string_ref)
14004 (scm_string_set_x, scm_substring, scm_string_append), stime.c
14005 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
14006 (scm_copy_random_state, scm_random), print.c (scm_newline)
14007 (scm_write_char, scm_simple_format), debug-malloc.c
14008 (scm_malloc_stats), environments.c (scm_environment_p)
14009 (scm_environment_bound_p, scm_environment_ref)
14010 (scm_environment_fold, scm_environment_define)
14011 (scm_environment_undefine, scm_environment_set_x)
14012 (scm_environment_cell, scm_environment_observe)
14013 (scm_environment_observe_weak, scm_environment_unobserve)
14014 (scm_make_eval_environment, scm_eval_environment_p)
14015 (scm_eval_environment_set_local_x, scm_eval_environment_local)
14016 (scm_eval_environment_imported)
14017 (scm_eval_environment_set_imported_x, scm_make_import_environment)
14018 (scm_import_environment_p, scm_import_environment_imports)
14019 (scm_import_environment_set_imports_x, scm_make_export_environment)
14020 (scm_export_environment_p, scm_export_environment_private)
14021 (scm_export_environment_set_private_x)
14022 (scm_export_environment_signature)
14023 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
14024 Added texinfo markup.
14025
14026 * ports.c (scm_drain_input): Lowercased argument to @var.
14027 (scm_current_input_port, scm_current_output_port): Filled in
14028 missing explanation.
14029 (scm_current_load_port, scm_set_current_output_port)
14030 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
14031 Added texinfo markup.
14032
14033 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
14034 (scm_release_arbiter): Added texinfo markup to docstrings.
14035 Changed `Returns' to `Return'.
14036 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
14037
14038 2001-02-16 Neil Jerram <neil@ossau.uklinux.net>
14039
14040 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
14041 by doubling them to `@@'.
14042
14043 2001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14044
14045 * numbers.c (scm_lognot), random.c (scm_random,
14046 scm_random_normal, scm_random_solid_sphere_x,
14047 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
14048 scm_random_exp), dynwind.c
14049 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
14050
14051 * goops.c (scm_sys_initialize_object, scm_instance_p,
14052 scm_class_name, scm_class_precedence_list, scm_class_slots,
14053 scm_class_environment, scm_generic_function_name,
14054 scm_generic_function_methods, scm_method_generic_function,
14055 scm_method_specializers, scm_method_procedure, scm_make_unbound,
14056 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
14057 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
14058 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
14059 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
14060 scm_class_direct_supers, scm_class_direct_slots,
14061 scm_class_direct_subclasses, scm_class_direct_methods,
14062 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
14063 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
14064 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
14065 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
14066 scm_memoized_environment, scm_procedure_name,
14067 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
14068 objects.c
14069 (scm_class_of, scm_entity_p, scm_operator_p,
14070 scm_set_object_procedure_x, scm_object_procedure,
14071 scm_make_class_object), hooks.c (scm_make_hook_with_name,
14072 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
14073 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
14074 scm_hook_to_list), lang.c
14075 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
14076 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
14077 (scm_print_options, scm_port_with_print_state,
14078 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
14079 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
14080 scm_make_procedure_with_setter, scm_procedure), throw.c
14081 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
14082 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
14083 scm_stack_ref, scm_stack_length, scm_frame_p,
14084 scm_last_stack_frame, scm_frame_number, scm_frame_source,
14085 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
14086 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
14087 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
14088 (scm_dirname, scm_basename), dynwind.c
14089 (scm_wind_chain), read.c (scm_read_options, scm_read,
14090 scm_read_hash_extend), gc.c
14091 (scm_unhash_name), eval.c (scm_eval_options_interface,
14092 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
14093 (scm_display_error, scm_set_print_params_x,
14094 scm_display_application, scm_display_backtrace, scm_backtrace),
14095 async.c (scm_async, scm_system_async, scm_async_mark,
14096 scm_system_async_mark, scm_run_asyncs, scm_noop,
14097 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
14098 scm_mask_signals): Added docstrings.
14099
14100 2001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
14101
14102 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
14103 address of car/cdr. (Thanks to Dirk Herrmann)
14104 Use scm_sizet to obtain the length of strings.
14105 (Thanks to Matthias Koeppe)
14106
14107 2001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
14108
14109 * symbols.c (scm_mem2symbol): Put a empty statement after the
14110 next_symbol label. This is mandated by ANSI, appearantly.
14111
14112 2001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14113
14114 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
14115 sense to compile for a specific kernel version. Do not include
14116 <asm/signal.h> while defining __KERNEL__. This hack should no
14117 longer be needed and caused problems.
14118
14119 2001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
14120
14121 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
14122 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
14123 can not deal with immediates.
14124
14125 2001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
14126
14127 * list.c (scm_list_copy): Validate the first argument.
14128
14129 2001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
14130
14131 Fix evaluator so that top-level expressions are correctly
14132 evaluated with respect to the module system.
14133
14134 * modules.h. modules.c (scm_current_module_lookup_closure): New
14135 function.
14136
14137 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
14138 prototypes.
14139 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
14140 names to better reflect their meaning.
14141
14142 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
14143 evaluated at top-level and synronize lookup closure before
14144 executing every subform.
14145 (scm_primitve_eval_x, scm_primitive_eval): New functions.
14146 (scm_eval_x, scm_eval): Reimplement in terms of
14147 scm_primitive_eval_x and scm_primitive_eval, respectively.
14148
14149 2001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
14150
14151 * macros.c (scm_macro_name, scm_macro_transformer): Use
14152 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
14153 Thanks!
14154
14155 2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
14156
14157 * dump.c (scm_store_bytes): Store data size before data.
14158 (scm_restore_bytes): Restore data size. Takes a pointer to size.
14159 * dump.h (scm_restore_bytes): Updated.
14160
14161 2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
14162
14163 * dump.c: Use double cells for update schedule.
14164
14165 2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
14166
14167 * ports.c (scm_unread_char): Take an optional argument.
14168
14169 2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14170
14171 * modules.h (scm_selected_module, scm_current_module): Renamed
14172 scm_selected_module to scm_current_module to synchronize Scheme
14173 and C names.
14174 (scm_select_module, scm_set_current_module): Likewise. Changed
14175 all uses.
14176
14177 * ports.c (scm_port_for_each): Make a snapshot of the port table
14178 before iterating over it. The table might change while the user
14179 code is running. With the snapshot, the user can depend on the
14180 fact that each port that existed at the start of the iteration is
14181 encountered exactly once. (ice-9 popen) depends on this.
14182
14183 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14184
14185 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
14186
14187 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
14188 range checking for the size parameter. Thanks to Martin
14189 Grabmueller for the hint.
14190
14191 (scm_makstr): Reordered string initialization to make interrupt
14192 deferring unnecessary.
14193
14194 * vectors.c (scm_make_vector): Fixed range checking.
14195
14196 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14197
14198 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
14199
14200 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
14201 checking of the size parameter for type correctness and valid
14202 range. Thanks to Rob Browning for reporting the problem. Instead
14203 of deferring interrupts, scm_remember_upto_here_1 is used.
14204
14205 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14206
14207 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
14208 (scm_dump_cell_update): Removed.
14209 (scm_dump_update): Renamed from scm_dump_object_update.
14210 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
14211 a pointer instead of returning a value.
14212 * keywords.c (keyword_undump): Updated.
14213
14214 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14215
14216 * dump.c, dump.h: Modified a lot.
14217 (SCM_DUMP_COOKIE): Version 0.1
14218 (scm_dump_mark): Removed.
14219 (scm_restore_cell_object, scm_store_cell_object): New functions.
14220
14221 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
14222 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
14223 New slots: dump, undump.
14224 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
14225 Updated.
14226
14227 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
14228 (keyword_undump): Renamed from keyword_alloc.
14229 (scm_init_keywords): Set keyword_dump and keyword_undump.
14230
14231 2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
14232
14233 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
14234 the deprecated SCM_DOUBLE_CELLP.
14235
14236 * tags.h (SCM_DOUBLE_CELLP): deprecated.
14237
14238 2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
14239
14240 * dump.c, dump.h: New files.
14241 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
14242 * init.c: #include "libguile/dump.h".
14243 (scm_init_guile_1): Call scm_init_dump.
14244 * smob.h (scm_smob_descriptor): New slots: dump_mark,
14245 dump_dealloc, dump_store, undump_alloc, undump_restore,
14246 undump_init.
14247 * smob.c (scm_make_smob_type): Init the new slots.
14248 (scm_set_smob_dump, scm_set_smob_undump): New functions.
14249 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
14250
14251 * keywords.c: #include "libguile/dump.h".
14252 (keyword_dealloc, keyword_alloc): New functions.
14253 (scm_init_keywords): Set smob_dump and smob_undump.
14254
14255 2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
14256
14257 * vectors.c (scm_c_make_vector): New function.
14258 * vectors.h (scm_c_make_vector): Declared.
14259 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
14260 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
14261 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
14262 (scm_make_method_cache, scm_i_vector2list,
14263 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
14264 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
14265 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
14266 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
14267 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
14268 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
14269 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
14270 (scm_vector, scm_make_vector): Use scm_c_make_vector.
14271
14272 * hashtab.c (scm_c_make_hash_table): New function.
14273 * hashtab.h (scm_c_make_hash_table): Declared.
14274 * environments.c (scm_make_leaf_environment,
14275 scm_make_eval_environment), gc.c (scm_init_storage),
14276 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
14277 Use scm_c_make_hash_table.
14278
14279 2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14280
14281 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
14282
14283 2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14284
14285 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
14286 end of docstring.
14287
14288 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
14289 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
14290 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
14291 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
14292 srcprop.c (scm_source_properties, scm_set_source_properties_x,
14293 scm_source_property, scm_set_source_property_x), sort.c
14294 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
14295 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
14296 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
14297 docstrings.
14298
14299 2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14300
14301 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
14302 really get that arg.
14303
14304 2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
14305
14306 * goops.c (s_scm_get_keyword): Bug fix.
14307
14308 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14309
14310 The following patch was sent by Martin Grabmueller. It makes sure
14311 that in case of parameter errors the correct function name is
14312 shown, and that parameter types are only checked once.
14313
14314 * strop.c (string_copy, string_upcase_x, string_downcase_x,
14315 string_capitalize_x): New functions. Each one performs the core
14316 functionality of the corresponding scm_* function.
14317
14318 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
14319 scm_string_downcase_x, scm_string_downcase,
14320 scm_string_capitalize_x, scm_string_capitalize): Reduced to
14321 parameter checking wrappers of the above functions.
14322
14323 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14324
14325 * continuations.c, dynl.c, keywords.c, load.c: Include
14326 strings.h. Thanks to Bill Schottstaedt for the bug report.
14327
14328 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14329
14330 * backtrace.c (display_header): Make sure that line and column
14331 information is shown independent of whether the port the code was
14332 read from had an associated filename. Thanks to Martin
14333 Grabmueller for providing this patch.
14334
14335 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14336
14337 * fports.[ch] (scm_file_port_p): New primitive.
14338
14339 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14340
14341 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
14342 These are now defined in fports.c, strports.c and vports.c.
14343
14344 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
14345 vports.c (scm_tc16_sfport): Made variables (were macros defined in
14346 tags.h).
14347
14348 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
14349 (scm_make_sfptob): Made static. These return a type code now.
14350
14351 fports.c (scm_init_fports), strports.c (scm_init_strports),
14352 vports.c (scm_init_vports): Create the corresponding port types.
14353
14354 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
14355 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
14356
14357 * init.c (scm_init_guile_1): Make sure strports are initialized
14358 before gdbint.
14359
14360 * ports.[ch] (scm_make_port_type): Changed the return type to
14361 scm_bits_t.
14362
14363 * ports.c (scm_ports_prehistory): Don't create any port types
14364 here.
14365
14366 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
14367 against scm_tc16_fport directly.
14368
14369 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14370
14371 * srcprop.c (scm_set_source_property_x): Fix to handle
14372 (set-source-property! <obj> 'copy <datum>) correctly.
14373
14374 2001-01-24 Gary Houston <ghouston@arglist.com>
14375
14376 * filesys.c (scm_link): docstring fix.
14377 * fports.h (scm_setfileno): obsolete declaration removed.
14378 * posix.c: bogus popen declaration removed.
14379
14380 * rdelim.c: new file, split from ioext.c.
14381 * rdelim.h: new file, split from ioext.h
14382 * Makefile.am: add rdelim.c and related files.
14383 * init.c: call scm_init_rdelim. include rdelim.h.
14384
14385 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14386
14387 This patch was sent by Martin Grabmueller and makes sure that
14388 parameter errors are reported correctly by the lexicographic
14389 ordering predicates.
14390
14391 * strorder.c (string_less_p, string_ci_less_p): New functions.
14392
14393 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
14394 functionality into string_less_p, string_ci_less_p respectively.
14395 The remaining code is just a wrapper to do the parameter
14396 checking.
14397
14398 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
14399 parameters and call string_less_p instead of scm_string_less_p.
14400
14401 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
14402 Check the parameters and call string_less_ci_p instead of
14403 scm_string_ci_less_p.
14404
14405 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14406
14407 This patch modifies scm_display_error to perform parameter
14408 checking. Thanks to Neil Jerram for the bug report.
14409
14410 * backtrace.[ch] (scm_i_display_error): New function.
14411
14412 * backtrace.c (scm_display_error): Added parameter check and
14413 extracted the core functionality into function
14414 scm_i_display_error.
14415
14416 * throw.c (handler_message): Call scm_i_display_error to display
14417 the error message.
14418
14419 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14420
14421 * eval.c (SCM_APPLY): Added # args check for application of
14422 procedures with arity 3. (Thanks to Anders Holst.)
14423
14424 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14425
14426 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
14427
14428 (SCM_OPDIRP): Deprecated.
14429
14430 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
14431 SCM_OPN.
14432
14433 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
14434 Instead, give an explicit error message in case the directory is
14435 closed.
14436
14437 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
14438 instead of SCM_OPENP and SCM_CLOSEDP.
14439
14440 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
14441
14442 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
14443
14444 * eval.c (inner_eval, scm_eval): Move all real functionality into
14445 inner_eval. Avoid to copy the expression twice by inlining some
14446 code from scm_i_eval.
14447
14448 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
14449
14450 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
14451 now has to be the last clause, as required by R5RS. Thanks to
14452 Martin Grabmueller for the patch.
14453
14454 2001-01-18 Gary Houston <ghouston@arglist.com>
14455
14456 * ioext.c: further simplify scm_read_string_x_partial by defining
14457 a macro SCM_EBLOCK.
14458
14459 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14460
14461 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
14462
14463 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14464
14465 * __scm.h: Added comment about architecture and compiler
14466 properties that are required by guile.
14467
14468 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14469 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
14470
14471 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
14472
14473 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
14474
14475 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14476 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
14477
14478 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
14479
14480 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
14481 to the names in limits.h.
14482
14483 * numbers.c (abs_most_negative_fixnum): Added.
14484
14485 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
14486 fixnum-min) special case.
14487
14488 (scm_big_and): Fix for negative first parameter.
14489
14490 (scm_bit_extract): Fix for fixnum paramters.
14491 Thanks to Rob Browning for the bug report.
14492
14493 (scm_init_numbers): Initialize abs_most_negative_fixnum.
14494
14495 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
14496
14497 * symbols.c (scm_symbol_bound_p): Fixed comment.
14498 Thanks to Chris Cramer.
14499
14500 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
14501
14502 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
14503 Thanks to Bill Schottstaedt.
14504
14505 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
14506
14507 from Matthias Köppe:
14508
14509 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
14510 casts its result, so doesn't yield an lvalue per ANSI C.
14511
14512 * goops.c (s_scm_sys_set_object_setter_x): use
14513 SCM_SET_ENTITY_SETTER.
14514 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
14515
14516 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
14517 its result, so doesn't yield an lvalue per ANSI C.
14518 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
14519 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
14520 SCM_GC_SET_CARD_FLAGS.
14521 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
14522
14523 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
14524
14525 2001-01-08 Gary Houston <ghouston@arglist.com>
14526
14527 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
14528 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
14529 socket.c (scm_recvfrom): use the new macro, plus minor docstring
14530 changes.
14531 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
14532 for fdes. if current input port is used, check that it's a file
14533 port.
14534
14535 2001-01-06 Gary Houston <ghouston@arglist.com>
14536
14537 * ioext.c (scm_read_string_x_partial): new procedure, implements
14538 read-string!/partial.
14539 * ports.c (scm_take_from_input_buffers): new procedure used by
14540 scm_read_string_x_partial.
14541 (scm_drain_input): use scm_take_from_input_buffers.
14542
14543 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
14544
14545 * validate.h (SCM_VALIDATE_NUMBER): New.
14546
14547 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
14548
14549 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
14550 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
14551 SET_DESTROYED): new defines/macros.
14552 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
14553 (add_to_live_list): takes a `guardian_t *' now, not SCM.
14554 (guardian_print): print more info.
14555 (guardian_apply): check if the guardian is destroyed, and throw an
14556 error if so. take one more optional argument `throw_p'.
14557 (scm_guard): depending on the value of `throw_p', return a boolean
14558 result.
14559 (scm_get_one_zombie): remove redundant property test.
14560 (guardian_t): represent the various (currently 3, I hope nothing
14561 more gets added) boolean fields as bit flags.
14562 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
14563 (scm_destroy_guardian_x): new procedure.
14564
14565 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
14566 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
14567
14568 2001-01-01 Gary Houston <ghouston@arglist.com>
14569
14570 * fports.c (fport_write): bugfix: handle short writes for
14571 unbuffered ports too. optimize the buffered case by minimizing
14572 the number of write/flush calls.
14573 (write_all): new helper procedure.
14574
14575 The ChangeLog continues in the file: "ChangeLog-2000"
14576
14577 ;; Local Variables:
14578 ;; coding: utf-8
14579 ;; End: