Fix doc typo regarding `use-syntax' and "syntax transformers".
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
95c6523b
LC
12008-06-28 Ludovic Courtès <ludo@gnu.org>
2
3 * tags.h (SCM_UNPACK): Disable type-checking for `__DECC' and
4 `__HP_cc'. Reported by Peter O'Gorman <pogma@thewrittenword.com>.
5
6eadcdab
LC
62008-06-02 Ludovic Courtès <ludo@gnu.org>
7
8 * deprecated.c (maybe_close_port): Rename EXCEPT to EXCEPT_SET
9 to workaround `#define except' on Tru64. Reported by Peter
10 O'Gorman <pogma@thewrittenword.com>.
11
102dbb6f
LC
122008-05-31 Ludovic Courtès <ludo@gnu.org>
13
14 * __scm.h (SCM_INTERNAL): New macro.
15 * *.h: Use it to mark as internal `scm_i_' and `scm_init_'
16 functions that are not used by public macros or inline
17 functions.
18
184af225
JG
192008-05-14 Julian Graham <joolean@gmail.com>
20
21 * threads.c (fat_mutex)[recursive]: New field.
22 (make_fat_mutex): Adjust initialization to reflect changes to
23 mutex lock level semantics.
24 (fat_mutex_lock, fat_mutex_unlock): Add support for unowned
25 mutexes and locking mutexes on behalf of other threads.
26 (scm_lock_mutex, scm_lock_mutex_timed): Update to reflect
27 signature change to fat_mutex_lock.
28 (scm_mutex_owner, scm_mutex_level, scm_mutex_locked_p): New /
29 re-enabled functions.
30 * threads.h (scm_mutex_owner, scm_mutex_level,
31 scm_mutex_locked_p): Prototypes for new functions.
32
e4c1d4cf
NJ
332008-05-12 Neil Jerram <neil@ossau.uklinux.net>
34
35 * discouraged.c: Expand DEFFROM and DEFTO macros, to avoid
36 compiler warnings about excess semicolons. (Reported by Didier
37 Godefroy.)
38
346e4402
NJ
392008-05-08 Neil Jerram <neil@ossau.uklinux.net>
40
41 * throw.c (scm_ithrow): For IA64 add a return statement, to
42 appease GCC.
43
44 * threads.h (scm_i_thread): New IA64 fields:
45 register_backing_store_base and pending_rbs_continuation.
46
47 * threads.c (guilify_self_1): For IA64: cap RBS base address at
48 the current value of scm_ia64_ar_bsp, and store the capped value
49 in thread state.
50 (SCM_MARK_BACKING_STORE): Use thread->register_backing_store_base
51 instead of scm_ia64_register_backing_store_base().
52 (scm_threads_mark_stacks): Add "&" in "&t->regs", so that the code
53 works both for jmp_buf defined as an array, and jmp_buf defined as
54 a struct.
55
56 * continuations.h (scm_t_contregs): Remove `fresh' and `ctx'
57 fields; these are now inside the IA64 definition of `jmp_buf'.
58
59 * continuations.c (scm_make_continuation): Simplify, by moving
60 some of the IA64 code inside the definition of "setjmp", and by
61 some obvious commonizations. For IA64 register backing store
62 (RBS) stack base, use thread->register_backing_store_base instead
63 of scm_ia64_register_backing_store_base().
64 (copy_stack): For IA64, store pointer to continuation being
65 invoked in thread state, so we can restore the continuation's RBS
66 stack just before the next setcontext call.
67 (copy_stack_and_call): Don't restore RBS stack explicitly here.
68 It will be restored, if appropriate, inside the longjmp call.
69 (scm_ia64_longjmp): New function.
70
71 * __scm.h (setjmp, longjmp, jmp_buf): For IA64, implement using
72 getcontext and setcontext.
73
7a35784c
LC
742008-05-07 Ludovic Courtès <ludo@gnu.org>
75
76 * numbers.c (scm_from_complex_double): Mark as `SCM_UNUSED'.
77 This fixes compilation with `-Werror' on FreeBSD 6.2 (i386).
78
6d4e1f62
NJ
792008-05-05 Neil Jerram <neil@ossau.uklinux.net>
80
81 * c-tokenize.lex: #define YY_NO_INPUT.
82
bd22f1c7
LC
832008-04-26 Ludovic Courtès <ludo@gnu.org>
84
85 * read.c (scm_read_sexp): Remove extraneous semi-colon at
86 end-of-line, which broke compilation with GCC 2.7. Reported by
87 Alain Guibert <alguibert+bts@free.fr>.
88
535b3592
LC
892008-04-24 Ludovic Courtès <ludo@gnu.org>
90
91 * Makefile.am (DEFAULT_INCLUDES): New. Fixes compilation on
92 Tru64 where our "random.h" would shadown libc's one.
93 (INCLUDES): Add "-I$(top_buildir)", which is normally in
94 `DEFAULT_INCLUDES'.
95 * gen-scmconfig.c: Include <libguile/gen-scmconfig.h>, not
96 "gen-scmconfig.h" since that file is under `$(builddir)'.
97
f5c2af4b
LC
982008-04-16 Ludovic Courtès <ludo@gnu.org>
99
100 * ports.c (scm_getc, scm_putc, scm_puts): Moved...
101 * inline.h: ... here. Noticeably improves `read' performance.
102
ef4cbc08
LC
1032008-04-15 Ludovic Courtès <ludo@gnu.org>
104 Julian Graham <joolean@gmail.com>
105
106 * read.c (scm_keyword_postfix): New.
107 (scm_read_opts): Update docstring for `keywords'.
108 (scm_read_mixed_case_symbol): Add support for postfix keywords.
109
07db6fcd
LC
1102008-04-13 Ludovic Courtès <ludo@gnu.org>
111
112 * inline.h (SCM_C_USE_EXTERN_INLINE): New macro. Use it to make
113 sure "extern" declarations are produced when "extern inline" is
9dca8935 114 used. Simplify macrology around inline definitions.
07db6fcd 115
7dc9ae71
LC
1162008-04-10 Ludovic Courtès <ludo@gnu.org>
117
118 * inline.h (SCM_C_EXTERN_INLINE): Special-case Apple's GCC
119 4.0-based compiler, which doesn't support GNU inline semantics
120 at all in C99 mode but doesn't define `__GNUC_STDC_INLINE__'.
121 See http://thread.gmane.org/gmane.network.gnutls.general/1135 .
122
54ee7cdf
AW
1232008-04-10 Andy Wingo <wingo@pobox.com>
124
4650d115
AW
125 * struct.c (scm_struct_ref, scm_struct_set_x): "Light" structs
126 have no hidden words (members of the SCM_STRUCT_DATA(x) array
127 accessed with negative indices). In that case, determine the
128 number of fields from the length of the struct layout
129 descriptor. (Most GOOPS instances are light structs.)
130
4125c767
AW
131 * goops.c (wrap_init): Initialize 'u' slots to 0, not some random
132 SCM value.
133
134 * goops.c (get_slot_value, set_slot_value): In the struct
54ee7cdf
AW
135 allocation case, don't poke the slots array directly -- we should
136 go through struct-ref/struct-set! code so that we get the
137 permissions and allocation ('u' versus 'p') correct.
138
979eade6
LC
1392008-04-03 Ludovic Courtès <ludo@gnu.org>
140
141 * inline.h (SCM_C_EXTERN_INLINE): New macro, addresses the
142 "extern inline" semantic change in C99 mode with GCC 4.3 and
143 later and the warning in C99 mode with GCC 4.2. Use it in the
144 inline function definitions.
145
2a1d0688
NJ
1462008-03-24 Neil Jerram <neil@ossau.uklinux.net>
147
148 Applying patch from Julian Graham, containing minor fixes to his
149 thread enhancements:
150
151 * threads.c (to_timespec): Change 1000000 multiplier to
152 1000000000.
153 (unchecked_unlock_sym, allow_external_unlock_sym,
154 recursive_sym): Use SCM_SYMBOL.
155 (scm_make_mutex_with_flags): When raising unsupported option
156 error, report what the unsupported option was.
157 (fat_mutex_unlock): When raising errors, unlock m->lock first.
158 (fat_cond_timedwait): Removed.
159 (scm_timed_wait_condition_variable): Call fat_mutex_unlock
160 directly instead of via fat_cond_timedwait.
161
c2ad98ad
LC
1622008-03-10 Ludovic Courtès <ludo@gnu.org>
163
164 * eval.c, filesys.c: Enclose `alloca' blob in `#ifndef alloca',
165 as per Gnulib's `alloca'. This should fix compilation on
166 FreeBSD 6.
167
bca69a9f
NJ
1682008-03-09 Neil Jerram <neil@ossau.uklinux.net>
169
170 * numbers.c: Only define scm_from_complex_double if it will
171 actually be used.
172
6180e336
NJ
1732008-03-08 Julian Graham <joolean@gmail.com>
174
241d9cea
NJ
175 * threads.c (scm_join_thread_timed, scm_thread_p,
176 scm_make_mutex_with_flags, scm_lock_mutex_timed,
177 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p): New
6180e336
NJ
178 functions.
179 (thread_mark): Updated to mark new struct field `mutexes'.
241d9cea 180 (do_thread_exit): Notify threads waiting on mutexes locked by exiting
6180e336 181 thread.
241d9cea
NJ
182 (scm_join_thread, scm_make_mutex, scm_make_recursive_mutex,
183 scm_mutex_lock): Reimplement in terms of their newer
6180e336
NJ
184 counterparts.
185 (scm_abandoned_mutex_error_key): New symbol.
186 (fat_mutex)[unchecked_unlock, allow_external_unlock]: New fields.
187 (fat_mutex_lock): Reimplement to support timeouts and abandonment.
188 (fat_mutex_trylock, scm_try_mutex): Remove fat_mutex_trylock and
189 reimplement scm_try_mutex as a lock attempt with a timeout of zero.
190 (fat_mutex_unlock): Allow unlocking from other threads and unchecked
191 unlocking; implement in terms of condition variable wait.
241d9cea 192 (scm_timed_wait_condition_variable): Reimplement in terms of
6180e336
NJ
193 fat_mutex_unlock.
194 * threads.h (scm_i_thread)[mutexes]: New field.
195 (scm_join_thread_timed, scm_thread_p, scm_lock_mutex_timed,
241d9cea 196 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p):
6180e336
NJ
197 Prototypes for new functions.
198
61b6542a
LC
1992008-03-06 Ludovic Courtès <ludo@gnu.org>
200
201 * eval.c (scm_eval): If MODULE_OR_STATE is not a dynamic state,
202 make sure it's a module. Reported by David I. Lehn.
203
3f520967
LC
2042008-03-02 Ludovic Courtès <ludo@gnu.org>
205
206 * pairs.h (scm_is_pair): Moved declaration to `inline.h'.
207 * inline.h: Make sure `extern' declarations are not produced
208 when `inline' is supported but GCC is not used. This
209 fixes "mixed linkage" errors with compilers such as
210 DEC/Compaq/HP CC.
211
fa80e280
NJ
2122008-02-27 Neil Jerram <neil@ossau.uklinux.net>
213
214 * _scm.h (errno): Remove declarations that have been there
215 forever, and are known to conflict on some platforms with that
216 provided by <errno.h>, which we include unconditionally. If
217 <errno.h> doesn't provide a errno declaration, what is the point
218 of it?
219
a2c25234
LC
2202008-02-23 Ludovic Courtès <ludo@gnu.org>
221
222 * numbers.c (scm_make_rectangular): Rename argument to
223 `real_part' and `imaginary_part' to work around Solaris 2.10
224 headers which define `imaginary' as a macro. Patch by Tim
225 Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
226
bfb64eb4
LC
2272008-02-22 Ludovic Courtès <ludo@gnu.org>
228
4fcb27c4
LC
229 * read.c (strncasecmp): Add declaration when
230 `HAVE_DECL_STRNCASECMP' is undefined. Fixes compilation on
231 NetBSD 1.6.
232
bfb64eb4
LC
233 * gc.c (scm_ia64_ar_bsp)[linux]: Don't discard `const' qualifier
234 of OPAQUE.
235
5305df84
LC
2362008-02-21 Ludovic Courtès <ludo@gnu.org>
237
238 Fix bug #22369.
239
240 * goops.c (scm_add_slot): Add `SCM_UNDEFINED' as last argument
a2c25234
LC
241 to `scm_list_n ()'. Thanks to René Köcher
242 <shirk87@googlemail.com>.
5305df84 243
25a640ca
LC
2442008-02-17 Ludovic Courtès <ludo@gnu.org>
245
246 * script.c (scm_compile_shell_switches): Update copyright year.
247
9a6fac59
LC
2482008-02-16 Ludovic Courtès <ludo@gnu.org>
249
250 * gc_os_dep.c: Add NetBSD/alpha support. Patch by Greg Troxel
251 <gdt@ir.bbn.com>.
252
5b5179f8
LC
2532008-02-12 Ludovic Courtès <ludo@gnu.org>
254
255 * guile-snarf.in (tempdir): Honor `$TMPDIR'.
256
4b26c03e
NJ
2572008-02-11 Neil Jerram <neil@ossau.uklinux.net>
258
259 * numbers.c (SCM_COMPLEX_VALUE): Use GUILE_I instead of _Complex_I
260 directly, and only if GUILE_I was defined by the configure step.
261 (scm_log, scm_log10, scm_exp, scm_sqrt): Use SCM_COMPLEX_VALUE
262 code only if SCM_COMPLEX_VALUE is defined.
263
7f74cf9a
LC
2642008-02-07 Ludovic Courtès <ludo@gnu.org>
265
266 Fix bug #21378.
267 Thanks to David Diffenbaugh <davediff@nbcs.rutgers.edu>.
268
269 * read.c (scm_read_quote): Don't use `__FUNCTION__' since it is
270 not supported by Sun CC on Solaris 9.
271 (scm_read_keyword): Likewise.
272 * strings.c (scm_take_locale_stringn): Remove
273 `SCM_C_INLINE_KEYWORD' to allow compilation with Sun CC.
274
86a597f8
NJ
2752008-02-07 Julian Graham <joolean@gmail.com>
276
241d9cea
NJ
277 * threads.c (do_thread_exit, scm_cancel_thread,
278 scm_set_thread_cleanup_x, scm_thread_cleanup): Lock on thread-specific
86a597f8
NJ
279 admin mutex instead of `thread_admin_mutex'.
280 * threads.h (scm_i_thread)[admin_mutex]: New field.
281 * throw.c (make_jmpbuf): Don't enter critical section during thread
282 spawn -- there is a possibility of deadlock if other threads are
283 exiting.
241d9cea 284
4a19ed04
NJ
2852008-02-06 Neil Jerram <neil@ossau.uklinux.net>
286
287 * gc-malloc.c (scm_gc_malloc): Return NULL if requested size is 0.
288 (scm_gc_free): Don't call `free' if mem is NULL.
289
189171c5
LC
2902008-02-06 Ludovic Courtès <ludo@gnu.org>
291
292 * numbers.c (scm_i_mkbig, scm_i_long2big, scm_i_ulong2big,
293 scm_i_clonebig, scm_i_bigcmp, scm_i_dbl2big, scm_i_dbl2num,
294 scm_i_normbig): Remove `SCM_C_INLINE_KEYWORD' since these are
295 declared as `extern' in `numbers.h'. This precluded compilation
296 on Solaris 9 with Sun CC (reported by David Halik
297 <dhalik@nbcs.rutgers.edu>).
298
d05bcb2e
NJ
2992008-02-05 Neil Jerram <neil@ossau.uklinux.net>
300
301 * fports.c (fport_seek): Make dependent on GUILE_USE_64_CALLS.
302
303 * _scm.h: Make definition of CHOOSE_LARGEFILE depend on
304 GUILE_USE_64_CALLS.
305
3ac8359a
NJ
3062008-02-01 Neil Jerram <neil@ossau.uklinux.net>
307
308 * modules.c (the_root_module): Moved before scm_current_module.
309 (scm_current_module): Return the root module if `the-module' fluid
310 gives #f.
311
d3cf93bc
NJ
3122008-01-22 Neil Jerram <neil@ossau.uklinux.net>
313
7df13834
NJ
314 * COPYING: Removed.
315
d3cf93bc
NJ
316 * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL.
317
15bd90ea
NJ
3182008-01-18 Neil Jerram <neil@ossau.uklinux.net>
319
320 * hashtab.c (scm_hash_fn_create_handle_x): If supplied assoc_fn
321 returns neither a pair nor #f, signal a wrong-type-arg error.
322 (Thanks to Gregory Marton for reporting this.)
323
5c004b6d
NJ
3242007-12-29 Neil Jerram <neil@ossau.uklinux.net>
325
326 * gc.c (mark_gc_async): Change "func_data" to "fn_data", to avoid
327 clash with AIX header file.
328 * hooks.c (scm_c_hook_add, scm_c_hook_remove): Same again.
329 * hooks.h (scm_t_c_hook_function, scm_c_hook_add,
330 scm_c_hook_remove): Same again.
331
9cc37597
LC
3322007-12-08 Ludovic Courtès <ludo@gnu.org>
333
334 * __scm.h (SCM_EXPECT, SCM_LIKELY, SCM_UNLIKELY): New macros.
335 (SCM_ASSERT, SCM_ASSERT_TYPE, SCM_ASRTGO, SCM_GASSERT0,
336 SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Use them.
337 * eval.c (ASSERT_SYNTAX, ASSERT_SYNTAX_2): Likewise.
338 * eval.i.c (CEVAL): Use branch prediction hints for syntax
339 errors, wrong number of arguments and similar.
340 * numbers.c (scm_sum): Use `SCM_LIKELY' for the sum of two
341 immediate numbers.
342 (scm_difference, scm_product, scm_i_divide): Likewise.
343 * validate.h (SCM_ASSERT_RANGE): Use `SCM_UNLIKELY'.
344
7d1fc872
LC
3452007-12-04 Ludovic Courtès <ludo@gnu.org>
346
693758d5
LC
347 * ports.c (scm_c_read): Validate PORT as an open input port.
348 (scm_c_write): Validate PORT as an open output port.
349
7d1fc872
LC
350 * socket.c (scm_accept): Leave guile mode using
351 `scm_std_select ()' before calling `accept(2)'. Reported by
352 dskr <dskr@mac.com>.
353
ee834df4
LC
3542007-10-27 Ludovic Courtès <ludo@gnu.org>
355
356 * fports.c (scm_i_evict_port): Expect a port, rather than a pair
357 containing the port. Fixes a bug in the new port table (2007-08-26).
358 (scm_evict_ports): Use `scm_c_port_for_each ()'.
359
acbfb594
NJ
3602007-10-21 Neil Jerram <neil@ossau.uklinux.net>
361
362 * eval.c (unmemoize_delay): Extend the environment before
363 unmemoizing the promise thunk. This fixes a segmentation fault
364 reported by Frank Schwidom.
365
2e77f720
LC
3662007-10-20 Julian Graham <joolean@gmail.com>
367
368 Add support for thread cancellation and user-defined thread
369 cleanup handlers. Small rework by Ludovic Courtès.
370
371 * null-threads.h (scm_i_pthread_cancel,
372 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
373 * pthread-threads.h (scm_i_pthread_cancel,
374 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
375 * scmsigs.c (scm_i_signal_delivery_thread,
376 signal_delivery_thread_mutex): New.
377 (signal_delivery_thread): Leave when `read_without_guile ()'
378 returns zero.
379 (start_signal_delivery_thread): Acquire SIGNAL_DELIVERY_THREAD
380 before spawning the thread. Initialize
381 SCM_I_SIGNAL_DELIVERY_THREAD.
382 (ensure_signal_delivery_thread): Renamed to...
383 (scm_i_ensure_signal_delivery_thread): this.
384 (scm_i_close_signal_pipe): New.
385 * scmsigs.h: Updated.
386 * threads.c (thread_mark): Mark `t->cleanup_handler'.
387 (guilify_self_1): Initialize `t->cleanup_handler' and
388 `t->canceled'.
389 (do_thread_exit): Invoke `t->cleanup_handler'.
390 (on_thread_exit): Call `scm_i_ensure_signal_delivery_thread ()'.
391 Call `scm_i_close_signal_pipe ()' when the next-to-last thread
392 vanishes.
393 (scm_leave_guile_cleanup): New.
241d9cea 394 (scm_i_with_guile_and_parent): Use `scm_i_pthread_cleanup_push ()'
2e77f720
LC
395 and `scm_leave_guile_cleanup ()' to leave guile mode, rather
396 than call `scm_leave_guile ()' after FUNC.
397 (scm_cancel_thread, scm_set_thread_cleanup_x,
398 scm_threads_cleanup): New.
399 (scm_all_threads): Remove SCM_I_SIGNAL_DELIVERY_THREAD from the
400 returned list.
401 * threads.h (scm_i_thread)[cleanup_handler, canceled]: New
402 fields.
403 Add declarations of new functions.
241d9cea 404
d41668fa
LC
4052007-10-17 Ludovic Courtès <ludo@gnu.org>
406
407 * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a
408 regression compared to 1.8.2. Reported by Puneet
409 <schemer@gmail.com>.
410
66302618
LC
4112007-10-10 Ludovic Courtès <ludo@gnu.org>
412
413 * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check
414 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
415 * gen-scmconfig.h.in
416 (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER): New.
417 * gen-scmconfig.c (main): Define
418 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
419
1445e449
LC
4202007-10-04 Ludovic Courtès <ludo@gnu.org>
421
422 * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
423 `leave_locale_section ()' on failure of
424 `enter_locale_section ()' since the mutex is not held and locale
425 settings are unchanged.
426 (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
241d9cea 427 `restore_locale_settings ()' instead of `leave_locale_section ()'
1445e449 428 since the mutex is not held.
241d9cea 429
29776e85
LC
4302007-10-02 Ludovic Courtès <ludo@gnu.org>
431
432 * threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
433 since we're already in non-guile mode. Reported by Greg Toxel
434 for NetBSD.
435
61d3568b
LC
4362007-10-01 Ludovic Courtès <ludo@gnu.org>
437
438 * ports.c (flush_output_port): Expect directly a port instead of
439 a pair. Fixes a bug in the new port table (2007-08-26).
440
68eccd8b
KR
4412007-09-11 Kevin Ryde <user42@zip.com.au>
442
443 * posix.c (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
444 putenv("NAME") as the fallback everywhere else. In particular this is
445 needed for solaris 9. Reported by Frank Storbeck.
241d9cea 446
454866e0
LC
4472007-09-03 Ludovic Courtès <ludo@gnu.org>
448
449 * read.c (flush_ws): Handle SCSH block comments.
450
f43f3620
LC
4512007-09-03 Ludovic Courtès <ludo@gnu.org>
452
453 Fix alignment issues which showed up at least on SPARC.
454
455 * socket.c (scm_t_max_sockaddr, scm_t_getsockopt_result): New.
456 (scm_inet_pton): Change DST to `scm_t_uint32' for correct
457 alignment.
458 (scm_getsockopt): Change OPTVAL to `scm_t_getsockopt_result' for
459 correct alignment.
460 (_scm_from_sockaddr): Change ADDRESS to `scm_t_max_sockaddr *'.
461 (scm_from_sockaddr): Cast ADDRESS to `scm_t_max_sockaddr *'.
462 (MAX_SIZE_UN, MAX_SIZE_IN6): Removed.
463 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
464 Use `scm_t_max_sockaddr' instead of "char max_addr[MAX_ADDR_SIZE]".
465
8d4d5dfc
KR
4662007-09-03 Kevin Ryde <user42@zip.com.au>
467
468 * numbers.c (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
469 before using clog(). It's possible for gcc to provide the "complex
470 double" type, but for the system not to have the complex funcs.
471 (scm_exp): Ditto HAVE_CEXP for cexp().
472 (clog, cexp, carg): Remove fallback definitions. These only
473 duplicated the code within scm_log and scm_exp, and the latter have to
474 exist for the case when there's no "complex double". So better just
475 fix up the conditionals selecting between the complex funcs and plain
476 doubles than worry about fallbacks.
477
1ac5fb45
LC
4782007-09-02 Ludovic Courtès <ludo@gnu.org>
479
480 * socket.c (scm_make_socket_address): Free C_ADDRESS after use.
481 This fixes a memory leak.
482
b87e6d04
HWN
4832007-08-26 Han-Wen Nienhuys <hanwen@lilypond.org>
484
5dbc6c06
HWN
485 * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
486 gc.c: replace port table with weak hash table. This simplifies
487 memory management, and fixes freed cells appearing in
488 port-for-each output.
489
b87e6d04
HWN
490 * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
491 held.
492
2baec6a9
LC
4932007-08-23 Ludovic Courtès <ludo@gnu.org>
494
492faee1 495 * read.c (scm_read_quote): Record position and copy source
8d4d5dfc 496 expression when asked to. Reported by Kevin.
492faee1 497
2baec6a9
LC
498 * stime.c: Define `_REENTRANT' only if not already defined.
499
1f11c61a
KR
5002007-08-21 Kevin Ryde <user42@zip.com.au>
501
502 * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
503 tc16 values so big, real, complex and fraction can be distinguished.
504
505 (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL. NULL
506 was making numbers come out as "type 23" in gc-live-object-stats.
507 Fix tests of the tc16 number types, they were checked under
508 scm_tc7_number, but the values went down the tag>=255 smob case.
509 Put smob case under scm_tc7_smob instead of using tag>=255, per
241d9cea 510 recommendation in comments with scm_tc7_smob to use symbolic values.
1f11c61a
KR
511 Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
512 code. Lose some unnecessary "break" statements.
513
514 (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
515 element returned, rather than two lookups scm_hashq_ref and
516 scm_hashq_set_x.
517
949ec9f9
KR
5182007-08-17 Kevin Ryde <user42@zip.com.au>
519
520 * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
521 solaris 2.6. Reported by anirkko.
522
6caac03c
LC
5232007-07-29 Ludovic Courtès <ludo@gnu.org>
524
525 * Makefile.am (INCLUDES): Added Gnulib includes.
526 (gnulib_library): New.
527 (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
528 `$(gnulib_library)'.
529 (libguile_la_LIBADD): Likewise.
530
531 * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
532 to define it when available.
533 * srfi-14.c: Likewise.
f7439099
LC
534 * i18n.c: Likewise. Include Gnulib's <alloca.h>
535 * eval.c: Include Gnulib's <alloca.h>.
536 * filesys.c: Likewise.
537 * read.c: Don't include <strings.h> and don't provide an
538 `strncasecmp ()' replacement; use Gnulib's <string.h> and
539 `strncasecmp ()' instead.
6caac03c 540
e08f3f7a
LC
5412007-07-25 Ludovic Courtès <ludo@gnu.org>
542
543 * eval.c (macroexp): When `scm_ilength (res) <= 0', return
544 immediately. This used to produce a circular memoized
545 expression, e.g., for `(set (quote x) #t)'.
546
7337d56d
LC
5472007-07-22 Ludovic Courtès <ludo@gnu.org>
548
549 Overhauled the reader, making it faster.
550
551 * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
552 (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
553 of `scm_lreadr ()'.
554
555 * read.c: Overhauled. No longer use a token buffer. Use a
556 on-stack C buffer in the common case and use Scheme strings when
557 larger buffers are needed.
558 * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
559 scm_lreadr, scm_lreadrecparen): Removed.
560 (scm_i_input_error): Marked as `SCM_NORETURN'.
561
df449722
LC
5622007-07-15 Ludovic Courtès <ludo@gnu.org>
563
564 * script.c (scm_compile_shell_switches): Updated copyright year.
565
b1f57ea4
LC
5662007-07-11 Ludovic Courtès <ludo@gnu.org>
567
568 * goops.c (scm_sys_method_more_specific_p): Added docstring.
569 Make sure LEN is greater than or equal to the minimum length of
570 specializers of M1 and M2. This fixes a segfault later on in
571 `more_specificp ()' if TARGS is too small. Reported by Marco
572 Maggi <marco.maggi-ipsu@poste.it>.
573
d3075c52
LC
5742007-06-26 Ludovic Courtès <ludo@gnu.org>
575
576 * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
577 sure to free the previous array after the new one has been
578 installed. This leak is made visible by running
579 "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
580 from the REPL within Valgrind.
581
7a5fb796
LC
5822007-06-12 Ludovic Courtès <ludo@chbouib.org>
583
584 * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
585 as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
586 bus error on SPARC (and possibly others) due to unaligned access.
587
a1ef7406
LC
5882007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
589
590 * posix.c (scm_ttyname): Check whether RESULT is NULL before
591 making a string from it (reported by Dan McMahill). Don't call
592 `scm_from_locale_string ()' before the mutex is released.
593
3dcf3373
LC
5942007-05-26 Ludovic Courtès <ludo@chbouib.org>
595
596 * eval.c (scm_m_define): Updated comment. Changed order for value
597 evaluation and `scm_sym2var ()' call, which is perfectly valid per
598 R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
599
608860a5
LC
6002007-05-05 Ludovic Courtès <ludo@chbouib.org>
601
602 Implemented lazy duplicate binding handling.
603
604 * modules.c (scm_export): Renamed to...
605 (scm_module_export): This. Now public.
606 (module_variable): Removed.
607 (default_duplicate_binding_procedures_var): New variable.
608 (default_duplicate_binding_handlers, resolve_duplicate_binding,
609 module_imported_variable, scm_module_local_variable,
610 scm_module_variable): New functions.
611 (scm_module_import_interface): Rewritten.
612 (scm_module_reverse_lookup): Exported as a Scheme function.
613 * modules.h (scm_module_index_duplicate_handlers,
614 scm_module_index_import_obarray): New macros.
615 (scm_module_variable, scm_module_local_variable,
616 scm_module_export): New declarations.
617
1911e3da
LC
6182007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
619
620 * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
621 `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
622
1d8ce4c0
HWN
6232007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
624
625 * numbers.c (carg): provide carg, cexp, clog in case they are
626 missing.
627
afb49959
LC
6282007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
629
630 * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
631 `FRAC_DIGITS', etc., which are GNU extensions. Reported by
632 Steven Wu.
633
b3aa4626
KR
6342007-03-08 Kevin Ryde <user42@zip.com.au>
635
636 * struct.c, struct.h (scm_make_vtable): New function, providing
637 `make-vtable'.
638 * stacks.c (scm_init_stacks): Use it.
639
6402007-03-06 Kevin Ryde <user42@zip.com.au>
641
642 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
643 allocating a tail array. If there's no such then those tail fields
644 are uninitialized and garbage SCMs there can cause a segv if printed
645 (after fetching with struct-ref).
646
6472007-02-22 Kevin Ryde <user42@zip.com.au>
648
649 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
650 (scm_usleep): Update docstring per manual, cross reference sleep.
651
652 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
653 scm_struct_init is not within that section. scm_struct_init can
654 thrown an error, which within a critical section results in an
655 abort().
656
03291373
NJ
6572007-02-19 Neil Jerram <neil@ossau.uklinux.net>
658
659 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
660 is included in the distribution.
652dbce6 661 (noinst_HEADERS): And the same for eval.i.c.
03291373 662
a2f00b9b
LC
6632007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
664
665 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
666 unconditionally. Include <langinfo.h> and <nl_types.h> when
667 available.
668 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
669 SCM_LIST_OR_INTEGER_P): New macros.
670 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
671 as powers of two instead of `(1 << LC_*)'.
672 (scm_i_locale_free): New function/macro.
673 (scm_global_locale): New global variable.
674 (smob_locale_free): Use `scm_i_locale_free ()'.
675 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
676 (get_current_locale_settings): Return `EINVAL' instead of `errno'
677 when `setlocale' fails.
678 (restore_locale_settings): Likewise.
679 (install_locale_categories): Likewise.
680 (install_locale): Likewise. Stop the locale stack traversal when
681 all categories have been handled.
682 (get_current_locale, category_to_category_mask,
683 category_list_to_category_mask): New function.
684 (scm_make_locale): Use them. Accept both lists of `LC_*' values
685 and single `LC_*' values as the first argument. Handle the case
686 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
687 duplicate C_BASE_LOCALE before using it.
688 (scm_nl_langinfo, define_langinfo_items): New functions.
689 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
690 `nl-langinfo' and invoke `define_langinfo_items ()'.
691 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
692 * posix.c: Include <xlocale.h> when available.
693 (scm_i_locale_mutex): Always define it. Statically initialized.
694 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
695 acquiring the locale mutex.
696 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
697
b3aa4626
KR
6982007-01-27 Kevin Ryde <user42@zip.com.au>
699
700 * ports.c (scm_port_line, scm_set_port_line_x), read.c
701 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
702 port line number type, should be "long" not "int", as per line_number
703 field of scm_t_port. (Makes a difference only on 64-bit systems, and
704 only then for a linenum above 2Gig.)
705
2a8d66b0
HWN
7062007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
707
708 * vector.c: remove comment as per kryde's request.
709
b3aa4626
KR
7102007-01-25 Kevin Ryde <user42@zip.com.au>
711
712 * sort.c (scm_stable_sort): Return empty list for input empty list, as
713 done in guile 1.6 and as always done by plain `sort'. Was falling
714 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
715
cb90e2cb
HWN
7162007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
717
8cb7939c
HWN
718 * vectors.c (s_scm_vector_move_right_x): complain about naming.
719
d00a0704
HWN
720 * srcprop.c: regularize comments.
721
3d178652
HWN
722 * eval.c: remove superfluous ifndef DEVAL.
723
243ebb61
HWN
724 * private-options.h: idem.
725
726 * eval.i.c: copyright nitpicking.
727
0ee05b85
HWN
728 * eval.c: distangle. move duplicate code to eval.i.c and include
729 twice.
730
731 * eval.i.c: new file.
732
22fc179a
HWN
733 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
734 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
735 read.h, stacks.c, symbols.c, throw.c: use private-options.h
736
737 * private-options.h: new file: contain hardcoded option
738 definitions.
739
cb90e2cb
HWN
740 * private-gc.h: add FSF header.
741
62560650
HWN
7422007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
743
72f19c26
HWN
744 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
745 memoize-symbol is set.
746
747 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
748
749 * eval.c (CEVAL): add memoize_symbol trap.
750
03347a97
HWN
751 * options.c (scm_options_try): new function. This allows error
752 reporting before changing options in a critical section.
753
b0763985
HWN
754 * srcprop.c: use double cell for storing source-properties. Put
755 filename in the plist, and share between srcprops if possible.
756 Remove specialized storage.
757
758 * srcprop.h: remove macros without SCM_ prefix from
759 interface. Remove specialized storage/type definitions.
760
62560650
HWN
761 * read.c: idem.
762
763 * print.c: idem.
764
765 * eval.c: terminate option lists with 0.
766
767 * options.c: remove n (for length) from scm_option_X
768 functions. Detect option list length by looking for NULL name.
769
42ddb3cb
LC
7702007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
771
772 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
773 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
774 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
775 added by `make-vtable-vtable'. Reported by Marco Maggi.
241d9cea 776
937038e8
HWN
7772007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
778
779 * throw.c (scm_ithrow): more refined error message: print symbols
780 too.
781
23d72566
KR
7822007-01-16 Kevin Ryde <user42@zip.com.au>
783
784 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
785 implementing `set-program-arguments'.
786
787 * filesys.c (scm_init_filesys): Use scm_from_int rather than
788 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
789 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
790 O_LARGEFILE. These are all int not long, per arg to open().
791 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
792 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
793 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
794 an int arg to fcntl.
795
796 * posix.c (scm_putenv): Correction to "len" variable, was defined only
797 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
798 Move it to where it's used. Reported by Hugh Sasse.
799
800 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
801 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
802 meant #\nul in the input (detected by scm_to_locale_string) and a bad
803 flags arg (detected by scm_to_int) would throw from a critical
804 section, causing an abort().
805
806 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
807 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
808 REG_NOTEOL; they're all ints not longs (per args to regcomp and
809 regexec).
810
a2c40dc7
HWN
8112007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
812
813 * throw.c (scm_ithrow): print out key symbol and string arguments
814 when error happens inside a critical section, and document why.
815
391f57e6
HWN
8162007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
817
818 * read.c (s_scm_read_hash_extend): document #f argument to
819 read-hash-extend.
820
23d72566
KR
8212007-01-04 Kevin Ryde <user42@zip.com.au>
822
823 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
824 scm_minor_version, scm_micro_version, scm_effective_version,
825 scm_version, scm_init_version): Use SCM_API instead of just extern,
826 for the benefit of mingw. Reported by Cesar Strauss.
827
93632e3c
HWN
8282007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
829
830 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
831 too.
832 (gc_update_stats): update scm_gc_cells_allocated_acc too.
833
23d72566
KR
8342006-12-27 Kevin Ryde <user42@zip.com.au>
835
836 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
837 the basic scm_get_stack_base. As advised by Nils Durner.
838
839 * threads.c (get_thread_stack_base): Add a version using
840 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
841 As advised by Heikki Lindholm.
842
843 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
844 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
845 Durner.
846
8472006-12-24 Kevin Ryde <user42@zip.com.au>
848
849 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
850 error if pid is not our own process, instead of silently doing nothing.
851
852 * print.c (scm_write, scm_display, scm_write_char): Disable port close
853 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
854 check in configure.in unintentionally enabled it. Believe that
855 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
856 can leave errno in that state. popen.test "no duplicates" output test
857 provoked that.
858
e2bf3b19
HWN
8592006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
860
861 * numbers.c (scm_i_fraction_reduce): move logic into
862 scm_i_make_ratio(), so fractions are only read.
863 scm_i_fraction_reduce() modifies a fraction when reading it. A
864 race condition might lead to fractions being corrupted by reading
865 them concurrently.
866
867 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
868 comparisons between reduced and unreduced fractions go wrong.
241d9cea 869
e2bf3b19
HWN
870 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
871 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
872 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
873 SCM_FRACTION_REDUCED.
874
23d72566
KR
8752006-12-16 Kevin Ryde <user42@zip.com.au>
876
877 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
878 more direct for a procedure called raise.
879 (kill): Remove mingw fake fallback.
880
8812006-12-15 Kevin Ryde <user42@zip.com.au>
882
883 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
884 _pipe on mingw.
885
8862006-12-14 Kevin Ryde <user42@zip.com.au>
887
888 * threads.c (thread_print): Cope with the case where pthread_t is a
889 struct, as found on mingw. Can't just cast to size_t for printing.
890 Reported by Nils Durner.
891
892 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
893 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
894
8952006-12-13 Kevin Ryde <user42@zip.com.au>
896
897 * eval.c (scm_m_define): Set 'name procedure property on any
898 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
899 procedures with setters as used in srfi-17.
900
901 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
902 linux man page says is a possibility.
903
f30e1bdf
LC
9042006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
905
906 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
42ddb3cb 907 instead of RES (reported by Szavai Gyula). This allows the use of
f30e1bdf
LC
908 negative lower bounds.
909 (scm_i_read_array): Make sure LEN is non-negative (reported by
42ddb3cb 910 Szavai Gyula).
f30e1bdf
LC
911
912 (scm_array_in_bounds_p): Iterate over S instead of always
913 comparing indices with the bounds of S[0]. This fixes
914 `array-in-bounds?' for arrays with a rank greater than one and
915 with different lower bounds for each dimension.
916
23d72566
KR
9172006-12-05 Kevin Ryde <user42@zip.com.au>
918
919 * numbers.c (scm_product): For flonum*inum and complex*inum, return
920 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
921 and as per R5RS section "Exactness".
922
9232006-12-03 Kevin Ryde <user42@zip.com.au>
924
925 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
926 allow $AWK from the environment to override. It had syntax gremlins,
927 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
928 Makefile stopped it having any effect. Use just $(AWK), which can be
929 overridden with "make AWK=xxx" in the usual way if desired.
930
22be72d3
LC
9312006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
932
933 * libguile/vectors.c (scm_vector_to_list): Fixed list
934 construction: elements were not copied when INC is zero (see
935 "shared array" example in `vectors.test'). Reported by
936 Szavai Gyula.
937
b89c4943
LC
9382006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
939
940 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
941 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
942 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
943 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
944 (DOT_X_FILES): Added `gettext.x'.
945 (DOT_DOC_FILES): Likewise.
946 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
947 (modinclude_HEADERS): Added `gettext.h'.
948 (EXTRA_DIST): Added `libgettext.h'.
949
950 * gettext.h: Renamed to...
951 * libgettext.h: New file.
952
953 * i18n.c: Renamed to...
954 * gettext.c: New file.
955
956 * i18n.h: Renamed to...
957 * gettext.h: New file.
958
959 * i18n.c, i18n.h, locale-categories.h: New files.
960
961 * init.c: Include "libguile/gettext.h" instead of
962 "libguile/i18n.h".
963 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
964 `scm_init_i18n ()'.
965
966 * posix.c: Include "libguile/gettext.h" instead of
967 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
968 (USE_GNU_LOCALE_API): New macro.
969 (scm_i_locale_mutex): New variable.
970 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
971
972 * posix.h: Include "libguile/threads.h".
973 (scm_i_locale_mutex): New declaration.
974
f3e3f530
NJ
9752006-11-17 Neil Jerram <neil@ossau.uklinux.net>
976
977 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
978
d9f71a07 9792006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
241d9cea 980
d9f71a07
LC
981 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
982 "sweep_stats" arguments; use them instead of accessing the global
983 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
984
985 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
986 before each iteration of the loop.
987 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
988 (scm_i_get_new_heap_segment): Take an additional argument
989 SWEEP_STATS. Compute MIN_CELLS as a function of it.
990
991 * libguile/gc.c (scm_gc_cells_collected,
992 scm_gc_cells_collected_1): Removed.
993 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
994 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
995 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
996 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
997 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
998 `scm_gc_cells_(collected|swept)'.
999 (gc_update_stats): New.
1000 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
1001 `scm_i_gc_sweep_stats_1' instead of the former globals.
1002 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
1003 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
1004 would keep allocating new segments instead of re-using collected
1005 cells (because `scm_gc_cells_collected' would remain zero).
1006
1007 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
1008 scm_gc_cell_yield_percentage): Removed.
1009
1010 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
1011 (scm_i_adjust_min_yield): Updated.
1012 (scm_i_get_new_heap_segment): Updated.
1013
dd18d312
NJ
10142006-11-02 Neil Jerram <neil@ossau.uklinux.net>
1015
1016 * modules.c: Correct comment saying that low-level environments
1017 will be used "in the next release".
1018
1019 * init.c: Comment out #include of environments.h.
1020 (scm_i_init_guile): Comment out scm_environments_prehistory() and
1021 scm_init_environments() calls.
1022
1023 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
1024 (DOT_X_FILES): Remove environments.x.
1025 (DOT_DOC_FILES): Remove environments.doc.
1026 (modinclude_HEADERS): Remove environments.h.
1027
9a5fa6e9
NJ
10282006-10-25 Neil Jerram <neil@ossau.uklinux.net>
1029
1030 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
241d9cea 1031
9a5fa6e9
NJ
1032 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
1033 scm_ia64_register_backing_store_base() instead of Linux-specific
1034 implementations.
1035
1036 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
1037 New declarations.
1038
1039 * gc.c (__libc_ia64_register_backing_store_base): Declaration
1040 removed.
1041 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
1042 implementations for Linux and HP-UX.
1043
1044 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
1045 and scm_ia64_register_backing_store_base() instead of
1046 Linux-specific implementations.
1047
1048 * continuations.h (__libc_ia64_register_backing_store_base):
1049 Declaration removed.
1050 (scm_t_contregs): New "fresh" field.
1051
1052 * continuations.c (ia64_getcontext): Removed.
1053 (scm_make_continuation): Use continuation fresh field instead of
1054 interpreting getcontext return values (which isn't portable). Use
1055 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
1056 instead of Linux-specific implementations.
1057 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
1058 instead of Linux-specific implementation.
1059
1060 * _scm.h (__ia64__): Also detect __ia64.
1061
8ab3d8a0
KR
10622006-10-03 Kevin Ryde <user42@zip.com.au>
1063
1064 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
1065 arguments or 3 or more arguments. Previously 0 called proc with
1066 SCM_UNDEFINED, and 3 or more silently used just the first 2.
1067
10682006-09-28 Kevin Ryde <user42@zip.com.au>
1069
1070 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
1071 for chsize fallback, instead of hard-coding mingw. Mingw in fact
1072 supplies ftruncate itself these days.
1073
1074 * ports.c (fcntl.h): Can include this unconditionally, no need for
1075 __MINGW32__.
1076
1077 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
1078 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
1079 "off_t" for parameters, per usual definition of this function, rather
1080 than "char *" and "int". Use ftruncate instead of chsize. Check for
1081 error on final close.
1082
10832006-09-27 Kevin Ryde <user42@zip.com.au>
1084
1085 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
1086 in mingw.
1087
1088 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
1089 const *" for mingw to suppress warnings from gcc (which are errors
1090 under the configure default -Werror). Reported by Nils Durner.
1091
10922006-09-26 Kevin Ryde <user42@zip.com.au>
1093
1094 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
1095 * fports.c (scm_open_file): Use open_or_open64.
1096 (fport_seek_or_seek64): New function, adapting fport_seek.
1097 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
1098 functions.
1099 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
1100 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
1101
1102 * ports.c (scm_truncate_file): Update docstring per manual.
1103
11042006-09-23 Kevin Ryde <user42@zip.com.au>
1105
1106 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
1107 functions.
1108
9a5fa6e9 11092006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
a17d2654
LC
1110
1111 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
1112 (make_predset, define_predset, make_strset, define_strset, false,
1113 true): Removed.
1114 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
1115 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
1116 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
1117 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
1118 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
1119 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
1120 (define_charset, scm_srfi_14_compute_char_sets): New functions.
1121 (scm_init_srfi_14): Use `define_charset ()' instead of
1122 `define_predset ()' and `define_strset ()'.
1123
1124 * srfi-14.h (scm_c_init_srfi_14): Removed.
1125 (scm_srfi_14_compute_char_sets): New declaration.
1126
1127 * posix.h: Include "srfi-14.h".
1128 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
1129 successful `setlocale ()' call.
1130
8ab3d8a0
KR
11312006-09-08 Kevin Ryde <user42@zip.com.au>
1132
1133 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
1134 (scm_recvfrom): Update docstring from manual.
1135
418122ce
RB
11362006-08-31 Rob Browning <rlb@defaultvalue.org>
1137
1138 * ports.c (scm_c_port_for_each): Add a
1139 scm_remember_upto_here_1(ports) at the end of the function to fix
1140 a GC bug.
1141
b5944f66
NJ
11422006-08-28 Neil Jerram <neil@ossau.uklinux.net>
1143
1144 * backtrace.c (scm_display_backtrace_with_highlights): Minor
1145 improvements to docstring.
1146 (scm_backtrace_with_highlights): Analogous improvements.
1147
8ab3d8a0
KR
11482006-08-12 Kevin Ryde <user42@zip.com.au>
1149
1150 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
1151 New, set from configure.
1152 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
1153 to scmconfig.h.
1154 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
1155 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
1156 Reported by Claes Wallin.
1157
b0b0deff
NJ
11582006-08-11 Neil Jerram <neil@ossau.uklinux.net>
1159
1160 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
1161 frame, not a stack).
1162
8ab3d8a0
KR
11632006-07-25 Kevin Ryde <user42@zip.com.au>
1164
1165 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
1166 on pthreads version, since pthread_getattr_np not available on solaris
1167 and macos. Reported by Claes Wallin.
1168
11692006-07-24 Kevin Ryde <user42@zip.com.au>
1170
1171 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
1172 it's a macro on MacOS X. Reported by Claes Wallin.
1173
1174 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
1175 for the benefit of Solaris 10. Reported by Claes Wallin.
1176
1177 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
1178 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
1179
11802006-07-21 Kevin Ryde <user42@zip.com.au>
1181
1182 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
1183 autoconf recommendation. Should fix Solaris 10 reported by Claes
1184 Wallin.
1185
1186 * threads.c: Include <string.h>, needed for memset() which is used by
1187 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
1188
b4912378
RB
11892006-07-18 Rob Browning <rlb@defaultvalue.org>
1190
1191 * continuations.c: Add __attribute__ ((returns_twice)) to the
1192 ia64_getcontext prototype so that gcc will make the right
1193 arrangements and avoid an illegal instruction during
1194 call-with-current-continuation.
1195
9a5fa6e9 11962006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
eaa94eaa
LC
1197
1198 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
1199 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
1200
8ab3d8a0
KR
12012006-07-08 Kevin Ryde <user42@zip.com.au>
1202
1203 * environments.c (core_environments_unobserve): Use if/else rather
1204 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
1205 about them not being rvalues. Reported by Mike Gran.
1206
1207 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
1208 portable and in particular fails on OpenBSD and AIX (see autoconf
1209 manual too). Reported by Mike Gran.
1210
12112006-06-25 Kevin Ryde <user42@zip.com.au>
1212
1213 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
1214 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
1215 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
1216 HAVE_TM_ZONE.
1217 (scm_strptime): Use tm_gmtoff from the strptime result when that field
1218 exists, it's set by glibc strptime "%s".
241d9cea 1219
9a5fa6e9 12202006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
d15ad007
LC
1221
1222 * eq.c: Include "struct.h", "goops.h" and "objects.h".
1223 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
1224 are not GOOPS instances.
1225 * struct.c: Include "eq.h".
1226 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
1227 hand-written code.
1228 (scm_i_struct_equalp): New.
1229 * struct.h (scm_i_struct_equalp): New declaration.
1230
c862d0e0
KR
12312006-06-06 Kevin Ryde <user42@zip.com.au>
1232
1233 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
1234 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
1235 reported by Mattias Holm.
b4912378 1236
c862d0e0
KR
12372006-06-03 Kevin Ryde <user42@zip.com.au>
1238
1239 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
1240 unused variable warning when elisp disabled. Reported by Ryan
1241 VanderBijl.
1242
1243 * throw.c (scm_handle_by_message): Add dummy return value to avoid
1244 compiler warning on cygwin. Reported by Ryan VanderBijl.
241d9cea 1245
c862d0e0
KR
1246 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
1247 duplicate of EXTRA_DOT_DOC_FILES.
1248 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
1249 Add scmconfig.h to dependencies, since these all run cpp. Helps a
1250 parallel "make -j2". Reported by Mattias Holm.
1251
12522006-05-30 Kevin Ryde <user42@zip.com.au>
1253
1254 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
1255 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
1256 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
1257 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
1258 port type descriptor, same as scm_make_port_type return value.
1259
af4f8612
MV
12602006-05-30 Marius Vollmer <mvo@zagadka.de>
1261
1262 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
1263 of the arguments is a array. This allows vectors to be equal to
1264 one-dimensional arrays.
1265
18bffcd0
MV
12662006-05-29 Marius Vollmer <mvo@zagadka.de>
1267
1268 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
1269 that we have a pair before accessing its cdr. Thanks to Bill
1270 Schottstaedt!
1271
c862d0e0
KR
12722006-05-28 Kevin Ryde <user42@zip.com.au>
1273
1274 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
1275 by "The Senator".
1276
12772006-05-27 Marius Vollmer <mvo@zagadka.de>
b0c0a310
MV
1278
1279 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
1280 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
1281
c862d0e0
KR
12822006-05-26 Kevin Ryde <user42@zip.com.au>
1283
1284 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
1285 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
1286 Reported by "The Senator".
1287 For select and ioctl, move fdes into those conditionals, to avoid
1288 unused variable warning when neither of those used.
1289
12902006-05-23 Kevin Ryde <user42@zip.com.au>
1291
1292 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
1293 It's unused and will be in stdio.h anyway (if it's anywhere).
1294
12952006-05-20 Kevin Ryde <user42@zip.com.au>
1296
1297 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
1298 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
1299
1300 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
1301 symlink). Probably can't create symlinks with mknod anyway though.
1302
1303 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
1304 generation.
1305
13062006-05-15 Kevin Ryde <user42@zip.com.au>
1307
1308 * simpos.c, simpos.h (scm_primitive__exit): New function.
1309 (scm_primitive_exit): Update docstring, no longer the best exit after
1310 a fork.
1311
13122006-05-09 Kevin Ryde <user42@zip.com.au>
1313
1314 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
1315 rather than converting to doubles, to avoid inf or nan when the inputs
1316 are too big for a double but the quotient does fit. This affects
1317 conversions exact->inexact of big fractions.
1318
1319 * filesys.c (scm_open_fdes): Use open64.
1320 (scm_init_filesys): Add O_LARGEFILE.
1321
1322 * ports.c (scm_seek): Use lseek64.
1323 (scm_truncate_file): Use ftruncate64.
1324
4a342b19
MV
13252006-05-08 Marius Vollmer <mvo@zagadka.de>
1326
1327 * private-gc.h (CELL_P): Also check that the potential pointer is
1328 correctly aligned for a cell. Thanks to Miroslav Lichvar!
1329
c862d0e0
KR
13302006-04-18 Rob Browning <rlb@defaultvalue.org>
1331
1332 * _scm.h: Add back error if the size of off_t is unknown. The bug
1333 was actually in guile-readline's configuration.
1334
13352006-04-18 Kevin Ryde <user42@zip.com.au>
1336
1337 * posix.c (scm_mkstemp): Update docstring from the manual, in
1338 particular file mode 0600 is not guaranteed.
1339
281ab5e2
KR
13402006-04-17 Kevin Ryde <user42@zip.com.au>
1341
1342 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
1343 size, to help the guile-readline build where off_t is unused.
1344
2b829bbb
KR
13452006-04-16 Kevin Ryde <user42@zip.com.au>
1346
1347 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
1348 (scm_readdir): Use readdir64.
1349 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
1350 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
1351 and ftruncate take off_t not size_t.
1352 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
1353 available.
1354
13552006-04-06 Kevin Ryde <user42@zip.com.au>
1356
1357 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
9a5fa6e9 1358 instead of toggling it. Reported by Ludovic Courtès.
241d9cea 1359
2b829bbb
KR
13602006-03-26 Marius Vollmer <mvo@zagadka.de>
1361
1362 * threads.c (get_thread_stack_base): Use scm_get_stack_base
1363 instead of accessing __libc_stack_end directly, and only do this
1364 when pthread_attr_getstack is known not to work for the main
1365 thread or when not using pthreads at all.
1366
1367 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
1368 unknown instead of returning NULL.
1369
9a5fa6e9 13702006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1371
1372 * numbers.c (scm_i_mem2number): Renamed to
1373 scm_c_locale_stringn_to_number.
1374 * numbers.c, print.c, read.c: Updated callers.
1375 * numbers.h: Update function declaration.
1376
13772006-03-11 Neil Jerram <neil@ossau.uklinux.net>
1378
1379 * unif.c (string_set): Don't return in a void function. (Reported
1380 by Mike Gran.)
1381
1382 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
1383 rather than void*, so we can do pointer arithmetic on it.
1384 (Reported by Mike Gran.)
1385 (s_scm_uniform_vector_write): Ditto.
1386
13872006-03-10 Neil Jerram <neil@ossau.uklinux.net>
1388
1389 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
1390 oldra is not an array. (Reported by Steve Juranich.)
1391
1392 * threads.c (do_unlock): Renamed from "unlock", which is defined
1393 in unistd.h on QNX. (Reported by Matt Kraai.)
1394
13952006-03-04 Kevin Ryde <user42@zip.com.au>
1396
1397 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
1398 not SCM_CRITICAL_SECTION_START.
1399
1400 * eval.c, posix.c: Change comments from C++ to C style. Reported by
1401 Mike Gran.
1402
14032006-02-28 Kevin Ryde <user42@zip.com.au>
1404
1405 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
1406
14072006-02-26 Kevin Ryde <user42@zip.com.au>
1408
1409 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
1410 NAME_MAX is not available, which is so on Solaris 10. Report and help
1411 by Bill Schottstaedt.
1412
1413 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
1414 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
1415 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
1416 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
1417 use "unsigned char", not signed char. This ensures comparisons are
1418 the same as `char<?' etc, and is also the same as guile 1.6 did.
1419 Reported by Sven Hartrumpf.
1420
4a9f83ff
MD
14212006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
1422
1423 * random.c: Test for SCM_HAVE_T_UINT64 instead of
1424 SCM_HAVE_T_INT64.
1425 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
1426 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
1427 scm_t_int32.
1428
29d8c124 14292006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
4c7016dc
HWN
1430
1431 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
1432 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
1433 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
1434 Take into account SEG->SPAN when computing CELLS_SWEPT.
1435 (scm_i_sweep_segment): Take one more argument, similarly.
1436 (scm_i_sweep_all_segments): Likewise.
1437 (scm_i_sweep_some_segments): Likewise.
1438 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
1439 refer to SCM_GC_CELLS_COLLECTED.
1440
1441 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
1442 argument, an `scm_i_sweep_statistics' object.
1443 Change the way DELTA is collected: don't take into account
1444 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
1445
1446 * gc-malloc.c (scm_realloc): Pass an extra argument
1447 to `scm_i_sweep_all_segments ()'.
1448
1449 * gc.c (gc_start_stats): Updated accordingly.
1450 (gc_end_stats): Take an additional SWEEP_STATS argument.
1451 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
1452 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
1453 Decrement SCM_CELLS_ALLOCATED.
1454 (scm_i_gc): Likewise.
1455
1456 * private-gc.h (scm_i_sweep_*): Updated function
1457 prototypes accordingly.
1458 (scm_t_sweep_statistics): New type.
1459 (scm_i_sweep_statistics_init): New macro.
1460 (scm_i_sweep_statistics_sum): New macro
1461
9a5fa6e9 14622006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1463
1464 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
1465 LEN. Without this, too much collectable memory gets unregistered,
1466 which results in an underflow of SCM_MALLOCATED in
1467 `decrease_mtrigger()'.
1468
1469 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
1470 equal to SCM_MALLOCATED.
1471
14722006-02-13 Marius Vollmer <mvo@zagadka.de>
1473
1474 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
1475 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
1476 configured --without-threads.
1477 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
1478
1aaa1c17
MV
14792006-02-12 Marius Vollmer <mvo@zagadka.de>
1480
1481 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
1482 filling when the fill parameter is omitted, as documented, but
1483 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
1484 can not store characters.
1485
d7c6575f
NJ
14862006-02-09 Neil Jerram <neil@ossau.uklinux.net>
1487
1488 * socket.c (scm_c_make_socket_address): Pass address_size pointer
1489 on to scm_fill_sockaddr call.
1490
43e01b1e
NJ
14912006-02-04 Neil Jerram <neil@ossau.uklinux.net>
1492
1493 * throw.h (scm_c_catch, scm_c_with_throw_handler,
1494 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
1495
1496 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
1497 (struct pre_unwind_data): New, replaces struct lazy_catch.
1498 (scm_c_catch): New, replaces scm_internal_catch as the primary
1499 catch API for C code; adds pre-unwind handler support.
1500 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
1501 compatibility.
1502 (tc16_pre_unwind_data, pre_unwind_data_print,
1503 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
1504 "lazy_catch" equivalents.
1505 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
1506 as the primary C API for a "lazy" catch.
1507 (scm_internal_lazy_catch): Now just a wrapper for
1508 scm_c_with_throw_handler, for back compatibility.
1509 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
1510 pre-unwind handler support.
1511 (scm_catch): Now just a wrapper for
1512 scm_catch_with_pre_unwind_handler, for back compatibility.
1513 (scm_with_throw_handler): New.
1514 (scm_lazy_catch): Update comment to say that the handler can
1515 return, and what happens if it does.
1516 (toggle_pre_unwind_running): New.
1517 (scm_ithrow): When identifying the throw target, take running
1518 flags into account. In general, change naming of things from
1519 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
1520 don't unwind the dynamic context first. Add dynwind framing to
1521 manage the running flag of a throw handler. If a lazy catch or
1522 throw handler returns, rethrow the same exception again. Add
1523 pre-unwind support to the normal catch case (SCM_JMPBUFP).
1524
1525 * root.c (scm_internal_cwdr): Add NULL args to
1526 scm_i_with_continuation_barrier call.
1527
1528 * dynwind.c: Change comment mentioning lazy-catch to mention
1529 pre-unwind data and throw handler also.
1530
1531 * continuations.h (scm_i_with_continuation_barrier): Add
1532 pre-unwind handler args.
1533
1534 * continuations.c (scm_i_with_continuation_barrier): Add
1535 pre-unwind handler args, and pass on to scm_c_catch (changed from
1536 scm_internal_catch).
1537 (c_handler): Remove scm_handle_by_message_noexit call.
1538 (scm_c_with_continuation_barrier): Call
1539 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1540 as the pre-unwind handler.
1541 (scm_handler): Remove scm_handle_by_message_noexit call.
1542 (s_scm_with_continuation_barrier): Call
1543 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1544 as the pre-unwind handler.
1545
2b829bbb
KR
15462006-02-04 Kevin Ryde <user42@zip.com.au>
1547
1548 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
1549
72098928
KR
15502006-02-03 Kevin Ryde <user42@zip.com.au>
1551
1552 * list.c, list.h (scm_list): Restore this function for use from C.
1553 It's a complete no-op but in theory might used by someone.
1554
aa092c5d
MV
15552006-01-30 Marius Vollmer <mvo@zagadka.de>
1556
1557 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
1558 so that it gets unlocked in all cases.
1559 (SCM_APPLY, CEVAL): Likewise.
1560
661ae7ab
MV
15612006-01-29 Marius Vollmer <mvo@zagadka.de>
1562
ee51ba31
MV
1563 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
1564 scm_is_typed_array instead.
1565
661ae7ab
MV
1566 Renamed the "frames" that are related to dynamic-wind to "dynamic
1567 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
1568 Updated documentation.
1569
99e370f6
MV
1570 Disabled "futures":
1571
1572 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
1573 * eval.c, init.c: Comment out all 'future' related things.
1574
15ccf10b
MV
15752006-01-28 Marius Vollmer <mvo@zagadka.de>
1576
1577 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
1578 to inline.h to make it inline.
1579
9a5fa6e9 15802005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
fd0a5bbc
HWN
1581
1582 * strings.c (scm_i_take_stringbufn): New.
1583 (scm_i_c_take_symbol): New.
1584 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
1585
1586 * strings.h (scm_i_c_take_symbol): New.
1587 (scm_i_take_stringbufn): New.
1588
1589 * symbols.c (lookup_interned_symbol): New function.
1590 (scm_i_c_mem2symbol): New function.
1591 (scm_i_mem2symbol): Use `lookup_symbol ()'.
1592 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
1593 creating a new Scheme string.
1594 (scm_from_locale_symboln): Likewise.
1595 (scm_take_locale_symbol): New.
1596 (scm_take_locale_symboln): New.
1597
1598 * symbols.h (scm_take_locale_symbol): New.
1599 (scm_take_locale_symboln): New.
1600
2ca2ffe6
HWN
16012006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1602
1603 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
1604 free_count.
1605
c255614e
HWN
16062005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
1607
1608 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
1609 upon error
1610
29295b0c
NJ
16112005-12-29 Neil Jerram <neil@ossau.uklinux.net>
1612
9a5fa6e9 1613 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
29295b0c
NJ
1614 the GC when allocated_fluids_len is zero.
1615
2824f4dc
NJ
16162005-12-14 Neil Jerram <neil@ossau.uklinux.net>
1617
ec3a8ace
NJ
1618 * load.c (the_reader, the_reader_fluid_num): New.
1619 (scm_primitive_load): Support custom reader.
1620 (scm_init_load): Init the_reader and the_reader_fluid_num; export
1621 the_reader as `current-reader'.
1622
2824f4dc
NJ
1623 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
1624 (rather than an uninitialized pointer on the stack).
1625
d9c36d2a
MV
16262005-12-07 Marius Vollmer <mvo@zagadka.de>
1627
6a88895b 1628 Reported by Bruce Korb:
241d9cea 1629
6a88895b
MV
1630 * init.c (invoke_main_func): Don't call exit here. Throws that
1631 are only caught by scm_with_guile will bypass us and would cause
1632 scm_boot_guile to return erroneously.
1633 (scm_boot_guile): Expect scm_with_guile to return and call exit
1634 here, passing it an appropriate exit code.
1635
1636 From Andy Wingo:
241d9cea 1637
d9c36d2a
MV
1638 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1639 unsigned char cast to an int, or -1 for EOS.
241d9cea 1640
b54df254
MV
16412005-12-06 Marius Vollmer <mvo@zagadka.de>
1642
08f489c9
MV
1643 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1644 non-const.
9a5fa6e9 1645 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
241d9cea 1646
b54df254
MV
1647 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1648 scm_enter_guile): Removed from public API. See comment at
1649 scm_without_guile for the rationale.
1650
1651 * scmsigs.c (read_without_guile): New.
1652 (signal_delivery_thread): Use it instead of
1653 scm_leave_guile/read/scm_enter_guile.
1654
9d9ce2b5
MV
1655 From Stephen Compall:
1656
1657 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1658 (CEVAL): Evaluate SRFI 61 cond clauses.
1659
9a5fa6e9 16602005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
9fb5c8f9
NJ
1661
1662 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1663 This was typically hit when running `gc-live-object-stats' right
1664 after starting Guile.
1665
efeac8ae
KR
16662005-11-30 Kevin Ryde <user42@zip.com.au>
1667
1668 * srfi-13.c (scm_string_append_shared): No copying if just one
1669 non-empty string in args.
1670
606183ba
KR
16712005-11-26 Kevin Ryde <user42@zip.com.au>
1672
1673 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
9a5fa6e9 1674 by Ludovic Courtès.
606183ba
KR
1675
1676 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1677 "register".
1678
1679 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1680 scm_malloc returning NULL, it never does that.
1681 * putenv.c (putenv): Likewise.
1682
1683 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1684 much too big to want to inline.
1685
9a5fa6e9 16862005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
dbb5de29
NJ
1687
1688 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1689 the value at its top. This fixes a reference leak.
1690 (PUSH_REF): Perform `pstate->top++' after calling
1691 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1692 effects.
1693
9a5fa6e9 16942005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
3f98874a
NJ
1695
1696 * gc.c (scm_weak_vectors): Removed.
1697
f07d2b20
KR
16982005-11-12 Kevin Ryde <user42@zip.com.au>
1699
1700 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
9a5fa6e9 1701 by Ludovic Courtès.
f07d2b20 1702
bedd3f5f
MV
17032005-11-07 Marius Vollmer <mvo@zagadka.de>
1704
1705 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1706 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1707 section might exit non-locally.
1708
7c9c0169
NJ
17092005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1710
1711 * eval.c (sym_instead): New symbol.
1712 (ENTER_APPLY): Remove optional use of a continuation when making
1713 trap call.
1714 (scm_debug_opts): Change doc for 'cheap option to make clear that
1715 it is now obsolete.
1716 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1717 making trap calls, and implement substitution of eval expressions
1718 and return values using the values that the trap call handlers
1719 return.
1720
1721 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1722
9a5fa6e9 17232005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
64cdbfc7
KR
1724
1725 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1726 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1727 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1728 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1729 scm_c_make_socket_address): New functions.
1730 * socket.h: Add prototypes.
1731
fc9f596c
KR
17322005-10-24 Kevin Ryde <user42@zip.com.au>
1733
1734 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1735 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1736 POSIX spec examples, the latter are not available on for instance
1737 NetBSD.
1738
1739 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1740 posix.texi.
1741
1742 * stime.c (scm_strftime): Update docstring from posix.texi.
1743
0460c6e1
MV
17442005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1745
1746 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
241d9cea 1747
0460c6e1
MV
1748 * null-threads.h, pthread-threads.h
1749 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1750 (scm_i_pthread_mutexattr_recursive): New.
1751
1752 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1753 (scm_i_critical_section_mutex): Do not initialize statically.
1754 (scm_threads_prehistory): Initialize
1755 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1756 here.
241d9cea 1757
0460c6e1
MV
1758 * eval.c (source_mutex): Do not initialiaze statically.
1759 (scm_init_eval): Do it here, using
1760 scm_i_pthread_mutexattr_recursive.
1761
7b4a9e52
MV
17622005-09-05 Marius Vollmer <mvo@zagadka.de>
1763
1764 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1765 New.
1766 (sym_reader): New.
1767 (scm_print_opts): Added "quote-keywordish-symbols" option.
1768 (quote_keywordish_symbol): New, for evaluating the option.
1769 (scm_print_symbol_name): Use it.
1770 (scm_init_print): Initialize new option to sym_reader.
241d9cea 1771
5defc05d
NJ
17722005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1773
1774 * eval.c (eval_letrec_inits): New.
1775 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1776
036482e9
MV
17772005-08-12 Marius Vollmer <mvo@zagadka.de>
1778
1779 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1780 Peter Gavin!
1781
5c347f8c
KR
17822005-08-12 Kevin Ryde <user42@zip.com.au>
1783
1784 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1785
bc721aa2
KR
17862005-08-06 Kevin Ryde <user42@zip.com.au>
1787
1788 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1789 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1790 scm_string_index, scm_string_index_right, scm_string_skip,
1791 scm_string_skip_right, scm_string_count, scm_string_map,
1792 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1793 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1794 procedures called in loops.
1795
126c81db
KR
17962005-08-02 Kevin Ryde <user42@zip.com.au>
1797
1798 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1799 avoid lots of copying where previoulsy growing by only 80 bytes at a
1800 time.
1801
7f278dc6
MV
18022005-08-01 Marius Vollmer <mvo@zagadka.de>
1803
1804 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1805 already have scm_lookup_closure_module, which does the same thing.
241d9cea 1806
cb5c4b07
MV
18072005-08-01 Marius Vollmer <mvo@zagadka.de>
1808
1809 New marking algorithm for weak hashtables that fixes the problem
1810 that references from the non-weak value to the associated weak
1811 key (for example) would prevent the entry from ever being dropped.
1812
1813 Guardians have been changed back to their original semantics and
1814 are no longer greedy and no longer drop cycles.
241d9cea 1815
cb5c4b07
MV
1816 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1817 hashtable and guardian machinery but call the relevant functions
1818 directly.
1819
1820 * guardians.h, guardians.c, deprecated.h,
1821 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1822 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1823 Deprecated and moved into deprecated.[ch].
1824
1825 * guardians.h, guardians.c: Mostly rewritten.
1826 (scm_i_init_guardians_for_gc,
1827 scm_i_identify_inaccessible_guardeds,
1828 scm_i_mark_inaccessible_guardeds): New.
930888e8 1829 (scm_make_guardian): Removed greedy_p argument.
241d9cea 1830
cb5c4b07
MV
1831 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1832 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1833 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1834 (scm_weaks_prehistory): Removed.
1835 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1836 scm_i_mark_weak_vectors_non_weaks,
1837 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1838 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1839 scm_scan_weak_vectors): Removed.
241d9cea 1840
cb5c4b07
MV
1841 * hashtab.h (scm_i_scan_weak_hashtables): New.
1842 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1843 SCM_WVECTF_NOSCAN.
1844 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1845 t->n_items.
1846 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1847 to latter. Do not scan the alists themselves, this is done by the
1848 weak vector code now. Just update the element count.
1849
1850 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1851 to latter. The type is now only part of the cell word.
1852 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1853
1854 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1855
3e2073bd
MD
18562005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1857
1858 Some changes towards making it possible to run Guile on the EM64T
1859 platform.
1860
1861 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1862 mallocating for (unsigned long *bounds).
1863
1864 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1865 scm_t_bits before storing them in the type word.
241d9cea 1866
3e2073bd
MD
1867 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1868 scm_t_bits to int.
1869
e8ac8e75
KR
18702005-07-12 Kevin Ryde <user42@zip.com.au>
1871
1872 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1873 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1874 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1875 than scm_makfrom0str.
1876 Reported by Ken Raeburn.
241d9cea 1877
e8ac8e75
KR
1878 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1879 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1880 returning SCM_GC_CARD_BVEC.
241d9cea 1881
e8ac8e75
KR
1882 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1883 rather than latin-1 acute accent, the latter may not print on all
1884 terminals.
1885
1886 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1887 trailing deletions, so as to return a substring if those are the only
1888 changes.
1889
adc0677d
KR
18902005-07-10 Kevin Ryde <user42@zip.com.au>
1891
1892 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1893 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1894 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1895 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1896
8fecbb19
HWN
18972005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1898
1899 * gc-card.c (scm_i_card_statistics): init tag.
1900
1901 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1902
fc9c5d06
HWN
19032005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1904
8fecbb19
HWN
1905 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1906 string.
fc9c5d06 1907
08fce816
KR
19082005-06-25 Kevin Ryde <user42@zip.com.au>
1909
1910 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1911 last change, use plain copy-on-write substrings, the individual
1912 descriptions in the srfi don't mention shared storage (only the
1913 introduction does).
1914
1915 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1916 null-terminator, rather than mallocing a whole new block.
1917 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1918
fc4abd0e
MV
19192005-06-12 Marius Vollmer <mvo@zagadka.de>
1920
e3da8a30
MV
1921 * ramap.c (scm_array_index_map_x): First test for real arrays,
1922 then check for generalized vectors. This ensures that the
1923 generalized vector case need only work with zero-origin ranges.
12097c77
MV
1924 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1925 to access the target array, making these functions work with all
1926 kinds of arrays, not just bit arrays.
e3da8a30 1927
fc4abd0e
MV
1928 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1929 gh_list.c, gh_predicates.c: Deprecated everything.
1930
1931 * environments.c (environment_default_folder,
1932 environment_default_observer): Do not use gh_call3, gh_call1.
1933
e4da0740
HWN
19342005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1935
1936 * modules.c (s_scm_eval_closure_module): new function. Return the
1937 module inside an eval-closure.
1938
1939 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1940 table. This means that procedure properties are GC'd if the
1941 procedure dies.
1942
27667158
KR
19432005-06-11 Kevin Ryde <user42@zip.com.au>
1944
1945 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1946 charset cases, count chars kept and build a string in a second pass,
1947 rather than using a cons cell for every char kept. Use a shared
1948 substring when nothing removed (such sharing is allowed by the srfi).
1949
8a00ba71
HWN
19502005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1951
1952 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
241d9cea 1953 string, so live object stats can be sorted with string<?.
8a00ba71 1954
a677679f
MV
19552005-06-06 Marius Vollmer <mvo@zagadka.de>
1956
2ff668b0
MV
1957 * print.c (iprin1): When writing a string, collect all characters
1958 that can be printed directly into one call to scm_lfwrite.
1959 Previously, every character was output with its own call to
1960 write(2) on unbuffered ports.
1961
589f22f6
MV
1962 * eval.c (scm_eval_options_interface): Use
1963 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1964 and SCM_CRITICAL_SECTION_END.
1965
a677679f
MV
1966 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1967 check for generalized vectors. This ensures that the generalized
1968 vector case need only work with zero-origin ranges.
1969
f8cda9ee
KR
19702005-06-06 Kevin Ryde <user42@zip.com.au>
1971
1972 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1973 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1974 matched.
1975
cdac1be4
MV
19762005-06-05 Marius Vollmer <mvo@zagadka.de>
1977
6642f7ac
MV
1978 * eval.c: Added comment on how to make case 1.1 of
1979 r5rs_pitfall.test succeed.
1980
cdac1be4
MV
1981 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1982
1983 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
241d9cea 1984
cdac1be4
MV
1985 * socket.c: Remove obsolete comment about socklen_t.
1986 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
241d9cea 1987
cdac1be4 1988 * numbers.h (isnan)[__MINGW32__]: Remove.
241d9cea 1989
cdac1be4
MV
1990 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
1991 DEFAULT_INCLUDES when cross compiling.
241d9cea 1992
cdac1be4
MV
1993 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
1994
a677679f 1995 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
cdac1be4
MV
1996 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
1997 from Jan's patch.)
241d9cea 1998
9e664475
MV
19992005-05-22 Marius Vollmer <mvo@zagadka.de>
2000
188d0c5e
MV
2001 * unif.c (scm_make_shared_array): Add old base to new base since
2002 scm_array_handle_pos does not include the base.
2003 (scm_aind): Likewise.
2004
9e664475
MV
2005 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
2006 output port.
2007
5a6d139b
NJ
20082005-05-12 Neil Jerram <neil@ossau.uklinux.net>
2009
2010 Mac OS X compile warning fixes, reported by Richard Todd.
241d9cea 2011
5a6d139b
NJ
2012 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
2013 that it is signed.
2014
2015 * strports.c (st_resize_port): Add unsigned char cast.
2016 (scm_mkstrport): Make read/write_buf cast unsigned.
2017
2018 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
2019
2020 * rdelim.c (scm_read_line): Initialize slen.
2021
2022 * load.c (scm_search_path): Remove weird >=1, and add
2023 parentheses to clarify conditions.
2024
2025 * hash.c (scm_hasher): Add const unsigned char cast.
2026
2027 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
2028
b01532af
NJ
20292005-05-11 Neil Jerram <neil@ossau.uklinux.net>
2030
9a5fa6e9 2031 Fix C99isms reported by Ludovic Courtès:
241d9cea 2032
b01532af
NJ
2033 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
2034 code.
2035
2036 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
2037 of code.
2038
2039 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
2040 of code.
2041 (scm_i_card_statistics): Add block for declarations of tag_as_scm
2042 and current.
2043
229a0710
NJ
20442005-05-10 Neil Jerram <neil@ossau.uklinux.net>
2045
2046 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
2047 compile warning reported by Werner Scheinast.
2048
645dd3fc
HWN
20492005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
2050
80038021
HWN
2051 * list.h: remove scm_list()
2052
645dd3fc
HWN
2053 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
2054 SCM_DEBUG_CELL_ACCESSES
2055 (FLUID_NEXT_LOC): idem.
2056
9a68a4a8
KR
20572005-04-30 Kevin Ryde <user42@zip.com.au>
2058
2059 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
2060 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
2061 zero when re==0 and im<0. Reported by Jean Crepeau.
2062
0640cdaa
KR
20632005-04-25 Kevin Ryde <user42@zip.com.au>
2064
2065 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
4d54ee35
KR
2066 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
2067 few sensible uses (like filling with a random number generator say),
2068 but has been allowed in the past and so should be kept.
0640cdaa 2069
c0b85e9c
KR
20702005-04-23 Kevin Ryde <user42@zip.com.au>
2071
2072 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
2073 scm_hash_fn_remove_x.
2074
2075 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
2076 the caller when cons* is reached through apply.
2077
2078 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
2079 list is called using apply, under the debugging evaluator.
2080 (scm_list): Remove.
2081
c51682b4
KR
2082 * list.c, list.h (scm_make_list): New code, moving make-list from
2083 boot-9.scm.
8cb2eff8 2084
c0575bde
KR
20852005-04-14 Kevin Ryde <user42@zip.com.au>
2086
2087 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
2088 converted from scheme code in boot-9.scm.
2089
47a298d9
KR
20902005-04-11 Kevin Ryde <user42@zip.com.au>
2091
2092 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
2093 Validate list argument, scm_string_append and scm_string_append_shared
2094 don't do that to their rest argument (in a normal build).
2095
8ea3dc2e
MV
20962005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2097
2098 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
2099 closure can not be stored since it is no longer valid at GC time.
2100 (make_hash_table): Initialize 'hash_fn' field.
2101 (scm_i_rehash): Only store hash_fn in hash table when closre is
2102 NULL.
2103 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
2104 non-NULL. Always use a NULL closure.
2105 (scm_hash_fn_create_handle_x): Also rehash when table contains too
2106 few entries.
241d9cea 2107
08d2020d
MV
21082005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2109
2110 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
2111 argument; always use scm_delq_x. The delete_fn function works on
2112 the handle, not the key, and it therefore makes no sense to make
2113 it configurable. Changed all callers.
2114 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
2115 (scm_hash_clear): Accept plain vectors as hashtables.
2116 (scm_delx_x): Removed.
241d9cea 2117
cb975c21
HWN
21182005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
2119
2120 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
2121 compatibility with gcc -std=c99.
2122
4c908f2c
MD
21232005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2124
2125 * async.h (scm_mask_ints): Removed left over reference to
2126 scm_root.
2127
2128 * threads.c: Removed fprintf debug statements.
241d9cea 2129
d193b04b
NJ
21302005-03-24 Neil Jerram <neil@ossau.uklinux.net>
2131
2132 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
2133
c29748cd
NJ
21342005-03-23 Neil Jerram <neil@ossau.uklinux.net>
2135
2136 * debug.c (scm_make_memoized): Remove unnecessary critical
2137 section, and simplify by using SCM_RETURN_NEWSMOB.
2138
e654b062
MD
21392005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2140
2141 * strings.h (SCM_STRING_UCHARS): Added missing argument.
2142
4bc6f1c6
KR
21432005-03-18 Kevin Ryde <user42@zip.com.au>
2144
2145 * arbiters.c (FETCH_STORE) [generic C]: Should be
9a5fa6e9 2146 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
4bc6f1c6 2147
f1531813
KR
21482005-03-13 Kevin Ryde <user42@zip.com.au>
2149
2150 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
2151 srfi-60.
2152
2153 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
2154 because OR-ing bits into a negative can reduce the value to an inum.
2155
2156 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
2157 casting inum to double since that can lose precision.
2158
a9fae247
MV
21592005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2160
2161 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
2162 (guilify_self_1): Initialize it.
2163
2164 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
2165 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
2166 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
2167 field.
2168 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
2169 recursively.
2170 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
2171 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
2172 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
2173 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
2174 scm_after_gc_c_hook here.
2175 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
2176 scm_after_gc_c_hook when a full GC has in fact been performed.
2177 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
2178
2179 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
2180 scm_gc_heap_lock.
2181
2182 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
2183 scm_gc_running_p while the scm_i_sweep_mutex is locked.
2184
2185 * inline.h (scm_cell, scm_double_cell): Do not check
2186 scm_gc_running_p, allocation during sweeping is OK.
2187
2188 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
2189 not set scm_block_gc.
2190
2191 * init.c (scm_i_init_guile): Do not set scm_block_gc.
2192
2193 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
2194 instead of scm_malloc. The latter can not be used during GC.
2195
d1c38e11
MV
21962005-03-09 Marius Vollmer <mvo@zagadka.de>
2197
2198 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
2199 years.
2200
99ec43c1
MV
22012005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2202
2203 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
2204 scm_gc_running_p. Sweeping can happen in parallel with
2205 allocation.
2206
2207 * inline.h: Updated comments for current threading implementation.
2208
2209 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
2210 (scm_i_thread): Removed unused signal_asyncs field.
2211 (threads_mark): Do not mark it.
2212 (guilify_self_1): Do not initialize it. Do initialize
2213 continuation_root field.
2214 (do_thread_exit): Do not remove thread from all_threads list.
2215 (on_thread_exit): Do it here, after leaving guile mode.
2216 (sleep_level): Removed.
2217 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
2218 returning. Do not support recursive sleeps.
2219 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
2220 entry. Do not support recursive sleeps.
2221
2222 * fluids.c (ensure_state_size, ensure_all_state_sizes,
2223 resize_all_states): Collapsed ensure_state_size and
2224 ensure_all_state_sizes into one function named resize_all_states.
2225 Allocate new vectors outside of single threaded region. Do only
2226 simple things inside that region.
2227 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
2228 while adding to the global lists.
241d9cea 2229
99ec43c1 2230
461f34aa
MV
22312005-03-08 Marius Vollmer <mvo@zagadka.de>
2232
2233 libltdl is no longer distributed. We expect it to be installed
2234 already.
241d9cea 2235
461f34aa
MV
2236 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
2237 (libguile_la_LIBADD): Removed @LIBLTDL@.
2238
4e047c3e
MV
22392005-03-07 Marius Vollmer <mvo@zagadka.de>
2240
2241 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
2242 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
2243 they also block/unblock execution of asyncs and call
2244 scm_async_click which is declared in async.h but threads.h can not
2245 include async.h since async.h already includes threads.h.
2246 (scm_i_critical_section_level): New, for checking mistakes in the
2247 use of the SCM_CRITICAL_SECTION_* macros.
2248 (scm_i_critical_section_mutex): Make it a recursive mutex so that
2249 critical sections can be nested.
2250
2251 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
2252 not zero.
241d9cea 2253
4e047c3e
MV
2254 * threads.h, threads.c (scm_frame_lock_mutex): New.
2255 (scm_frame_critical_section): Take mutex as argument.
2256 (framed_critical_section_mutex): New, used as default for above.
2257 (scm_init_threads): Initialize it.
2258 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
2259 scm_i_critical_section_mutex; both are initialized statically.
241d9cea 2260
4e047c3e
MV
2261 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
2262 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
b9d9ad3a
MV
2263 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
2264 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
4e047c3e
MV
2265
2266 * debug.c (scm_debug_options): Replace
2267 SCM_CRITICAL_SECTION_START/END with a frame and
2268 scm_frame_critical_section.
2269
2270 * continuations.c (scm_make_continuation): No longer a critical
2271 section.
2272 (scm_dynthrow): Abort when scm_i_critical_section_level is
2273 not zero.
241d9cea 2274
d0a45bff
MV
22752005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2276
db6673e5
MV
2277 * threads.c (scm_try_mutex): Renamed argument for consistency.
2278
d0a45bff
MV
2279 * root.c (scm_call_with_dynamic_root): New docstring.
2280
2281 * eval.c: Define _GNU_SOURCE.
2282
9de87eea
MV
22832005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2284
2285 Big merge from the mvo-thread-cleanup branch. The main changes
2286 are:
241d9cea 2287
9de87eea
MV
2288 - The dynamic roots functionality has been split into dynamic
2289 states and continuations barriers. Fluids have been
2290 reimplemented and can now be garbage collected.
241d9cea 2291
9de87eea
MV
2292 - Initialization of Guile now works in a multi-thread friendly
2293 manner. Threads can freely enter and leave guile mode.
2294
2295 - Blocking on mutexes or condition variables or while selecting
2296 can now be reliably interrupted via system asyncs.
2297
2298 - The low-level threading interface has been removed.
2299
2300 - Signals are delivered via a pipe to a dedicated 'signal delivery
2301 thread'.
241d9cea 2302
9de87eea
MV
2303 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
2304
2305 * throw.c (scm_handle_by_message): Exit only the current thread,
2306 not the whole process.
2307 (scm_handle_by_message_noexit): Exit when catching 'quit.
241d9cea 2308
9de87eea
MV
2309 * scmsigs.c (take_signal, signal_delivery_thread,
2310 start_signal_delivery_thread, ensure_signal_delivery_thread,
2311 install_handler): Reimplemented signal delivery as explained in
2312 the comments.
2313
2314 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
2315 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
2316 scm_i_sched_yield, scm_i_pthread_sigmask,
2317 SCM_I_PTHREAD_MUTEX_INITIALIZER,
2318 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
2319 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
2320 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
2321 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
2322 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
2323 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
2324 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
2325 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
2326 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
2327 scm_i_pthread_key_create, scm_i_pthread_setspecific,
2328 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
2329 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
2330 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
2331 when using pthreads.
2332 * null-threads.c, null-threads.h: Provide dummy definitions for
2333 the above symbols when not using pthreads.
241d9cea 2334
9de87eea
MV
2335 * modules.h, modules.c (scm_frame_current_module): New.
2336
2337 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
2338 instead of scm_internal_dynamic_wind.
2339
2340 * init.h, init.c (restart_stack, start_stack): Removed.
2341 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
2342 (scm_boot_guile_1): Removed.
2343 (scm_i_init_mutex): New.
2344 (really_cleanup_for_exit, cleanup_for_exit): New.
2345 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
2346 Moved around some init funcs. Call
2347 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
2348 with atexit.
241d9cea 2349
9de87eea
MV
2350 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
2351 Use "!scm_is_eq" instead of "!=".
2352
2353 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
2354 SCM_USE_COOP_THREADS): Removed.
2355
2356 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
2357 maintained. Unlock scm_i_sweep_mutex before running
2358 scm_after_gc_c_hook.
2359 (scm_permanent_object): Allocate outside of critical section.
2360 (cleanup): Removed.
241d9cea 2361
9de87eea
MV
2362 * fluids.h, fluids.c: Reimplemented completely.
2363 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
2364 SCM_FAST_FLUID_SET): Reimplemented as functions.
2365 (scm_is_fluid): New.
2366 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
2367 (scm_make_dynamic_state, scm_dynamic_state_p,
2368 scm_is_dynamic_state, scm_current_dynamic_state,
2369 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
2370 scm_c_with_dynamic_state, scm_with_dynamic_state,
2371 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
241d9cea 2372
9de87eea
MV
2373 * feature.c (progargs_fluid): New.
2374 (scm_program_arguments, scm_set_program_arguments): Use it instead
2375 of scm_progargs.
2376 (scm_init_feature): Allocate it. Also, only add "threads" feature
2377 when SCM_USE_PTHREAD_THREADS is true.
241d9cea 2378
9de87eea
MV
2379 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
2380 scm_make_rec_mutex, with all the consequences.
2381 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
2382 scm_internal_dynamic_wind. Handle dynamic states as second
2383 argument.
241d9cea 2384
9de87eea
MV
2385 * threads.h, threads.c (scm_internal_select): Renamed to
2386 scm_std_select and discouraged old name.
2387 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
2388 and scm_std_usleep.
2389 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
2390 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
2391 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
2392 SCM_THREAD_DATA): Removed.
2393 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
2394 (scm_i_thread): New.
2395 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2396 Use scm_assert_smob_type.
2397 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
2398 scm_thread_self, scm_thread_yield, scm_mutex_init,
2399 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
2400 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
2401 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
2402 scm_cond_init, scm_cond_destroy, scm_cond_wait,
2403 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
2404 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
2405 scm_thread_select): Removed. Replaced with scm_i_pthread
2406 functions as appropriate.
2407 (scm_in_guile, scm_outside_guile): Removed.
2408 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
2409 take a ticket.
2410 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
2411 New.
2412 (scm_i_frame_single_threaded): New.
2413 (scm_init_threads_default_dynamic_state): New.
2414 (scm_i_create_thread): Removed.
2415 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
2416 (scm_make_recursive_mutex): New.
2417 (scm_frame_critical_section): New.
2418 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
2419 latter, changed all uses.
2420 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
2421 scm_i_set_last_debug_frame): New, use them instead of scm_root
2422 stuff.
2423 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
2424 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
2425 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
2426 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
2427 (remqueue): Allow the removal of already removed cells. Indicate
2428 whether a real removal has happened.
2429 (scm_thread): Removed, replaced with scm_i_thread.
2430 (make_thread, init_thread_creatant): Removed.
2431 (cur_thread): Removed.
2432 (block_self, unblock_from_queue): New.
2433 (block, timed_block, unblock): Removed.
2434 (guilify_self_1, guilify_self_2, do_thread_exit,
2435 init_thread_key_once, init_thread_key,
2436 scm_i_init_thread_for_guile, get_thread_stack_base,
2437 scm_init_guile): New initialisation method.
2438 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
2439 thread creation.
2440 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
2441 "fair" to fat and implemented new semantics, including reliable
2442 interruption.
2443 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
2444 (scm_threads_mark_stacks): Explicitly mark handle.
2445 (scm_std_select): Allow interruption by also selecting on the
2446 sleep_pipe.
2447 (scm_i_thread_put_to_sleep): Handle recursive requests for
2448 single-threadedness.
2449 (scm_threads_prehistory, scm_init_threads): Put current thread
2450 into guile mode via guileify_self_1 and guileify_self_2,
2451 respectively.
2452
2453 * fluid.h (SCM_FLUIDP): Deprecated.
241d9cea 2454
9de87eea 2455 * coop-threads.c: Removed.
241d9cea 2456
9de87eea
MV
2457 * continuations.h, continuations.c (scm_with_continuation_barrier,
2458 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
2459 New.
2460
2461 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
2462 (async_mutex): New.
2463 (scm_async_click): Protected with async_mutex. Do not deal with
2464 signal_asyncs, which are gone. Set cdr of handled async cell to
2465 #f.
2466 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
2467 current sleep.
2468 (scm_system_async_mark_for_thread): Do not use scm_current_thread
2469 since that might not work during early initialization.
241d9cea 2470
9de87eea
MV
2471 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
2472 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
2473 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
2474 and SCM_CRITICAL_SECTION_END.
2475 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
2476 SCM_CRITICAL_SECTION_START/END.
241d9cea 2477
9de87eea
MV
2478 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
2479 (libguile_la_SOURCES): Added null-threads.c
2480 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
2481 threads-plugin.c.
2482 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
2483
2484 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
2485 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
2486 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
2487 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
2488 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
2489 scm_make_root): Removed or deprecated. Replaced with references
2490 to the current thread, dynamic state, continuation barrier, or
2491 some fluid, as appropriate.
2492 (root_mark, root_print): Removed.
2493 (scm_internal_cwdr): Reimplemented guts with
2494 scm_frame_current_dynamic_state and
2495 scm_i_with_continuation_barrier.
2496 (scm_dynamic_root): Return current continuation barrier.
241d9cea
NJ
2497
2498
ad3d5a65
MV
24992005-02-28 Marius Vollmer <mvo@zagadka.de>
2500
2501 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
2502 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
2503 cleanliness.
2504 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
2505 IP_DROP_MEMBERSHIP.
2506 Thanks to Greg Troxel!
2507
73a90115
MD
25082005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2509
2510 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
2511 block.
2512
5d2cb3ab
MV
25132005-02-25 Marius Vollmer <mvo@zagadka.de>
2514
2515 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
2516 so that no two weak alist vectors share a spine.
2517 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
2518 during GC before inserting the new alist cell.
2519
838c4126
MV
25202005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2521
2522 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
2523 the hashtable.
2524 (scm_hash_fn_create_handle_x): Likewise.
2525 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
241d9cea 2526
29fed193
MD
25272005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2528
2529 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
2530 the prototypical examples mentioned in the old reference manual.
2531 Instead keep the old semantics of dispatching on type. (Yes, this
2532 is extremely ugly, but the whole point of keeping the deprecated
2533 interface is not to break old code.)
2534
9cc49060
MD
25352005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2536
2537 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
2538 scm_i_array_dims.
2539
8447f463
KR
25402005-01-28 Kevin Ryde <user42@zip.com.au>
2541
2542 * numbers.c (scm_ash): Rewrite using shifts, much faster than
2543 integer-expt and multiply/divide. Inexacts and fractions no longer
2544 supported (they happened to work before for left shifts, but not
2545 right). Don't really need inexacts and fractions, since ash is
2546 documented as a "bitwise operation", and all the rest of those only
2547 take exact integers.
2548
1367aa5e
HWN
25492005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
2550
856fca7e
HWN
2551 * gc-card.c (scm_i_card_statistics): map structs, closures and
2552 subrs to one tag.
2553
1367aa5e 2554 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
856fca7e 2555 (tag_table_to_type_alist): ignore unknown types.
1367aa5e
HWN
2556
2557 * gc-segment.c (scm_i_all_segments_statistics): new function.
2558 (scm_i_heap_segment_statistics): new function
2559
2560 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
2561 statistics on the number of live objects of each type.
2562
2563 * gc-card.c (scm_i_tag_name): new function.
241d9cea 2564 (scm_i_card_statistics): new function.
1367aa5e 2565
333db3b8
KR
25662005-01-24 Kevin Ryde <user42@zip.com.au>
2567
2568 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
2569 POSIX and C99 don't document errno being set. Reported by Bruno
2570 Haible.
2571 (scm_flock): Update docstring from manual.
2572
8447f463
KR
2573 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
2574 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
2575 a 64-bit system.
2576
2577 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
2578 sa_handler, needs to be a long on 64-bit systems where int is only 32
2579 bits.
2580
88f59e53
MV
25812005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2582
0eeb2611
MV
2583 * environments.c (obarray_enter, obarray_replace): Call
2584 SCM_HASHTABLE_INCREMENT when adding a new entry.
2585
88f59e53
MV
2586 * objects.c: Include goops.h for the scm_class_of prototype.
2587
2588 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
2589 sizes to be smaller than the maximum lengths of vectors.
2590
219b2868
MV
25912005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2592
2593 * ports.c, smob.c: Include "libguile/goops.h".
2594
2595 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
2596 scm_class_char, scm_class_pair, scm_class_procedure,
2597 scm_class_string, scm_class_symbol,
2598 scm_class_procedure_with_setter, scm_class_primitive_generic,
2599 scm_class_vector, scm_class_null, scm_class_real,
2600 scm_class_complex, scm_class_integer, scm_class_fraction,
2601 scm_class_unknown, scm_port_class, scm_smob_class,
2602 scm_no_applicable_method, scm_class_of): Moved from objects to
2603 goops since they are only useable once goops has been loaded.
2604 (scm_classes_initialized): Removed.
2605 (scm_class_of): Do not check it.
2606 (create_standard_classes): Do not set it.
241d9cea 2607
009c6b9c
MV
26082005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2609
50472546
MV
2610 * objects.h, objects.c (scm_classes_initialized): New.
2611 (scm_class_of): Signal error when scm_classes_initialized is zero.
2612 * goops.c (create_standard_classes): Set scm_classes_initialized
2613 to one.
241d9cea 2614
009c6b9c
MV
2615 * random.c (scm_random_solid_sphere_x): Use
2616 scm_c_generalized_vector_length instead of
2617 scm_uniform_vector_length.
2618
7719cbe9
MV
26192005-01-16 Marius Vollmer <mvo@zagadka.de>
2620
2621 * script.c (scm_compile_shell_switches): Removed debugging output.
2622
1ec44fed
KR
26232005-01-15 Kevin Ryde <user42@zip.com.au>
2624
2625 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
2626 docstrings from manual.
2627 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
2628
6e4cd850
MV
26292005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2630
0b5a0521
MV
2631 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
2632 its value.
2633
2634 Implement u64 and s64 uniform numeric vectors with bignums when
2635 scm_t_uint64 and scm_t_int64 are not available.
2636
2637 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2638 scm_array_handle_u64_elements,
2639 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2640 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2641 is not available.
2642 (scm_take_s64vector, scm_array_handle_s64_elements,
2643 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2644 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2645 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2646 scm_t_int64/scm_t_uint64 are not available.
2647 (uvec_mark): New, to mark the bignums.
2648 (alloc_uvec): Initialize bignums.
2649 (uvec_fast_ref): Return bignums directly.
2650 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2651 assert_exact_integer): New.
2652 (uvec_fast_set): Use them to validate the bignums.
2653 (scm_init_srfi_4): Set mark function of smob when needed.
2654 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2655 scm_int64_max.
241d9cea 2656
6e4cd850 2657 Recognize 1.4 -e syntax.
241d9cea 2658
6e4cd850
MV
2659 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2660 (scm_compile_shell_switches): Use them to recognize and convert
2661 1.4 "-e" syntax.
241d9cea 2662
3b698afe
MV
26632005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2664
2665 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2666 deprecated features that once were macros but are now functions
2667 back into macros.
2668
d6dc83a9
MV
26692005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2670
49086691
MV
2671 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2672 * deprecation.c (scm_issue_deprecation_warning,
2673 scm_c_issue_deprecation_warning_fmt): Use it.
2674 (mode): Removed.
2675 (print_summary): New.
2676 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2677 mode.
241d9cea 2678
d6dc83a9 2679 Deprecated SCM_ARRAY* macros.
241d9cea 2680
d6dc83a9
MV
2681 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2682 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2683 version. Changed all uses.
2684 (scm_tc16_array, scm_i_tc16_array,
2685 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2686 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2687 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2688 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2689 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2690 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2691 SCM_ARRAY_V, SCM_I_ARRAY_V,
2692 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2693 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2694 scm_t_array, scm_i_t_array): Likewise.
2695 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2696 Moved from unif.h to unif.c.
2697 (scm_c_array_rank): New.
2698 (scm_array_rank): Reimplement using it.
241d9cea 2699
d6dc83a9
MV
2700 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2701 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2702 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
241d9cea 2703
dc91d8de
MV
27042005-01-11 Marius Vollmer <mvo@zagadka.de>
2705
2706 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2707 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2708 scm_c_generalized_vector_ref and scm_cvref, and
2709 scm_c_generalized_vector_set_x, respectively.
2710 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2711 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2712
2713 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2714 former to latter and made public. Changed all uses.
2715 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2716 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2717 (scm_i_shap2ra): New internal version of scm_shap2ra.
2718 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2719 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2720 (scm_ra_set_contp): Deprecated, changed all uses to
2721 scm_i_ra_set_contp.
2722 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
241d9cea 2723
66d33784
MV
27242005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2725
b06f099d
MV
2726 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2727 Trotts!
2728
5d35ad81
MV
2729 * unif.c (scm_list_to_typed_array): Allow the specification of the
2730 upper bound as well. This is needed for empty arrays.
2731 (l2ra): Give needed number of elements in error message.
2732 (scm_i_print_array): Print length information for arrays that need
2733 it.
2734 (scm_i_read_array): Parse it.
241d9cea 2735
66d33784
MV
2736 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2737 scm_i_object_chars, scm_i_object_length): Brought back from the
2738 dead.
2739
d7d7d401
MV
27402005-01-10 Marius Vollmer <mvo@zagadka.de>
2741
74c58fce
MV
2742 * ramap.c: Replaced single-index uses of scm_array_set_x with
2743 scm_c_generalized_vector_set_x.
2744
d7d7d401
MV
2745 * unif.c (scm_array_rank, scm_array_dimensions,
2746 scm_shared_array_offset, scm_shared_array_increments,
2747 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2748 to simplify code and make it more general.
2749 (scm_shared_array_root): Work with all kinds of arrays, including
2750 naked vectors.
2751 (indices_to_pos): New.
74c58fce
MV
2752 (scm_make_shared_array): Use it instead of scm_aind; use handle
2753 for oldra.
2754
4475d3fe
KR
27552005-01-10 Kevin Ryde <user42@zip.com.au>
2756
2757 * posix.c (scm_mkstemp): Update docstring from manual.
2758
d3ddc95e
KR
2759 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2760
8c8491f5
MV
27612005-01-09 Marius Vollmer <mvo@zagadka.de>
2762
b89ecc6f
MV
2763 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2764 scm_i_uniform_vector_set_proc): New.
2765 (u8ref, u8set, s8ref, s8set, etc): New.
2766 (uvec_reffers, uvec_setters): New.
2767 (uvec_to_list): Use generic scm_array_handle_ref instead of
2768 uvec_fast_ref since scm_array_handle_ref should be faster now.
8cb01d9f
MV
2769 (coerce_to_uvec, scm_c_uniform_vector_ref,
2770 scm_c_uniform_vector_set_x): Likewise.
241d9cea 2771
b89ecc6f
MV
2772 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2773 New.
2774 (scm_t_array_handle): Added ref, set, elements and
2775 writable_elements for fast inline operation of
2776 scm_array_handle_ref and scm_array_handle_set.
2777 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2778 and replaced with inline code that simply calls the ref/set
2779 members of the handle.
2780 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2781 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2782 New.
2783 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2784 and memoize_set.
2785 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2786 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2787 scm_bit_invert_x): Correctly multiply index with increment in the
2788 general case.
241d9cea 2789
8c8491f5
MV
2790 * unif.c (scm_array_handle_set): Correctly execute only one
2791 alternative. D'Oh!
2792 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2793 the array; this covers all cases with much simpler code.
241d9cea 2794
8c8491f5
MV
2795 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2796 as well.
2797
cd5d55c7
MV
27982005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2799
2800 * srfi-4.c (uvec_type): New.
2801 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2802 scm_c_uniform_vector_x): Use it to get concrete type.
2803
2804 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2805 fit the docs.
2806
2807 * unif.c (ra2l): Handle zero rank arrays.
2808 (scm_i_print_array): Print zero rank arrays specially.
2809 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2810 (scm_i_read_array): Allow zero rank arrays.
241d9cea 2811
a4aad74e
MV
28122005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2813
2814 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2815 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2816 and SCM_SET_HASHTAB_BUCKET.
2817
2818 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2819 Removed ref_stack field.
2820 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2821 of a print state. Use them everywhere instead of ref_stack.
241d9cea 2822
3a40d5e1 2823 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
241d9cea 2824
a4aad74e
MV
2825 * srfi-4.c: Include deprecation.h.
2826
2827 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2828 deprecated.c, eq.c
2829 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2830 (scm_vector_elements, scm_vector_writable_elements,
2831 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2832 unif.[hc].
2833 (SCM_SIMPLE_VECTOR_LOC): Removed.
2834 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2835 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2836 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2837 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2838 latter. Changed use in eq.c.
241d9cea 2839
f01fe441
MV
28402005-01-07 Marius Vollmer <mvo@zagadka.de>
2841
2842 Make the uniform vector routines also deal with one dimensional
2843 arrays.
241d9cea 2844
f01fe441
MV
2845 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2846 SCM_SMOB_PREDICATE in this file.
2847 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2848 of the right type.
2849 (scm_is_uniform_vector): Likewise.
2850 (uvec_fast_ref): Made BASE param const.
2851 (uvec_writable_elements, uvec_elements): New.
2852 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2853 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2854 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2855 arrays.
2856 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2857 argument convention.
2858 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2859 checking.
2860 (scm_uniform_vector_length): Use uvec_length.
241d9cea 2861
2aaf5726
MV
28622005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2863
2864 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2865 scm_c_uniform_vector_size): Removed.
2866 (scm_array_handle_uniform_element_size): New.
241d9cea 2867
2aaf5726
MV
2868
2869 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2870 type of POS parameter to be signed, positions can be negative.
2871 (scm_array_handle_release): New, changed all uses of
2872 scm_t_array_handle to properly call it.
2873 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2874 Renamed former to latter, changed all uses.
241d9cea 2875
34ae52fc
MV
28762005-01-05 Marius Vollmer <mvo@zagadka.de>
2877
2878 Updated bitvector routines to also use scm_t_array_handles.
241d9cea 2879
34ae52fc
MV
2880 * unif.h (scm_bitvector_elements,
2881 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2882 deliver offset, length and increment to caller. Changed all uses.
2883 (scm_bitvector_release_elements,
2884 scm_frame_bitvector_release_elements,
2885 scm_bitvector_release_writable_elements,
2886 scm_frame_bitvector_release_writable_elements): Removed.
2887 (scm_array_handle_bit_elements,
2888 scm_array_handle_bit_writable_elements,
2889 scm_array_handle_bit_elements_offset): New.
2890 (scm_make_typed_array): The special value for non-initialized
2891 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2892 was a valid value to fill bitvectors with, so it can't really be
2893 specialed out.
241d9cea 2894
c4cb7628
KR
28952005-01-04 Kevin Ryde <user42@zip.com.au>
2896
2897 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2898 Reported by Bill Schottstaedt.
2899
0356881d
MV
29002005-01-02 Marius Vollmer <mvo@zagadka.de>
2901
2902 * sort.c (quicksort): Added INC parameter for non-contigous
2903 vectors.
2904 (quicksort1): New, for contigous vectors. Both functions are
2905 generated from the same code by including "quicksort.i.c".
2906 (scm_restricted_vector_sort_x): Call one of quicksort and
2907 quicksort1, depending on increment of vector.
2908 (scm_sort): Simply call scm_sort_x on a copy of the list or
2909 vector.
2910 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2911 size_t, added inc parameter.
2912 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2913 so that it doesn't leak.
2914 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2915 list or vector.
241d9cea 2916
0356881d
MV
2917 * ramap.c (scm_array_map_x): Do not try to convert fill value
2918 before filling, any necessary conversion is done while storing.
2919
2920 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2921 doing it inline.
2922
2923 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2924 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2925 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2926
2927 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2928 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2929 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2930 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2931 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2932 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2933 vector elements API or simple vector API, as appropriate. Removed
2934 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2935 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
241d9cea 2936
0356881d
MV
2937 * srfi-4.h, srfi-4.c,
2938 srfi-4.i.c (scm_array_handle_uniform_elements,
2939 scm_array_handle_uniform_writable_elements,
2940 scm_uniform_vector_elements,
2941 scm_uniform_vector_writable_elements):
2942 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2943 scm_t_array_handle, deliver length and increment.
2944 (scm_array_handle_<foo>_elements,
2945 scm_array_handle_<foo>_writable_elements): New.
241d9cea 2946
0356881d
MV
2947 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2948 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
241d9cea 2949
0356881d
MV
2950 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2951 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2952 scm_array_handle_set, scm_array_handle_elements
2953 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2954 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2955 scm_dimensions_to_uniform_array): Deprecated for real.
2956 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2957 snarfing wont allow a mismatch between C and Scheme arglists.
2958 (scm_make_shared_array, scm_enclose_array): Correctly use
2959 scm_c_generalized_vector_length instead of
2960 scm_uniform_vector_length.
241d9cea 2961
0356881d
MV
2962 * validate.h (SCM_VALIDATE_VECTOR,
2963 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2964 of SCM_VECTORP.
2965
2966 * weaks.h, weaks.c: Use new internal weak vector API from
2967 vectors.h.
2968
2969 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2970 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2971 'extra' to being regular sources.
2972 (noinst_HEADERS): Added quicksort.i.c.
2973 * quicksort.i.c: New file.
2974
2975 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2976 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2977 and reimplemented. Replaced all uses with scm_vector_elements,
2978 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2979 appropriate.
2980 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2981 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2982 SCM_SIMPLE_VECTOR_LOC): New.
2983 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2984 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2985 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2986 Removed.
2987 (scm_vector_copy): New.
2988 (scm_vector_elements, scm_vector_writable_elements): Use
2989 scm_t_array_handle, deliver length and increment. Moved to
2990 unif.h. Changed all uses.
2991 (scm_vector_release_elements,
2992 scm_vector_release_writable_elements,
2993 (scm_frame_vector_release_elements,
2994 scm_frame_vector_release_writable_elements): Removed.
2995 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
2996 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
2997 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
2998 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
2999 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
3000 weak vectors.
3001
0336d18b
MV
30022004-12-29 Marius Vollmer <mvo@zagadka.de>
3003
3004 No longer use creators to specify the type of an array. Creators
3005 expose the fact that arrays are wrapped around vectors, but that
3006 might change.
241d9cea 3007
0336d18b
MV
3008 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
3009 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
3010 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
3011 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
3012 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
3013 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
3014 uvec_proc_vars): Removed.
3015 (scm_i_generalized_vector_creator): Removed.
3016 (scm_i_generalized_vector_type): New.
3017
3018 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
3019 scm_make_typed_array, scm_array_type, scm_list_to_array,
3020 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
3021 (scm_array_creator): Removed.
3022 (scm_array_p): Deprecated second PROT argument.
3023 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
3024 Deprecated, reimplemented in terms of scm_make_typed_array and
3025 scm_list_to_typed_array.
3026 (scm_i_proc_make_vector, scm_i_proc_make_string,
3027 scm_i_proc_make_bitvector): Removed.
3028 (type_creator_table, init_type_creator_table, type_to_creator,
3029 make_typed_vector): New.
3030 (scm_i_convert_old_prototype): Removed.
3031 (prototype_to_type): New.
3032 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
3033 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
3034 minor added clarity.
3035 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
3036 instead of scm_make_uve.
3037 (tag_creator_table, scm_i_tag_to_creator): Removed.
3038 (tag_to_type): New.
3039 (scm_i_read_array): Use scm_list_to_typed_array instead of
3040 scm_list_to_uniform_array.
241d9cea 3041
277e8472
MV
30422004-12-27 Marius Vollmer <mvo@zagadka.de>
3043
32b26202
MV
3044 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
3045 (scm_bitvector_writable_elements): New.
3046 (scm_bitvector_release, scm_bitvector_release_elements):
3047 Renamed former to latter. Added explicit call to
3048 scm_remember_upto_here_1.
3049 (scm_frame_bitvector_release,
3050 scm_frame_bitvector_release_elements): Renamed former to latter.
3051 (scm_bitvector_release_writable_elements,
3052 scm_bitvector_release_writable_elements): New.
3053 Changed all uses as required by the changes above.
3054
3055 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
3056 scm_u8vector_elements, etc): Made return value "const".
3057 (scm_uniform_vector_writable_elements,
3058 scm_u8vector_writable_elements, etc): New.
3059 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
3060 Renamed former to latter. Added explicit call to
3061 scm_remember_upto_here_1.
3062 (scm_frame_uniform_vector_release,
3063 scm_frame_uniform_vector_release_elements): Renamed former to latter.
3064 (scm_uniform_vector_release_writable_elements,
3065 scm_frame_uniform_vector_release_writable_elements): New. Takes
3066 crown of longest identifier yet.
3067 Changed all uses as required by the changes above.
241d9cea 3068
277e8472
MV
3069 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
3070 void.
3071 (scm_is_vector, scm_vector_p, scm_vector_length,
3072 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
3073 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
3074 scm_vector_move_left_x, scm_vector_move_right_x,
3075 scm_vector_fill_x): handle one-dimensional arrays.
32b26202
MV
3076 (scm_vector_elements, scm_vector_release_elements,
3077 scm_vector_frame_release_elements, scm_vector_writable_elements,
3078 scm_vector_release_writable_elements,
3079 scm_vector_frame_release_writable_elements): New.
3080 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
3081 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
277e8472
MV
3082
3083 * ramap.c (scm_ramapc, scm_raeql): Use
3084 scm_c_generalized_vector_length instead of
3085 scm_uniform_vector_length.
3086 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
3087 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
241d9cea 3088
49c51610
MV
30892004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3090
3091 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
3092 member for relocating debug frames.
3093 (scm_make_continuation): Set it.
3094
3095 * stacks.c (read_frame, read_frames, scm_make_stack,
3096 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
3097 of continuations instead of calculating the offset ourselves.
3098 Relocate 'vect' member of scm_t_debug_frame.
241d9cea 3099
3b2ee265
KR
31002004-12-16 Kevin Ryde <user42@zip.com.au>
3101
3102 * ramap.c (scm_array_map_x): Check for at least one source argument.
3103
e120686a
KR
31042004-12-14 Kevin Ryde <user42@zip.com.au>
3105
3106 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
3107 the C code so for the final call to the predicate procedure is a tail
3108 call, per SRFI-13 spec.
3109
680b5237
KR
31102004-12-10 Kevin Ryde <user42@zip.com.au>
3111
3112 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
3113 recent revision to the reference manual.
3114
3115 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
3116 with "%", C99 says it's well-defined.
3117
3118 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
3119 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
3120 bother trying to fit scm_from_ulong, not really worth the trouble if
3121 addresses are more than 4 bytes usually.
3122
446d320c
KR
31232004-11-30 Kevin Ryde <user42@zip.com.au>
3124
3125 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
3126 arm32. Reported by Greg Troxel.
3127
f2654760
MV
31282004-11-14 mvo <mvo@zagadka.de>
3129
3130 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
3131
3132 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
3133
d550e35f
MV
31342004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3135
3136 Enclosed arrays are now their own smob. This has been done to
3137 make the code more explicit about them and to prepare for the time
f2654760
MV
3138 when generalized vectors include arbitrary one-dimensional
3139 arrays. (Uptonow, enclosed arrays have been recognized by their
3140 use of an array as their storage 'vector'. When all generalized
3141 vectors are allowed as storage, including one-dimensional arrays,
3142 this will no longer work.)
241d9cea 3143
d550e35f
MV
3144 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
3145 New.
3146 (exactly_one_third, singp): Removed.
3147 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
3148 scm_shared_array_offset, scm_shared_array_increments): Handle
3149 enclosed arrays explicitely.
3150 (scm_array_rank): Likewise. Also, do not return zero for
3151 non-arrays, signal an error instead since arrays with rank zero do
3152 exist.
3153 (scm_i_make_ra): New, for specifying the tag of the new array.
3154 (scm_make_enclosed_array): Use it.
3155 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
3156 (scm_make_shared_array): Use scm_c_generalized_vector_length
3157 instead of scm_uniform_vector_length.
3158 (scm_array_in_bounds_p): Rewritten to be much cleaner.
3159 (scm_i_cvref): New, doing the job of scm_cvref.
3160 (scm_cvref): Use scm_i_cvref.
3161 (scm_array_ref): Do not accept non-arrays when no indices are
3162 given. Use scm_i_cvref to do the actual access.
3163 ("uniform-array-set1"): Do not register.
3164 (scm_array_set_x, scm_uniform_array_read_x,
3165 scm_uniform_array_write): Handle enclosed arrays explicitly.
3166 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
3167 handle enclosed arrays.
3168 (scm_array_to_list): Handle enclosed arrays explicitly.
3169 (rapr1): Removed.
3170 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
3171 enclosed arrays.
3172 (scm_i_print_enclosed_array): New.
3173 (tag_proto_table, tag_creator_table): Renamed former to latter.
3174 Added "a" and "b" for strings and bitvectors, resp.
3175 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
3176 latter. Tag "a" is in the table now, no need to handle it as a
3177 legacy tag.
3178 (scm_raprin1): Just call scm_iprin1.
3179 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
3180 explicitly.
3181 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
3182 Use scm_i_print_array as printer for scm_tc16_array.
241d9cea 3183
2ed34885
MV
31842004-11-10 Marius Vollmer <mvo@zagadka.de>
3185
823086c1
MV
3186 * ramap.c (cind): Changed second arg to be pointer to long instead
3187 of uniform vector.
3188 (scm_ramapc): Allocate index vector with scm_malloc and not as
d550e35f 3189 uniform vector. Wrap it in a frame so that it gets properly freed.
823086c1
MV
3190 (scm_array_index_map_x): Likewise.
3191
3192 * unif.c: Changed all uses of scm_array_prototype to
3193 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
3194 prototype is known.
3195 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
3196 in terms of scm_uniform_vector_read_x and
3197 scm_uniform_vector_write, respectively. Strings and
3198 bitvector support has been dropped.
241d9cea 3199
2ed34885
MV
3200 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
3201 needed files directly. Include config.h, <unistd.h> and <io.h>
3202 when available.
3203 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
3204
2c72f253
MV
32052004-11-09 Marius Vollmer <mvo@zagadka.de>
3206
3207 * gh_data.c (gh_uniform_vector_length): Properly use
3208 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
3209
3cc0a296
MV
32102004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3211
3212 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
3213 New.
3214 (scm_i_uniform_vector_creator): Removed.
3215 (scm_i_generalized_vector_creator): New.
3216 (scm_uniform_vector_length, scm_uniform_element_size): Do not
3217 handle generalized vectors, only uniform numeric vectors.
3218 (alloc_uvec): Do length check here...
3219 (make_uvec): ...but not here.
3220 (coerce_to_uvec): Use new generalized vector functions to handle
3221 all kinds of vectors in one go.
241d9cea 3222
3cc0a296
MV
3223 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
3224 remaining scm_tc7_unused tags to get a neatly ordered list.
3225
3226 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
3227 longer handle scm_tc7_bvect bitvectors.
3228
3229 * ramap.c: Use the new generalized vector functions to handle all
3230 vector like things.
3231
3232 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
3233 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
3234 scm_generalized_vector_length, scm_generalized_vector_ref,
3235 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
3236 scm_is_generalized_vector, scm_c_generalized_vector_length,
3237 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
3238 New.
241d9cea 3239
3cc0a296
MV
3240 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
3241 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
3242 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
3243 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
3244 scm_c_bitvector_length, scm_c_bitvector_ref,
3245 scm_c_bitvector_set_x, scm_bitvector_elements,
3246 scm_bitvector_release, scm_frame_bitvector_release,
3247 scm_tc16_bitvector, bitvector_free, bitvector_print,
3248 bitvector_equalp, count_ones, find_first_one): New.
3249 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
3250 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
3251 using the new C API for bitvectors and maybe count_ones or
3252 find_first_one, as appropriate.
3253 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
3254 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
3255 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
3256 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
3257 new functions from above.
3258 (scm_i_proc_make_vector, scm_i_proc_make_string,
3259 scm_i_proc_make_bitvector): Made non-static for use in
3260 scm_i_generalized_vector_creator.
3261 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
3262 (scm_make_uve): Validate that the created object is a generalized
3263 vector.
3264 (scm_i_legacy_tag): Removed.
3265 (scm_i_print_array): Do it here.
3266 (scm_raprin1): Only print enclosed arrays.
3267
3268 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
3269
c24d026b
MV
32702004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3271
1f2328fe
MV
3272 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
3273 added portability.
3274
3275 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
3276 for "space". Thanks to Bruce Korb!
3277
c24d026b
MV
3278 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
3279 only after dest has been set. Thanks to Hyper Division!
3280
3281 * gh_data.c (gh_uniform_vector_length): Use
3282 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
3283
d4ea47c8
MV
32842004-11-03 Marius Vollmer <mvo@zagadka.de>
3285
3286 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
3287 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
3288 SCM_SET_UVECTOR_LENGTH): Removed.
3289
236288e2
MV
32902004-11-02 Marius Vollmer <mvo@zagadka.de>
3291
9a5fa6e9 3292 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
236288e2
MV
3293 Thanks!
3294
3295 * backtrace.c (scm_display_backtrace_with_highlights): Join the
3296 first and the second line of the SCM_DEFINE macro call, since old
3297 preprocessors cannot handle definitions that are split into two
3298 lines.
3299
3300 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
3301 declarations.
3302
3303 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
3304 scm_t_uint32 to fix the mismatch between the function declaration
3305 and definition.
3306
3307 * sort.c (quicksort): Don't use C99 variable declarations.
3308
3309 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
3310 SCM_BOOL_F if no type matches.
3311
3312 * threads.c (thread_print): Cast a pointer to size_t when printing
3313 with scm_uintprint.
3314
3315 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
3316 defined.
3317 (scm_array_prototype): Deprecated.
3318
f738b51d
MV
33192004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3320
5d1015ec
MV
3321 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
3322 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
3323 more efficient access to the u32vector.
241d9cea 3324
034486df
MV
3325 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
3326 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
3327 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
3328
3329 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
3330 instead of the old-style dvectors.
3331
3332 * gh_data.c: Use new-style uniform arrays in place of old-style
3333 ones.
3334
3335 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
3336 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
3337
3338 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
3339 instead of old-sytle uvectors.
241d9cea 3340
034486df
MV
3341 * convert.c, convert.i.c: Rewritten completely, using
3342 scm_any_to_u8vector, etc and other new-style uniform vector
3343 functions.
3344
3345 * random.c (scm_random_solid_sphere_x,
3346 scm_random_hollow_sphere_x): Do not validate vector argument, this
3347 is already done elsewhere.
3348
3349 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
3350 scm_any_to_u8vector, etc): New.
3351 (scm_uniform_element_size, scm_uniform_vector_length): Do no
3352 longer handle old-style uniform vectors.
3353
f738b51d
MV
3354 * read.c (scm_lreadr): Bugfix: include the last bit in the
3355 bit vector.
3356
5e9c05a1
MV
33572004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3358
327114a2
MV
3359 * unif.h, unif.c (scm_array_creator): New.
3360 (scm_i_get_old_prototype): New.
3361 (scm_array_prototype): use it to return old-style prototype, never
3362 return creators.
3363 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
3364 arg of SCM_UNDEFINED. The latter is wrong.
241d9cea 3365
5e9c05a1
MV
3366 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
3367 (make_uve): Removed.
3368 (scm_i_proc_make_vector, scm_i_proc_make_string,
3369 scm_i_proc_make_u1vector): New.
3370 (scm_init_unif): Initialize them.
3371 (scm_i_convert_old_prototype): New.
3372 (scm_make_uve): Use it to get the creator procedure. Removed all
3373 old code that created old-style uniform vectors.
3374 (scm_array_p): Handle generic vectors.
3375 (scm_dimensions_to_uniform_array): Do not fill new array with
3376 prototype when that is a procedure.
3377 (scm_list_to_uniform_array): Also accept a list of lower bounds as
3378 the NDIM argument.
3379 (scm_i_print_array): Print rank for shared or non-zero-origin
3380 vectors.
3381 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
3382 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
3383 which I do not understand yet.
3384 (scm_array_prototype): Explicitely handle generic vectors.
327114a2 3385
5e9c05a1
MV
3386 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
3387 (iflo2str): Use icmplx2str for complex numbers.
3388
3389 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
3390 scm_i_uniform_vector_prototype): Removed.
3391 (scm_i_uniform_vector_creator): New.
3392 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
3393 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
3394 Updated all tables and generic functions to support them.
3395 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
3396 (scm_init_srfi_4): Initialize them.
241d9cea 3397
5e9c05a1
MV
3398 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
3399 sizeof(CTYPE) as explained in the comment.
3400
3401 * read.c (scm_lreadr): Call scm_i_read_array for all characters
50472546 3402 following '#' that can start an array. Explicitely disambiguate
5e9c05a1
MV
3403 'i' and 'e' between introducing numbers and uniform vectors. Do
3404 not call scm_i_read_homogenous_vector, since that is also handled
3405 by scm_i_read_array now.
3406
f984af07
MV
34072004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3408
3409 First cut at integrating uniform vectors from srfi-4 with the rest
3410 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
3411 vector. The plan is to gradually replace one type after the other
3412 until none is left and then to consider general cleanups and
3413 optimizations.
241d9cea 3414
f984af07
MV
3415 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
3416
3417 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
3418 scm_uniform_vector_ref, scm_uniform_vector_set_x,
3419 scm_uniform_vector_to_list, scm_is_uniform_vector,
3420 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
3421 scm_uniform_vector_elements, scm_uniform_vector_element_size,
3422 scm_uniform_vector_release): New.
3423 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
3424 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
3425 from unif.h, unif.c and extended to handle both the old and new
3426 uniform vectors.
3427
3428 * tags.h (scm_tc7_byvect): Commented out.
3429
3430 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
3431 the former to the latter.
3432 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
3433 srfi-4.h, srfi-4.c.
3434 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
3435 (scm_array_p, scm_array_rank, scm_array_dimensions,
3436 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
3437 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
3438 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
3439 vectors. Removed code for scm_tc7_byvect.
3440 (scm_dimensions_to_uniform_array): Fill array with 0 when
3441 prototype is #\nul.
3442 (scm_i_print_array_dimension, scm_i_legacy_tag,
3443 scm_i_print_array): New.
3444 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
3445 for scm_tc7_byvect.
3446
3447 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
3448 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
3449 uniform vectors. Removed code for scm_tc7_byvect
3450
3451 * print.c (iprin1): Removed code for scm_tc7_byvect.
3452 * objects.c (scm_class_of): Likewise.
3453 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
3454 * gc-card.c (scm_i_sweep_card): Likewise.
3455 * evalext.c (scm_self_evaluating_p): Likewise.
3456 * eq.c (scm_equal_p): Likewise.
3457
3458 * gh_data.c (gh_chars2byvect): Reimplemented with
3459 scm_make_s8vector.
3460 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
3461
3462 * srfi-4.c (take_uvec): New.
3463 (alloc_uvec): Use it.
3464 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
3465
3466 * random.c (vector_scale, vector_scale_x): Renamed former to the
3467 latter, since it modifies its argument.
3468 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
3469 Do not use scm_universal_vector_length for non-uniform vectors.
3470 Use scm_f64vector_elements to access innards of uniform vectors.
3471
3472 * convert.i.c: Convert srfi-4 style uniform vectors when
3473 requested.
3474 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
3475 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
241d9cea 3476
79d52182
MV
34772004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3478
3479 * numbers.h, numbers.c (scm_i_print_double): New.
3480
3481 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
3482 ../srfi/ but heavily modified.
3483 * Makefile.am: Add them in all the right places.
3484 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
3485 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
3486 '#u', and '#s'.
3487
3488 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
3489 and made non-static. Changed all uses.
3490
6191ccec
MV
34912004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3492
e64e80b0
MV
3493 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
3494 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
3495 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
3496 scm_uintprint to print unsigned integers, raw heap words, and
3497 adresses, using a cast to scm_t_bits to turn pointers into
3498 integers.
3499
3500 * unif.c: Include "libguile/print.h".
3501
c90ac3a8
MV
3502 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
3503 scm_t_intmax values.
3504 (scm_uint2str): New, for scm_t_uintmax.
3505 (scm_iint2str): Argument type changed to scm_t_intmax,
3506 reimplemented in terms of scm_uint2str.
241d9cea 3507
c90ac3a8
MV
3508 * print.c, print.h (scm_uintprint): New, for printing
3509 scm_t_uintmax values.
3510 (scm_intprint): Argument type changed to scm_t_intmax.
241d9cea 3511
77c2594f
MV
3512 * sort.c (quicksort, scm_merge, scm_merge_list_x,
3513 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
3514 strategic places so that the loops can be interrupted.
3515
6191ccec
MV
3516 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
3517 "-I$(top_srcdir)/libguile-ltdl".
3518 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
3519 "../libguile-ltdl/libguile-ltdl.a".
241d9cea 3520
6191ccec
MV
3521 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
3522 all references to scm_lt_* with just lt_*. Include <ltdl.h>
3523 instead of <libguile-ltdl.h>.
3524
77600f3e
MV
35252004-10-20 Marius Vollmer <mvo@zagadka.de>
3526
3527 * sort.c (quicksort): Copy pivot out of the array while
3528 constructing the partitions; it could get overwritten otherwise.
3529 Because of the ultimate insertion sort, this bug did not cause
3530 quicksort to fail, it just put all the burdon on the insertion
3531 sort and was thus very slow. Thanks to Rolan Orre for reporting
3532 the slowness!
241d9cea 3533
5000379b
MV
35342004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3535
192cd792
MV
3536 * numbers.c (scm_i_range_error): New.
3537 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
241d9cea 3538 scm_out_of_range.
192cd792
MV
3539
3540 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
6191ccec 3541 endpos. State inclusiveness/exclusiveness of bounds in docstring.
192cd792
MV
3542
3543 * unif.c (scm_array_p): When no prototype is given, explicitely
3544 test for allowable types, do not simply return true. Thanks to
3545 Roland Orre for reporting this!
3546
5000379b
MV
3547 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
3548
3549 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
3550 segment to scm_max_segment_size.
3551
497eb0b7
HWN
35522004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
3553
1367aa5e
HWN
3554 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
3555
497eb0b7
HWN
3556 * inline.h (scm_double_cell): abort if GC running.
3557 (scm_cell): idem.
3558
aef0bdb4
MV
35592004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3560
3561 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
3562 pos == 0.
3563
3564 Keywords no longer store a 'dash symbol'. Instead, they store a
3565 symbol with their real name.
241d9cea 3566
aef0bdb4
MV
3567 * keywords.h, keywords.c, deprecated.h, deprecated.c
3568 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
3569 terms of scm_is_keyword and scm_keyword_dash_symbol.
241d9cea 3570
aef0bdb4
MV
3571 * keywords.h, keywords.c, discouraged.h, discouraged.c
3572 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
3573 scm_c_make_keyword): Discouraged.
3574
3575 * keywords.h, keywords.c (scm_symbol_to_keyword,
3576 scm_keyword_to_symbol): Implemented in C.
3577 (scm_is_keyword, scm_from_locale_keyword,
3578 scm_from_locale_keywordn): New.
3579
241d9cea 3580 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
aef0bdb4
MV
3581
3582 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
3583 scm_from_locale_keyword instead of scm_c_make_keyword.
3584
3585 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
3586 better error message.
3587
3588 * deprecated.c: Include discouraged.h and keywords.h.
3589
3590 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
3591 reading '#:' or ':'. See NEWS for consequences.
3592
818deb11
MV
35932004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3594
43c25626
MV
3595 * read.c (scm_lreadr): Revert change from 2004-09-22: string
3596 literals are now read-write again (until SCM_STRING_CHARS is
3597 removed).
3598
3599 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
3600 strings with an error message that blames SCM_STRING_CHARS.
3601
3602 * options.c (change_option_setting): Use scm_car instead of
3603 explicit type check plus SCM_CAR.
3604
3605 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
3606 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
3607 (scm_iprin1): Use them instead of the previoulsy hardcoded
3608 strings.
3609 (scm_init_print): Initialize them.
3610
3611 * backtrace.c (display_frame_expr): Do not remove control
3612 characters from the final string. Print it directly using
3613 scm_display.
3614
818deb11
MV
3615 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
3616 Thanks to Roland Orre!
3617
d748089e
KR
36182004-09-29 Kevin Ryde <user42@zip.com.au>
3619
3620 * regex-posix.c (scm_regexp_exec): Correction to last change, should
3621 be whole original string in match struct, not offsetted substring.
3622
0ff7e3ff
HWN
36232004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
3624
3625 * gc.c (scm_gc_unprotect_object): abort if called during GC.
3626
ad7de4b8
MV
36272004-09-24 Marius Vollmer <mvo@zagadka.de>
3628
2edf319f
MV
3629 * Makefile.am (EXTRA_DIST): Added gettext.h.
3630
d180337b
MV
3631 * smob.c, smob.h (scm_assert_smob_type): New.
3632
05d7cf89 3633 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
ad7de4b8
MV
3634 Include GUILE_CFLAGS.
3635 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3636 now.
3637 (libpath.h): Put GUILE_CFLAGS in the build-info.
241d9cea 3638
c9fedf8a
MV
36392004-09-23 Marius Vollmer <mvo@zagadka.de>
3640
3641 * print.h (scm_print_state): Added highlight_objects.
3642 * print.c (make_print_state, scm_free_print_state): Initialize it
3643 to SCM_EOL.
3644 (scm_iprin1): Wrap output in '{...}' when object is contained in
3645 highlight_objects.
3646
3647 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3648 scm_backtrace_with_highlights): New. Set highlight_objects of
3649 printstate.
241d9cea 3650
c9fedf8a
MV
3651 * error.c (scm_error_scm): Document new meaning of data/rest
3652 argument for out-of-range and wrong-type-arg errors.
3653 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3654 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3655 exception so that it gets highlighted in the backtrace.
3656 Don't talk about "argument" when not giving a position.
241d9cea 3657
c9fedf8a
MV
3658 * throw.c (handler_message): The rest argument is the fourth
3659 argument, not everything after the third. Call
3660 scm_display_backtrace_with_highlights, passing the rest argument
3661 when appropriate.
3662
d5ac9b2a
MV
36632004-09-22 Marius Vollmer <mvo@zagadka.de>
3664
3665 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3666 <bruno@clisp.org>:
3667
3668 * i18n.c: Handle --disable-nls (thanks Bruno).
3669
3670 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3671 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3672
3673 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3674 LC categories.
05d7cf89 3675 * posix.c (scm_setlocale): Use it.
d5ac9b2a
MV
3676
3677 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3678 scm_bind_textdomain_codeset): Make wrappers similar to C function
3679 they wrap.
3680
3681 * i18n.h: New file.
3682 * i18n.c: New file.
3683 * gettext.h: New file, taken from GNU gettext.
3684 * init.c: Include libguile/i18n.h.
3685 (scm_init_guile_1): Add call to scm_init_i18n().
3686 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3687 (DOT_X_FILES): Add i18n.x.
3688 (DOT_DOC_FILES): Add i18n.doc.
3689 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3690 (modinclude_HEADERS): Add i18n.h.
3691
d2e53ed6
MV
36922004-09-22 Marius Vollmer <mvo@zagadka.de>
3693
2cdfe016
MV
3694 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3695
d2e53ed6
MV
3696 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3697 discouraged.h. Replaced all uses with scm_is_pair.
3698 (SCM_I_CONSP): New name for SCM_CONSP.
3699
3700 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3701 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3702 scm_cadr, etc): New.
3703 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3704 uses with scm_is_null.
5dd82006 3705
d2e53ed6
MV
3706 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3707 instead of explicit code.
5dd82006 3708
5dfdf243
MV
37092004-09-22 Marius Vollmer <mvo@zagadka.de>
3710
b50c53e5
MV
3711 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3712 Reworded logic a bit so that #f is returned immediately when s1 is
3713 too short to contain s2.
3714
5dfdf243 3715 * regex-posix.c (scm_regexp_exec): Convert string to
05d7cf89 3716 zero-terminated locale string before matching against it.
5dfdf243
MV
3717
3718 * strings.h, strings.c (scm_substring_read_only,
3719 scm_c_substring_read_only, scm_i_substring_read_only): New.
3720 (RO_STRING_TAG, IS_RO_STRING): New.
241d9cea
NJ
3721 (scm_i_string_writable_chars): Bail on read-only strings.
3722
5dfdf243
MV
3723 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3724 literals, thus making them read-only as specified by R5RS.
3725
22ab5ba3
MV
37262004-09-22 Marius Vollmer <mvo@zagadka.de>
3727
3728 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3729 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3730
2663421c
MV
37312004-09-21 Marius Vollmer <mvo@zagadka.de>
3732
0d83cb90
MV
3733 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3734 numbers.c.
3735 (scm_to_mpz, scm_from_mpz): New.
9a5fa6e9 3736 Thanks to Andreas Vögele!
241d9cea 3737
2663421c
MV
3738 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3739 just on a line of its own.
3740
3741 * srfi-13.c (scm_string_any, scm_string_every,
3742 scm_string_tabulate, string_upcase_x, string_down_case_x,
3743 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3744 size_t instead of int for indices into strings. Make sure that no
9a5fa6e9 3745 over- or underflow occurs. Thanks to Andreas Vögele!
2663421c
MV
3746 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3747 indices, which can also be negative.
241d9cea 3748
b00b73f9
MV
37492004-09-20 Marius Vollmer <mvo@zagadka.de>
3750
3751 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3752
3753 * threads.c (scm_threads_mark_stacks): Call
3754 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3755 only used once.
3756
adba74f3
HWN
37572004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3758
05d7cf89 3759 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
adba74f3
HWN
3760 Bugfix: when subtracting unsigned values, make sure that result
3761 does not wrap.
3762
f6de32c8
KR
37632004-09-09 Kevin Ryde <user42@zip.com.au>
3764
3765 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3766 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
9a5fa6e9 3767 by Andreas Vögele.
f6de32c8 3768
e548be5f
MV
37692004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3770
eb8d0af1
MV
3771 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3772
e548be5f
MV
3773 * eq.c (real_eqv): Pretend that all NaNs are equal.
3774
3775 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3776
e7acba81
MV
37772004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3778
874fbad1
MV
3779 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3780 use size_t for some locals instead of int.
3781
e7acba81
MV
3782 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3783 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3784 (skip_scsh_block_comment): Use scm_input_error instead of
3785 scm_misc_error in case of EOF.
241d9cea 3786
5de12658
KR
37872004-09-07 Kevin Ryde <user42@zip.com.au>
3788
3789 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
3790 Bug report by Bill Schottstaedt.
3791
3792 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3793 column.
3794 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3795
3796 * posix.c (scm_access): Update docstring per manual.
3797
3798 * posix.c (scm_nice): Correction to error detection. Reported by
3799 Matthias Koeppe.
3800
3801 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3802 throw error before unlocking mutex with SCM_ALLOW_INTS.
3803
e227addf
KR
38042004-09-06 Kevin Ryde <user42@zip.com.au>
3805
3806 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3807 available. This also gets around CLK_TCK being absent when
3808 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3809
edea856c
SJ
38102004-09-03 Stefan Jahn <stefan@lkcc.org>
3811
3812 * threads.c (scm_threads_mark_stacks): Fixed local variable
3813 definitions.
3814
e7acba81 3815 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
3816 local variable definitions.
3817
3818 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3819 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
3820 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3821 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
3822 scm_makfrom0str().
3823
874fbad1 3824 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
3825 part.
3826
3827 * numbers.c (scm_init_numbers): Removed check_sanity() call
3828 inside GUILE_DEBUG. The function has been removed somewhen...
3829
3830 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3831 MinGW32 because it conflicts with its pthread headers.
3832
d9eb2d67
MV
38332004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3834
3835 * strings.c (SCM_STRINGP): Accept all strings.
3836 (SCM_STRING_CHARS): Reject shared substrings here.
3837
3838 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3839 the Copyright years.
3840
c495c342
KR
38412004-08-27 Kevin Ryde <user42@zip.com.au>
3842
3843 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3844 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3845 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3846
57aa5515
MV
38472004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3848
3849 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3850 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3851 scm_i_symbol_is_interned, scm_i_mem2symbol,
3852 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3853
ce25760f
MV
38542004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3855
19ff6ffc
MV
3856 * srfi-13.c: First cut at thread-safeness and proper use of
3857 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3858 been inserted. Made sure that no internal string pointer is used
3859 across a SCM_TICK or a possible GC.
241d9cea 3860
ce25760f
MV
3861 * script.c (scm_compile_shell_switches): Use
3862 scm_from_locale_string instead of scm_makfrom0str.
3863
3864 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3865 always been.
3866
c5080b51
MV
38672004-08-25 Marius Vollmer <mvo@zagadka.de>
3868
3869 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3870 strop.c.
3871
3872 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3873 * strop.h, strop.c: Removed, they are now empty.
3874 * Makefile.am: Updated for new and removed files.
241d9cea 3875
c5080b51
MV
3876 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3877 to scm_string_to_symbol.
3878
3879 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3880 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3881 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3882 charset instead of libc functions.
3883
3884 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3885 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3886 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3887 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3888 instead of explicit code.
241d9cea 3889
c5080b51
MV
3890 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3891 "srfi-13.h" instead of "strop.h".
3892
3893 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3894 scm_init_srfi_14. Do not call scm_init_strop.
3895
4b0d27f2
MV
38962004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3897
3898 * numbers.c (scm_inf_p): Synced docstring back from manual.
3899
3ece39d6
MV
39002004-08-22 Marius Vollmer <mvo@zagadka.de>
3901
3902 * strings.c (get_str_buf_start): New helper function.
3903 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3904 scm_i_string_char, scm_i_string_writable_chars): Use it.
3905 (scm_i_substring_copy): Make START argument optional for C
3906 callers, for upcoming SRFI-13 integration.
241d9cea 3907
3ece39d6
MV
39082004-08-21 Marius Vollmer <mvo@zagadka.de>
3909
3910 From Richard Todd, Thanks!
241d9cea 3911
3ece39d6
MV
3912 * script.c (scm_compile_shell_switches): added '-L' switch to add
3913 to the %load-path.
241d9cea 3914
5fa0939c
DH
39152004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3916
3917 * eval.c (unmemoize_exprs): When dropping internal body markers
3918 from the output during unmemoization, also drop those that are not
3919 immediately at the beginning of a body.
3920
2146fdeb
MV
39212004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3922
c1f54b3d
MV
3923 * eval.c (scm_lookupcar1): Report "Variable used before given a
3924 value" insetad of an "Unbound" one for variables that are found
3925 but still contain SCM_UNDEFINED.
2146fdeb
MV
3926
3927 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3928 expects a null-terminated string in the locale encoding, but
3929 scm_i_string_writable_chars doesn't give that. Fixed by letting
3930 mkstemp modify a locale version of the tmpl argument and copying
3931 the result back into tmpl.
241d9cea 3932
2146fdeb
MV
3933 * strop.c (scm_substring_move_x): Store into str2, not str1.
3934
d4f76919
KR
39352004-08-20 Kevin Ryde <user42@zip.com.au>
3936
3937 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3938 to modify the input string.
3939
b5247a6b
MV
39402004-08-19 Marius Vollmer <mvo@zagadka.de>
3941
3942 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3943 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3944 scm_c_symbol_length.
3945
f26b9395
MV
39462004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3947
3948 New string implementation, with copy-on-write strings and
3949 mutation-sharing substrings, and a new internal string API.
3950 Symbols can now share memory with strings.
241d9cea 3951
f26b9395
MV
3952 * tags.h (scm_tc7_stringbuf): New tag.
3953
3954 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3955 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3956 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3957 uses.
3958 (scm_i_make_string, scm_c_make_string): New, to replace
3959 scm_allocate_string. Updated all uses.
3960 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3961 SCM_STRING_LENGTH): Deprecated.
3962 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3963 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3964 Discouraged. Replaced all uses with scm_from_locale_string or
3965 similar, as appropriate.
3966 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3967 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3968 scm_substring_shared, scm_substring_copy): New.
3969
3970 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3971 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3972 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3973 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3974 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3975 Deprecated.
3976 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3977 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3978 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3979 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3980 Updated all uses.
3981 (scm_gensym): Generate only the number suffix in the buffer, just
3982 string-append the prefix.
3983
3984 * error.c (scm_memory_error): Do not try to throw, just abort.
3985 Throwing will not work anyway.
3986
3987 * gh.h, gh-data.c (gh_set_substr): Made src const.
3988
3989 * ports.c (scm_i_mode_bits_n): New, for counted strings.
3990 (scm_mode_bits): Use it.
3991 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
3992 a vector normally and fill that instead of consing a list with a
3993 blocked GC.
3994
3995 * read.c (scm_i_casei_streq): New, for counted strings.
3996
3997 * threads.c (gc_section_count): Removed, thread-sleeping can not
3998 be nested.
3999 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
4000 admin mutex so that we can be put to sleep by other threads while
4001 blocking on that mutex. Lock all the heap mutex of all threads,
4002 including ourselves.
4003 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
4004 call scm_i_enter_guile.
4005 (scm_thread_mark_stacks): Expect all threads to be suspended.
241d9cea 4006
f26b9395
MV
4007 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
4008 scm_gc_mallocated, for now.
4009 (scm_init_storage): Initialize it.
4010 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
241d9cea 4011
f26b9395
MV
4012 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
4013 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
4014 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
4015 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
4016
cd505b38
MV
4017 * strop.c (scm_string_copy): Use scm_c_substring to get a
4018 copy-on-write string.
4019
8a807b26
KR
40202004-08-18 Kevin Ryde <user42@zip.com.au>
4021
4022 * arbiters.c (FETCH_STORE): New macro.
4023 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
4024 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
4025 scm_try_arbiter and scm_release_arbiter.
4026 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
4027 for speed on i386, otherwise using mutex.
4028
4029 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
4030 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
4031 exact and inexact is #f.)
4032
4033 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
4034 to get thread safety of scm_ttyname.
4035
4036 * ports.c (ttyname): Remove prototype, unused.
4037
d6cd4c36 4038 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 4039 Reported by Michael Tuexen.
d6cd4c36 4040
fa0c0a4b
MV
40412004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4042
4043 * load.c (scm_init_load_path): Do not pass NULL to
4044 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
4045 not set. Thanks to Bill Schottstaedt.
4046
70f7ee41
MV
40472004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4048
4049 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
4050 locale strings instead of accessing their internals.
4051 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
4052 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
4053 SCM_STRING_CHARS and SCM_STRING_LENGTH.
241d9cea 4054
70f7ee41
MV
4055 * simpos.c (scm_system): Convert SCM strings to locale strings
4056 instead of accessing their internals.
4057
4058 * script.c (scm_compile_shell_switches): Convert version to locale
4059 string before printing it.
4060
4061 * rdelim.c (scm_read_delimited_x): Avoid
4062 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
4063 of scm_from_long for the returned number of read characters.
4064
4065 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
4066 scm_i_mode_bits to avoid accessing internals of SCM string from C.
4067
4068 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
4069 Use them instead of SCM_SYSCALL when one or two strings need to be
4070 converted into locale strings.
4071 (my_rename): New, gathers platform dependent code for renaming.
4072 (scm_rename): Use it.
4073 (scm_readlink, scm_copy_file): Convert SCM strings to locale
4074 strings instead of accessing their internals.
4075 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
4076 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
4077 SCM_STRING_LENGTH.
241d9cea 4078
70f7ee41
MV
4079 * extensions.c (load_extension): Convert lib and init to locale
4080 strings instead of accessing the internals directly.
4081 (scm_c_load_extension): Use scm_from_locale_string instead of
4082 scm_makfrom0str.
241d9cea 4083
70f7ee41
MV
4084 * fports.h, fports.c (scm_i_fdes_to_port): New, like
4085 scm_fdes_to_port, but take mode bits directly instead of as a C
4086 string.
4087 (scm_i_fdes_to_port): Implement using above.
4088 (scm_open_file): Use scm_i_fdes_to_port together with
4089 scm_i_mode_bits to avoid accessing internals of SCM string from C.
4090 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
4091 with scm_i_mode_bits to avoid accessing internals of SCM string
4092 from C.
4093
4094 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
4095 SCM string as argument.
4096
4097 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
4098 bits directly instead of C string.
4099 (scm_void_port): Implement using above.
4100 (scm_sys_make_void_port): Use scm_i_void_port together with
4101 scm_i_mode_bits to avoid accessing internals of SCM string.
241d9cea 4102
70f7ee41
MV
4103 * strings.h, strings.c (scm_i_get_substring_spec): New.
4104
4105 * socket.c, rw.c, deprecated.h, validate.h
4106 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
4107 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
4108 scm_to_locale_string, etc.
4109 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
4110 above, plus scm_i_get_substring_spec.
241d9cea 4111
70f7ee41
MV
4112 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
4113 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
4114 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
4115 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
4116 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
4117 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
4118 with more explicit scm_remember_upto_here_1, etc, or introduced
4119 them in the first place.
4120
4121 * posix.c (WITH_STRING): New helper macro. Use it where one
4122 locale string is needed for a short piece of code.
4123 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
4124 when one locale string is needed.
4125 (scm_mkstemp): Convert tmpl to a locale string.
4126 (scm_putenv): Rewritten to use only C strings.
4127 (scm_setlocale, scm_crpt): Convert argument strings to locale
4128 strings.
241d9cea 4129
70f7ee41
MV
41302004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4131
4132 * load.c (scm_primitive_load_path): Do not check for absolute
4133 filenames when scm_sys_search_load_path returns false, which will
4134 return absolute filenames unchanged.
4135
bb26cc2d
MV
41362004-08-11 Marius Vollmer <mvo@zagadka.de>
4137
4138 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
4139 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
4140 of an alist. Thanks to Matthias Koeppe!
4141
02573e4c
MV
41422004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4143
4144 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
4145 Moved from string.h to deprecated.h.
4146
4147 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
4148
f9751e86 4149 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
4150 SCM_I_MAKE_STRING_TAG, changed all uses.
4151 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
4152 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
4153 respectively. For a short time, the old names are still there as
4154 aliases. Not all uses have been changed yet, but the ones in
4155 strings.c have.
4156 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
4157 SCM_T_BITS_MAX.
4158 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
4159 scm_take_locale_string, scm_take_locale_stringn,
4160 scm_to_locale_string, scm_to_locale_stringn,
4161 scm_to_locale_stringbuf): New.
4162 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
4163 deprecated.[hc]. Implemented in terms of the new functions above.
4164 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
4165 scm_makfrom0str): Reimplemented in terms of the new functions from
4166 above. They will be discouraged shortly.
4167 (scm_substring): Do not use scm_mem2string.
4168 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
4169 to replace similar code from posix.c, simpos.c, and dynl.c.
4170 (scm_string_append): Use memcpy instead of explicit loop. Do not
4171 use register keyword. Use plain 'char' instead of 'unsigned
4172 char'.
241d9cea 4173
02573e4c
MV
4174 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
4175 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
4176
4177 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
4178 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4179 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
4180 not as a pointer. Use scm_remember_upto_here_1 to protect it.
4181
4182 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
4183 string. This avoids a conversion round-trip.
4184
4185 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
4186 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4187 SCM_I_STRING_LENGTH, respectively.
4188 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
241d9cea 4189
02573e4c
MV
4190 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
4191 of a string, call scm_display on the string itself.
4192
4193 * dynwind.c, dynwind.h (scm_frame_free): New.
4194
4195 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
4196 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
4197 Replaced uses of SCM_STRING_CHARS with proper uses of
4198 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
4199 Replaced scm_mem2string with scm_from_locale_string.
4200
4201 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
4202 Removed, replaced all uses with scm_i_allocate_string_pointers.
4203
4204 * load.h, load.c (scm_internal_parse_path): Removed.
4205 (scm_parse_path): Use scm_string_split to do the work.
4206 (scm_init_load_path): Use scm_parse_path instead of
4207 scm_internal_parse_path.
4208 (scm_search_path): Rewritten string handling part of the code in
4209 terms of scm_to_locale_stringbuf and so that it is thread safe.
4210
4211 * error.c (scm_error_scm): Throw directly instead of calling
4212 scm_error, this avoids the back and forth conversion of SUBR and
4213 MESSAGE and also plugs a memory leak.
4214 (scm_error): Call scm_error_scm.
241d9cea 4215
02573e4c
MV
4216 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
4217 (display_header): Print FNAME when it is true, not
4218 merely when it is a string.
4219
4220 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
4221 unceremoniously. They were unused by Guile itself, and external
4222 use should stop immediately.
241d9cea 4223
02573e4c 4224
409eb4e5
MV
42252004-08-10 Marius Vollmer <mvo@zagadka.de>
4226
4227 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
4228 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
4229 deprecated versions installed in deprecated.h and deprecated.c.
4230 Changed all uses.
241d9cea 4231
a00eaf19
RB
42322004-08-06 Rob Browning <rlb@defaultvalue.org>
4233
4234 * net_db.c (scm_resolv_error): don't cause an exception while
4235 trying to throw an exception -- call scm_misc_error with correct
4236 arguments. The previous arguments needed a format escape that
4237 wasn't in any of the format strings.
4238
bcb88c93
KR
42392004-08-06 Kevin Ryde <user42@zip.com.au>
4240
8f094b97
KR
4241 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
4242 so as not to depend on signedness of plain char. For byvect range
4243 check, throw out-of-range rather than wrong-type-arg.
4244
bcb88c93
KR
4245 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
4246 signed byte range checks by using scm_to_schar and scm_from_schar,
4247 don't want to depend on signedness of C char.
4248
29e61124
KR
42492004-08-05 Kevin Ryde <user42@zip.com.au>
4250
4251 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
4252 SCM_DEFER_INTS.
4253 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
4254 guaranteed if multiple threads compete to unlock.
4255 Update docstrings per doc/ref/api-scheduling.texi.
4256
99de794f
KR
4257 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
4258 stat on the filename, to be certain a file rename can't mean we get
4259 info on one filesystem object but open another. This fstat usage is
4260 similar to Emacs copy-file.
241d9cea 4261
29e61124
KR
4262 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
4263
4264 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
4265 SIGINT and SIGQUIT, since those values are ints.
4266
759aa8f9
MV
42672004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4268
7241f213
MV
4269 * num2integral.i.c, num2float.i.c: Removed.
4270 * Makefile.am (noinst_HEADERS): Updated.
4271
f9656a9f
MV
4272 * numbers.h. numbers.c (scm_make_ratio): Renamed to
4273 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
4274 (scm_complex_p): New, export as "complex?" to Scheme.
4275 (scm_number_p): Export as "number?" to Scheme.
4276 (scm_is_complex, scm_is_number): New.
4277 (scm_c_make_rectangular, scm_c_make_polar): New.
4278 (scm_make_rectangular, scm_make_polar): Use above.
4279 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
4280 New.
4281 (scm_make_complex): Discouraged by moving to discouraged.h and
4282 discouraged.c. Replaced all uses with scm_c_make_rectangular.
241d9cea 4283
759aa8f9
MV
4284 * discouraged.h, discouraged.c, numbers.c, numbers.h
4285 (scm_is_rational): New.
4286 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
4287 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
4288 Removed prototypes.
4289 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
4290 Discouraged by moving to discouraged.h and discouraged.c.
4291 Replaced all uses with scm_from_double.
4292 (scm_num2float, scm_num2double): Discouraged by moving prototype
4293 to discouraged.h and rewriting in terms of scm_to_double.
4294 Replaced all uses with scm_to_double.
4295 (scm_to_double): Do not implement in terms of scm_num2dbl, use
4296 explicit code.
4297 (scm_from_double): Do not implement in terms of scm_make_real, use
4298 explicit code.
241d9cea 4299
531bf3e6
MV
43002004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4301
759aa8f9
MV
4302 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
4303
531bf3e6
MV
4304 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
4305 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
4306
4307 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
4308 Renamed to SCM_I_* in order to avoid collisions with the versions
4309 defined in deprecated.h.
4310
4311 * discouraged.h, discouraged.c: New files.
4312
4313 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
4314 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
4315 deprecated to being discouraged by moving to discouraged.h.
4316
4317 * numbers.h, numbers.c, discouraged.h, discouraged.c
4318 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
4319 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
4320 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
4321 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
4322 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
4323 scm_num2ulong_long): Discouraged by moving to discouraged.h and
4324 discouraged.c and reimplementing in terms of scm_from_* and
4325 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
4326 functions.
4327
4328 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
4329 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
4330 scm_i_size2big, scm_i_ptrdiff2big): Removed.
241d9cea 4331 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
531bf3e6
MV
4332 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
4333 explicit code.
4334
5ec82e96
KR
43352004-08-02 Kevin Ryde <user42@zip.com.au>
4336
4337 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
4338 and current usage and migration.
4339
58f28989
KR
43402004-07-31 Kevin Ryde <user42@zip.com.au>
4341
4342 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
4343 it's not thread safe.
4344 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
4345 advantage of this.
4346 * fports.c (scm_open_file): Use scm_strerror likewise.
4347 * filesys.c (scm_stat, scm_lstat): Ditto.
4348
4349 * filesys.c (scm_copy_file): Avoid fd leak when destination file
4350 cannot be opened.
4351
4352 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
4353 update, for thread safety.
4354 (gensym_counter): Move into scm_gensym which is its only user.
4355 (scm_init_symbols): No need to explicitly initialize gensym_counter.
4356
03696aab
MV
43572004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4358
51fdb325
MV
4359 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
4360 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
4361 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
4362 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
4363 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
4364 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
4365 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
4366 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
4367 defined in terms of scm_to_signed_integer, etc, but in terms of
4368 scm_to_int8, etc.
4369
4370 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
4371
03696aab
MV
4372 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
4373 no longer used.
4374
4375 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
4376 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
4377
4378 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
4379 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
4380 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
4381 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
4382 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
4383 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
4384 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
241d9cea 4385
03696aab
MV
4386 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
4387 the functions below.
4388
4389 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
4390 conv-uinteger.i.c.
4391
4392 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
4393 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
4394 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
4395 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
4396 scm_from_uint64): Turned from macros into proper functions.
4397 (scm_to_signed_integer, scm_to_unsigned_integer,
4398 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
4399 conv-integer.i.c and conv-uinteger.i.c, as well.
241d9cea 4400
03696aab
MV
4401 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
4402 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
4403 the limits. Those are always defined.
241d9cea 4404
1f15779e
KR
44052004-07-29 Kevin Ryde <user42@zip.com.au>
4406
4407 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
4408
48360eb3
KR
44092004-07-28 Kevin Ryde <user42@zip.com.au>
4410
4411 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
4412 safety.
4413
c3f3c841
KR
4414 * unif.c (scm_array_set_x): For svect, use scm_num2short for
4415 consistency with other vector types and to get arg and func name into
4416 error message.
4417
c82f8ed6
MV
44182004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4419
4420 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
4421 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
4422 scm_from_bool, respectively.
4423 (SCM_NINUMP): Added.
241d9cea 4424
c82f8ed6
MV
4425 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
4426 deprecated.h. Replaced all uses with scm_is_eq.
4427
317b4c4a
KR
44282004-07-24 Kevin Ryde <user42@zip.com.au>
4429
4430 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
4431 * posix.c (scm_crypt): Use it to protect static data in crypt().
4432
e11e83f3
MV
44332004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4434
4435 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 4436 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
4437 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
4438 versions to deprecated.h and deprecated.c. Changed all uses to
4439 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
4440 scm_from_*, as appropriate.
4441
4442 * dynwind.c (scm_i_dowinds): Removed unused code that would call
4443 the unexisting scm_cross_dynwind_binding_scope for inums on the
4444 windlist.
241d9cea 4445
a55c2b68
MV
44462004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4447
4448 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 4449 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
4450 byte-wise address to a SCM integer. Changed all uses.
4451 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
4452 scm_to_ipv6 and added type and range checking, for converting from
4453 an IPv& byte-wise address to a SCM integer. Changed all uses.
4454 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
4455 is now done by scm_to_ipv6.
241d9cea 4456
a55c2b68
MV
4457 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
4458 not accept inexact integers.
4459
4460 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
4461 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
4462 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
4463 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
4464 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
4465 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
4466 fixnum/bignum distinction visible. Changed all uses to
4467 scm_to_size_t or similar.
4468
44692004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4470
4471 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
4472
48a06bd5
KR
44732004-07-10 Kevin Ryde <user42@zip.com.au>
4474
4475 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
4476 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
4477 such a size causes divide-by-zeros in scm_hasher.
4478
052fbfd9
KR
4479 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
4480 leak.
4481
43240c9c
MV
44822004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4483
4484 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
4485 Rewritten using the same logic as scm_to_signed_integer and
4486 scm_to_unsigned_integer, respectively, which is better(tm). Also,
4487 use CHAR_BIT instead of hardcoding 8.
4488 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
4489 SCM_I_LLONG_MIN etc. instead.
241d9cea 4490
43240c9c
MV
4491 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
4492 SCM_I_MAKINUM and changed all uses.
4493 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
4494
a3de8e7b
MV
4495 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
4496 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
4497 them by assuming twos-complement.
4498
c9eb03bb
MV
44992004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4500
4501 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
4502 configure now produces.
4503 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
4504 definitions, giving the limits of the integer types defined by
4505 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
4506 LLONG_MIN or LONG_LONG_MIN is hard to get at.
4507
4508 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
4509 SHORT_MIN.
4510 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
4511 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
4512 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
4513 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
4514 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
4515 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
4516 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
4517 scm_from_uintmax): New.
241d9cea 4518
7888309b
MV
45192004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4520
4521 * tags.h (scm_is_eq): New.
4522
4523 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
4524 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
4525 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
4526 scm_from_bool, and scm_is_bool, respectively.
4527
4528 * boolean.h (scm_is_bool): Fix bug in prototype.
4529 (scm_from_bool): The argument is "x" not "f", stupid.
4530
4531 * boolean.c (scm_is_bool): Fix typo.
4532
4533 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
4534 scm_is_unsigned_integer, scm_to_signed_integer,
4535 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
4536 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
4537 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
4538 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
4539 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
4540 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
4541 New.
241d9cea 4542
800570a6
MV
45432004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4544
4545 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
4546 scm_to_bool): New.
4547
9fcf3cbb
DH
45482004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4549
4550 * backtrace.c (display_expression, display_frame): Call
4551 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
4552 single memoized expression.
4553
4554 * debug.c (memoized_print): Don't try to unmemoize the memoized
4555 object, since we can't know whether it holds a single expression
4556 or a body.
4557
4558 (scm_mem_to_proc): Removed check for lambda expression, since it
4559 was moot anyway. Whoever uses these functions for debugging
4560 purposes should know what they do: Creating invalid memoized code
4561 will cause crashes, independent of whether this check is present
4562 or not.
4563
4564 (scm_proc_to_mem): Take the closure's code as it is and don't
4565 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
4566 memoized code should not be modified.
4567
4568 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
4569 scm_unmemoize from public use, but made scm_i_unmemoize_expr
4570 available as a guile internal function instead. However,
4571 scm_i_unmemoize_expr will only work on memoized objects that hold
4572 a single memoized expression. It won't work with bodies.
4573
4574 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
4575 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
4576 i. e. a list of expressions.
4577
4578 * eval.c (unmemoize_exprs): Drop internal body markers from the
4579 output during unmemoization.
4580
4581 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
4582 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
4583 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
4584 as guile internal functions instead. scm_i_unmemoize_expr will
4585 only work on a single memoized expression, while
4586 scm_i_unmemocopy_body will only work on bodies.
4587
90df793f
DH
45882004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4589
4590 * eval.c (unmemoize_exprs): Handle semi-memoized code.
4591
4592 (scm_cons_source, scm_primitive_eval): Prefer higher level
4593 predicate SCM_FALSEP over SCM_IMP.
4594
8048c00b
RB
45952004-06-15 Rob Browning <rlb@defaultvalue.org>
4596
4597 * script.c (scm_shell_usage): minor phrasing change.
4598
4599 * gc_os_dep.c: update ifdefery for macosx.
4600 (scm_get_stack_base): separate result initialization from
4601 declaration to slience warnings with macosx and hp-ux using gcc
9a5fa6e9 4602 3.3. Thanks to Andreas Vögele.
8048c00b 4603
d93294d4
HWN
46042004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
4605
4606 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
4607
212e58ed
DH
46082004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4609
4610 * list.[ch] (scm_i_finite_list_copy): New internal function to
4611 copy lists that are known to be finite (though not necessarily
4612 proper).
4613
4614 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
4615 a closure's argument list like an expression of a body.
4616
4617 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
4618 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
4619 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
4620 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
4621 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
241d9cea 4622 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
212e58ed
DH
4623 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
4624 unmemoize_builtin_macro): New static functions and symbols.
4625
4626 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
4627 now has a slightly different meaning: The memoized form that is
4628 receives as its argument is now interpreted as a sequence of
4629 expressions from a body.
4630
4631 (unmemocar, scm_unmemocar): Since the whole functionality of
4632 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4633 has its old content back and is deprecated, while unmemocar has
4634 been removed.
4635
4636 (SCM_BIT7): Removed.
4637
4638 (CEVAL): For unmemoizing a single expression, call
4639 unmemoize_expression instead of scm_unmemocopy, which now expects
4640 a sequence of body expressions. Eliminated unnecessary empty
4641 environment frame when executing let* forms. Eliminated
4642 unmemoization step from evaluator.
4643
9ccea370
MV
46442004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4645
4646 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4647 macroexp and made static. Added new version of scm_macroexp that
4648 emits a deprecation warning and then calls macroexp.
4649 (scm_m_undefine): Issue deprecation warning.
241d9cea 4650
57d23e25
DH
46512004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4652
4653 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4654 Modified to make set! work on symbols that represent syntactic
4655 keywords.
4656
141521ad
HWN
46572004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4658
4659 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4660 compound expression as lvalue errors.
4661
7c2f56a4
MV
46622004-05-24 Marius Vollmer <mvo@zagadka.de>
4663
4664 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4665 WINDER_DATA to a SCM.
4666
366ecaec
DH
46672004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4668
4669 * goops.c (compute_getters_n_setters, create_standard_classes,
4670 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4671 lambda expression rather than creating them with scm_closure.
4672
26ecfa39
DH
46732004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4674
4675 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4676 misplaced syntactic keywords. This will not work unless guile's
4677 defmacro feature is deprecated.
4678
4679 (scm_m_case): Fixed a bug that caused the list of labels to grow
4680 with every case form.
4681
f865229a
KR
46822004-05-19 Kevin Ryde <user42@zip.com.au>
4683
4684 * numbers.c (scm_round_number): For inum and big, just return x. For
4685 real, use scm_round for 2^54-1 etc problems covered there.
4686
4687 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4688 doesn't provide trunc. This was for when `truncate' was done as a
4689 scm_tc7_dsubr, no longer required.
4690
4691 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4692 to stack marking call, two parameters and no cast on t->base.
4693
63947c7a
MV
46942004-05-18 Marius Vollmer <mvo@zagadka.de>
4695
4696 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4697 processed hashtables back into the weak_hashtables list. Thanks
4698 to Bill Schottstaedt!
4699
e7313a9d
DH
47002004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4701
4702 * eval.c (unmemoize_quote): New static function.
4703
4704 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4705 representation of 'quote' and '@slot-ref' to an improper list.
4706 This reduces execution time, the number of cells used to hold the
4707 memoized code, and thus also reduces garbage collection time.
4708
4709 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4710
4711 (SCM_CEVAL): Changed macro handling to also work with macros that
4712 return improper lists. Added an assertion, that the code returned
4713 by a macro transformer will not lead to cycles in the memoized
4714 code.
4715
e5156567
DH
47162004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4717
4718 No functional change, just rearrangements of functions within the
4719 file.
4720
4721 * eval.c (scm_ilookup, scm_unbound_variable_key,
4722 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4723 the definitions used for execution, since that's where they will
4724 belong to later.
4725
651f07f8
DH
47262004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4727
4728 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4729 throughout guile, has not been part of an official release yet,
4730 and the concept of sloppy predicates has never been a good idea.
4731
4732 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4733 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4734 Simplified.
4735
770e048f
DH
47362004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4737
4738 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4739 to make explicit what happens.
4740
2ff08405
DH
47412004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4742
4743 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4744 explicit what happens.
4745
4746 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4747 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4748
89afb9cd
MV
47492004-05-11 Marius Vollmer <mvo@zagadka.de>
4750
4751 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4752 is indeed a procedure when it isn't a number.
4753
3d5ebfa9
MV
47542004-05-10 Marius Vollmer <mvo@zagadka.de>
4755
4756 Convert floating point numbers into strings with an arbitrary
4757 radix. Thanks to Richard Todd!
241d9cea 4758
3d5ebfa9
MV
4759 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4760 fit.
4761 (fx): Removed.
4762 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4763 number_chars): New, to support variable radices.
4764 (idbl2str): Use above instead of the old base-10 only tables.
4765 (iflo2str): Pass on new RADIX argument to idbl2str.
4766 (scm_number_to_string): Pass radix to iflo2str.
4767 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4768 iflo2str.
4769 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4770 possible radices.
4771
3ae69bb4
KR
47722004-05-10 Kevin Ryde <user42@zip.com.au>
4773
4774 * numbers.c (scm_logbit_p): Correction to test above the end of an
4775 inum. Reported by Jan Konecny.
4776
27968825
MV
47772004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4778
4779 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4780 scm_t_bits. Updated all users.
4781 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4782 duplicating the code.
4783 (SCM_CELL_OBJECT_LOC): New.
4784 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4785 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4786
4787 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4788 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4789 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4790 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4791 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4792 SCM_SMOB_OBJECT_3_LOC): New.
4793 * smob.c (scm_i_set_smob_flags): New function.
4794
4795 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4796 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4797 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4798 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4799 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4800 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4801
4802 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4803 taking the address of SCM_CELL_WORD_1, the latter being no longer
4804 an lvalue.
4805
4806 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4807 of casting SCM_CELL_WORD_LOC.
4808
3cf17ef0
KR
48092004-05-02 Kevin Ryde <user42@zip.com.au>
4810
37026925 4811 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
9a5fa6e9 4812 --disable-deprecated. Reported by Andreas Vögele.
37026925 4813
3cf17ef0 4814 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
9a5fa6e9 4815 particular on HP-UX). Reported by Andreas Vögele.
3cf17ef0 4816
c5854598
KR
4817 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4818 code has support for. Fixes building with AIX cc, which is ansi but
4819 doesn't define __STDC__. Reported by Keith Crane.
4820 (var_start): Remove macro, this variation no longer required.
4821 (scm_list_n): Use va_start directly.
4822
f26c1a32
KR
48232004-05-01 Kevin Ryde <user42@zip.com.au>
4824
4825 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
9a5fa6e9 4826 is now gone. Reported by Andreas Vögele.
f26c1a32 4827
dfa6017e
KR
48282004-04-28 Kevin Ryde <user42@zip.com.au>
4829
4830 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4831 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4832 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
9a5fa6e9 4833 subscript. Reported by Andreas Vögele.
dfa6017e
KR
4834 Also cast through unsigned char to avoid passing negatives to those
4835 macros if input contains 8-bit values.
4836
4837 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4838 corrections to range check for signed numbers. Remove
4839 scm_remember_upto_here_1(num) from these checks, since num is used
4840 subsequently anyway.
4841
4842 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4843 avoid warning from gcc 3.4. Reported by Hyperdivision.
241d9cea 4844
dfa6017e
KR
4845 * numbers.c (scm_bit_extract): Use min instead of MIN.
4846 (MIN): Remove, this conflicts with similar macro defined by limits.h
9a5fa6e9 4847 on HP-UX. Reported by Andreas Vögele.
dfa6017e
KR
4848
4849 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
9a5fa6e9 4850 particular on HP-UX). Reported by Andreas Vögele.
dfa6017e 4851
a0d06a00 4852 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
9a5fa6e9 4853 Reported by Andreas Vögele.
a0d06a00 4854
dfa6017e
KR
4855 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4856 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
9a5fa6e9 4857 by Andreas Vögele.
dfa6017e 4858
36245b66
DH
48592004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4860
4861 * eval.c (s_macro_keyword): New static identifier.
4862
4863 (scm_m_define): Change order to first create binding and
4864 evaluating the expression afterwards.
4865
4866 (scm_m_set_x): Memoize complete set! expression. Only leave
4867 symbols if no binding exists at memoization time. Throw error if
4868 assigning to a syntactic keyword.
4869
4870 (lazy_memoize_variable): New function.
4871
4872 (CEVAL): When execution set!, perform lazy memoization if
4873 unmemoized symbol is detected.
4874
4875 * modules.c (module_variable): Return variables with unbound
4876 value.
4877
4878 * tags.h: Fix comment.
4879
4d81111e
KR
48802004-04-25 Kevin Ryde <user42@zip.com.au>
4881
da8bcb2f
KR
4882 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4883 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4884 in 8-bit locales, and ensures consistency with char-upper-case? and
4885 char-lower-case? which already use ctype.h.
4886 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4887 Remove.
4888 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4889
4d81111e
KR
4890 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4891 call. Reported by Hyperdivision.
4892
4893 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4894 Reported by Hyperdivision.
4895
4896 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4897 Hyperdivision.
4898
7e6e6b37
DH
48992004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4900
4901 Hide the implementation of ilocs and isyms in eval.c.
4902
4903 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4904 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4905 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4906 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4907 eval.h to eval.c.
4908
4909 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4910 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4911 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4912 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4913 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4914 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4915 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4916 renamed to ISYMNUM.
4917
4918 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4919 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4920 Extracted printing of ilocs and isyms to guile internal functions
4921 scm_i_print_iloc, scm_i_print_isym of eval.c.
4922
caab294f
KR
49232004-04-22 Kevin Ryde <user42@zip.com.au>
4924
7aaf4758
KR
4925 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4926
caab294f
KR
4927 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4928 rounding in x+0.5 when x is a big value already an integer. In
4929 certain hardware rounding cases x+0.5 can give an adjacent integer,
4930 leading to that as the result, when we really just wanted x itself.
241d9cea 4931
b1cb24ff
DH
49322004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4933
4934 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4935
4936 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4937 added const qualifiers, cast intentionally unused expressions to
4938 void for emphasis, improved comment.
4939
5065b40d
DH
49402004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4941
4942 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4943 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4944 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4945 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4946 Defined the tc8-tag for flags to be 0x04, which will mean that
4947 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4948 to the reduced number of bits and the simpler bit pattern for
4949 SCM_BOOL_F, certain machines may be able to use more efficient
4950 processor instructions to deal with SCM_BOOL_F.
4951
4952 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4953 never been defined in a released version, thus no need to
4954 deprecate them.
4955
4956 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4957 instead of tc9 tags.
4958
4959 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4960 of tc9 tags.
4961
4962 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4963 could have used this definition.
4964
4965 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4966 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4967 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4968 as isyms, as special isyms don't exist any more.
4969
9fa6c119
KR
49702004-04-18 Kevin Ryde <user42@zip.com.au>
4971
e08d2eee
KR
4972 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4973 safety.
4974
9fa6c119
KR
4975 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4976 explicit swapping code.
4977
c9cdd396
KR
49782004-04-15 Kevin Ryde <user42@zip.com.au>
4979
4980 * cpp_sig_symbols.in: Add SIGSYS.
241d9cea 4981
c9cdd396
KR
4982 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4983 recursion.
4984
4985 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4986 frac/big and frac/frac, use scm_less_p for exact comparison.
4987
83ac9c59
KR
4988 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4989 with big/inum.
4990
84a4be9a
KR
4991 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
4992
84fad130
HWN
49932004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
4994
6b69393d
HWN
4995 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
4996
84fad130 4997 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
241d9cea 4998 scm_c_{up,down}case.
84fad130 4999 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
241d9cea 5000 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
84fad130 5001
c3110a30
KR
50022004-04-06 Kevin Ryde <user42@zip.com.au>
5003
0b288f36
KR
5004 * numbers.c (scm_ash): Remove stray "}" in docstring.
5005
ea2508c8
KR
5006 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
5007 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
5008 calling mpz_cmp_ui in most cases.
5009
c3110a30
KR
5010 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
5011 for big == abs(most-negative-fixnum) special case.
5012 (abs_most_negative_fixnum): Remove, no longer used.
5013
5014 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
5015 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
5016 calling (sigaction NSIG).
5017
5018 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
5019 and fork error cases to do this.
5020
dec40cd2
DH
50212004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5022
5023 * eval.c (CEVAL): Don't distinguish between short and long
5024 instructions when dispatching - just always dispatch on the
5025 instruction code, which is common for short and long instructions.
5026 Further, removed unnecessary goto statements and added comment.
5027
0e7bb795
DH
50282004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5029
5030 * eval.c (scm_unmemocopy): Don't distinguish between short and
5031 long instructions when dispatching - just always dispatch on the
5032 instruction code, which is common for short and long instructions.
5033 Further, removed unnecessary goto statements, fixed indentation
5034 and replaced SCM_IMP predicates by SCM_NULLP.
5035
f9986767
DH
50362004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5037
5038 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
5039 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
5040 'checkmacro'.
5041
fbc42231
KR
50422004-03-31 Kevin Ryde <user42@zip.com.au>
5043
5044 * simpos.c: Include <signal.h> for SIG_IGN and friends.
5045
434f2f7a
DH
50462004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5047
5048 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
5049 SCM_DEBUGGINGP:
5050
5051 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
5052 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
5053 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
5054 single interface that also matches the naming conventions.
5055 Probably scm_debug_mode_p should be part of the private interface
5056 anyway.
5057
5058 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
5059 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
5060 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
5061 to scm_debug_mode_p.
5062
5063
5064 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
5065
5066 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
5067 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
5068 from debug.h to eval.h.
5069
5070 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
5071 more, just leave it with setting scm_debug_mode_p, which is
5072 equivalent for practical purposes.
5073
5074 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
5075 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
5076
5077 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
5078
5079 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
5080 static and renamed it to ceval throughout. Provide a new exported
5081 but deprecated function scm_ceval as a wrapper for backwards
5082 compatibility. The same is done for the deval/scm_deval pair of
5083 functions.
5084
5085 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
5086 throughout. Defined CEVAL to ceval or deval, based on compilation
5087 phase.
5088
5089 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
5090 to ceval and deval instead of calling *scm_ceval_ptr.
5091
5092 * eval.c (dispatching_eval): New deprecated static function.
5093
5094 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
5095 to emulate its old behaviour as closely as possible.
5096
5097
5098 Change the evaluator such that only expressions for which pair? is
5099 true are passed to CEVAL, and such that all other expressions are
5100 evaluated outside of CEVAL:
5101
5102 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
5103 expression that is assumed to be memoized already. All but
5104 expressions of the form '(<form> <form> ...)' are evaluated inline
5105 without calling an evaluator.
5106
5107 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
5108 expressions of the form '(<form> <form> ...)' inline without
5109 calling an evaluator.
5110
5111 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
5112 the special case of unmemoized symbols passed on the top level.
5113
5114 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
5115 is known that the expression passed to CEVAL is of the form
5116 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
5117 now it is known that the input expression of CEVAL is a pair.
5118
51192004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5fb64383
DH
5120
5121 * eval.c (is_self_quoting_p): New static function.
5122
5123 (scm_m_quote): Use is_self_quoting_p.
5124
5125 (copy_tree): Corrected typo in comment.
5126
702551e6
HWN
51272004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
5128
bfefbf18
HWN
5129 * eval.c (s_scm_copy_tree): idem.
5130
5131 * list.c (s_scm_filter): remove "pointer" from doc string.
5132
702551e6
HWN
5133 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
5134
5135 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
5136
5137 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
5138 (display_frame): idem.
5139 (display_backtrace_file_and_line): idem.
5140
5141 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
5142 arguments.
5143
3cd23214
KR
51442004-03-26 Kevin Ryde <user42@zip.com.au>
5145
88a7ae1f
KR
5146 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
5147
3cd23214
KR
5148 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
5149 big==0 since that never occurs.
5150
5151 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
5152 scm_modular_expt, matching scheme level name `modulo-expt'.
5153
5154 * numbers.c (scm_modular_expt): Return a negative remainder for a
5155 negative divisor, the same as `modulo' does.
5156
51572004-03-26 Eric Hanchrow <offby1@blarg.net>
5158
5159 * numbers.c, numbers.h (scm_modular_expt): New function.
5160
2926035a
KR
51612004-03-25 Kevin Ryde <user42@zip.com.au>
5162
5163 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
5164 return inexact as required by r5rs.
5165
62360b89
DH
51662004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5167
5168 * eval.c: Separated some definitions relevant for execution from
5169 the memoization part of the file.
5170
5171 (copy_tree): New static function
5172
5173 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
5174 structures are detected now and will lead to an exception instead
5175 of forcing guile to run in an endless loop, using up all the
5176 system's memory. Second, arrays in the cdr of an improper list
5177 are now copied. See the new test cases in eval.test.
5178
51792004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
b28f5b3c
DH
5180
5181 * posix.c (scm_gethostname): Make sure len is initialised before
5182 it is used. Restructured to (hopefully) represent possible
5183 configurations more clearly in the code. Added unwind handler.
5184
3bd3bae8
KR
51852004-03-23 Kevin Ryde <user42@zip.com.au>
5186
5187 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
5188 MAXHOSTNAMELEN when available.
5189
254bf78d
MV
51902004-03-21 Marius Vollmer <mvo@zagadka.de>
5191
5192 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
5193 terminator. Rewritten the logic as a state machine, I must have
5194 been doing too much VHDL lately...
5195
5196 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
5197 themselves. Thanks to Han-Wen Nienhuys!
5198
5199 * list.c: Changed docstrings so that they no longer talk about
5200 returning 'pointers' to something.
5201
009c34a2
HWN
52022004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5203
5204 * gc.c: remove set_debug_cell_accesses! when
5205 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
5206 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
5207 debugging conditionally.
241d9cea 5208
54733c95
KR
52092004-03-21 Kevin Ryde <user42@zip.com.au>
5210
5211 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
5212
bbaf8747
KR
52132004-03-20 Kevin Ryde <user42@zip.com.au>
5214
5215 * posix.c (scm_gethostname): Preserve errno across free() call.
5216
726f82e7
HWN
52172004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
5218
5219 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
5220 free cells.
5221
e1350d6a
KR
52222004-03-14 Kevin Ryde <user42@zip.com.au>
5223
5224 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
5225 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
5226
62055253
KR
52272004-03-07 Kevin Ryde <user42@zip.com.au>
5228
5229 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
5230 than "GMT" always.
5231 (filltime): Make zname parameter "const".
5232
92e64b87
MD
52332004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
5234
5235 * threads.c, threads.h (scm_c_scm2thread): New function.
5236
004ad931
KR
52372004-02-29 Kevin Ryde <user42@zip.com.au>
5238
5239 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
5240 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
5241 particular don't assume "defined (__alpha__) && ! defined (linux)"
5242 means OSF. Remove "SCO" code, which was not really SCO specific and
5243 which John W. Eaton advises should be long past being needed.
5244
5245 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
5246 error throw.
5247
72ea45ac
KR
52482004-02-24 Kevin Ryde <user42@zip.com.au>
5249
5250 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
5251
2af0602e
KR
52522004-02-22 Kevin Ryde <user42@zip.com.au>
5253
5254 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
5255 complex, same as for two args. (Handle only inum, big, real, frac).
5256
b114eafe
KR
52572004-02-21 Kevin Ryde <user42@zip.com.au>
5258
5259 * posix.c (scm_crypt): Use new HAVE_CRYPT.
5260 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 5261 Reported by Andreas Voegele.
b114eafe 5262
1e55d288
NJ
52632004-02-20 Neil Jerram <neil@ossau.uklinux.net>
5264
5265 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
5266 validation.
5267
5268 * read.c (scm_lreadparen): Removed.
5269 (scm_lreadparen1): Renamed scm_i_lreadparen.
5270
eb741d98
HWN
52712004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5272
5273 * list.c (scm_list_n): validate non-immediate arguments;
5274 this will catch forgotten a SCM_UNDEFINED.
5275
4e28ba5e
MV
52762004-02-18 Marius Vollmer <mvo@zagadka.de>
5277
5278 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
5279 Thanks to Bill Schottstaedt!
241d9cea 5280
4e28ba5e
MV
5281 * socket.h (scm_gethost): Removed prototype it is already in
5282 "net_db.h". Thanks to Bill Schottstaedt!
241d9cea 5283
ef861ead
KR
52842004-02-18 Kevin Ryde <user42@zip.com.au>
5285
5286 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
5287 order parameter to mpz_import, in fact with just one word there's no
5288 order to worry about at all.
5289
5290 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
5291 and frac==complex, make an exact comparison rather than converting
5292 with fraction2double.
5293
5294 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
5295 shared library, since environ is not directly available there.
5296
5297 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
5298 standard.
5299
5300 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
5301 errno EINVAL in case localtime and gmtime don't set it.
5302 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
5303 SCM_SYSERROR, since mktime and strptime generally don't set errno.
5304
ae43d08e 53052004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 5306
c9ea6462
KR
5307 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
5308 which were permitted in the past for these.
5309
292dfa7f
KR
5310 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
5311 previous change to numbers.c.
5312
ae43d08e
KR
5313 * script.c (scm_shell_usage): Print bug-guile email address, as per
5314 GNU standard. Reported by Han-Wen Nienhuys.
5315
711a9fd7
MD
53162004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5317
5318 * unif.c (scm_make_uve): Removed local variable and simplified
5319 code in order to avoid compiler used uninitialized warnings.
5320
5321 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
5322 scm_hash_map.
5323 (scm_hash_fold): Use scm_call_3 directly in the call to
5324 scm_internal_hash_fold instead of going via fold_proc (which is
5325 now removed).
5326 (scm_hash_for_each): Use a trampoline +
5327 scm_internal_hash_for_each_handle.
5328 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
5329 functions.
5330
3da7f6b2
KR
53312004-02-12 Kevin Ryde <user42@zip.com.au>
5332
344a212f
KR
5333 * ports.c (scm_port_line): In docstring, note first line is 0.
5334 (scm_set_port_line_x): In docstring, note first line is 0.
5335 (scm_port_column): In docstring, there's no default to current input
5336 port, and remove shared port-line @defun.
5337 (scm_set_port_column_x): In docstring, there's no default to current
5338 input port, note first column is 0, remove shared set-port-line!
5339 @defun.
5340
3da7f6b2
KR
5341 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
5342 convert args the same way that array-set! does.
5343
5344 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
5345 for dvect.
5346 (scm_array_p): Add missing "break"s in switch, fix llvect test look
5347 for "l" not "s", fix dvect to be false for singp(prot) since such a
5348 value is for fvect.
5349 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
5350 (exactly_one_third): New variable.
5351 (scm_init_unif): Initialize it.
3da7f6b2 5352
cd21f5eb
NJ
53532004-02-10 Neil Jerram <neil@ossau.uklinux.net>
5354
5355 * read.c (scm_read_opts): Change `escaped-parens' to
5356 `elisp-strings'.
5357
16353acc
NJ
53582004-02-08 Neil Jerram <neil@ossau.uklinux.net>
5359
5360 * read.c (scm_read_opts): New opts `elisp-vectors' and
5361 `escaped-parens'.
5362 (s_vector): New.
5363 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
5364 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
5365 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
5366 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
5367 `escaped-parens' option set.
5368 (scm_read_token): If elisp vector syntax active, disallow [ and ]
5369 in tokens.
5370 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
5371 (scm_lreadparen1): New.
5372
5373 * read.h: Remove conditionally compiled last arg to
5374 scm_lreadparen.
5375 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
241d9cea 5376
f62b9dff
HWN
53772004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
5378
5379 * eval.c (m_expand_body): remove stray variable new_body.
5380
ef5b6b61
MV
53812004-01-22 Marius Vollmer <mvo@zagadka.de>
5382
5383 * eval.c (m_expand_body): Rewrite the expression in place (by
5384 overwriting FORMS) also when a letrec is constructed, not only
5385 when no definitions are found. Do not return rewritten expression
5386 to emphasize the in-place rewriting. Changed all users.
5387
7eec4c37
HWN
53882004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
5389
5390 * gc.c: add protected_object_count, a number that is dumped from
5391 gc_stats()
5392
25ffbdac
MV
53932004-01-11 Marius Vollmer <mvo@zagadka.de>
5394
5395 * dynwind.h, dynwind.c (scm_frame_unwind,
5396 scm_frame_unwind_handler): Renamed and changed all uses.
5397 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
241d9cea 5398
08568c95
KR
53992004-01-11 Kevin Ryde <user42@zip.com.au>
5400
5401 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
5402 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
5403 changes made to scheme-compound.texi.
5404
5565749c
MV
54052004-01-10 Marius Vollmer <mvo@zagadka.de>
5406
25ffbdac
MV
5407 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
5408 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
5409
5410 * guile-snarf.in: Use mkdir to create a unique temporary directory
5411 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 5412
fc6bb283
MV
54132004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5414
7ebccde8
MV
5415 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
5416 argument since it is always zero now. Changed all callers.
5417 Removed code for handling fluids.
96e3b2f8
MV
5418
5419 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
5420 the wind chain explicitely. Use scm_c_with_fluid for the common
5421 case of only one fluid.
5422 (scm_with_fluid): New.
5423 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
241d9cea 5424
fc6bb283 5425 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
5426 (scm_with_fluid): New.
5427 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
5428
5429 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
5430 do the unwinding directly. It is simple enough.
241d9cea 5431
fc6bb283
MV
5432 * dynwind.h, dynwind.c: Did the following renamings:
5433 scm_begin_frame -> scm_frame_begin,
5434 scm_end_frame -> scm_frame_end,
5435 scm_on_unwind -> scm_frame_unwind,
5436 scm_on_rewind -> scm_frame_rewind,
5437 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
5438 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
5439 Changed all uses.
5440
5441 * aync.h, async.c: Did the follwing renamings:
5442 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
5443 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
5444 Changed all uses.
241d9cea 5445
fc6bb283
MV
5446 * ports.h, ports.c: Did the follwing renamings:
5447 scm_with_current_input_port -> scm_frame_current_input_port,
5448 scm_with_current_output_port -> scm_frame_current_output_port,
5449 scm_with_current_error_port -> scm_frame_current_error_port.
5450 Changed all uses.
5451
298ab996
KR
54522004-01-07 Kevin Ryde <user42@zip.com.au>
5453
5454 * numbers.c (s_bignum): Remove, not used since gmp bignums.
5455 Reported by Richard Todd.
5456
ba40113e
KR
5457 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
5458 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
5459
298ab996
KR
5460 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
5461 traversing the args list, fixes segv if an improper list is given.
5462 Reported by Rouben Rostamian.
5463
aacff585
MV
54642004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5465
5466 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
5467 swap_data on stack, use a 'malloc obj'.
5468
5469 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
5470 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
5471 scm_i_... since they are internal. Changed all uses.
5472
5473 * dynwind.c (frame_print): Removed, use the default printer.
5474 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
5475 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
5476 to protect SCM values.
241d9cea 5477
aacff585
MV
5478 * dynwind.h (SCM_F_WIND_EXPLICITELY,
5479 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
5480 Changed all uses.
5481 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
241d9cea 5482
49c00ecc
MV
54832004-01-05 Marius Vollmer <mvo@zagadka.de>
5484
5485 * ports.h, ports.c (scm_with_current_input_port,
5486 scm_with_current_output_port, scm_with_current_error_port): New.
5487
5488 * async.h, async.c (scm_with_blocked_asyncs,
5489 scm_with_unblocked_asyncs): New.
5490
dab514a8
MV
54912004-01-03 Marius Vollmer <mvo@zagadka.de>
5492
5493 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
5494 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
5495 New.
5496 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
5497 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
5498 function when the outermost wind point has been reached. The
5499 latter is used to copy a continuation stack at the right time.
5500 scm_dowinds remains available.
5501 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
5502 tc16_guard, guards_print): Removed.
5503 (scm_internal_dynamic_wind): Reimplemented using frames.
5504
5505 * continuations.c (copy_stack): New, do only the stack copying
5506 part of copy_stack_and_call.
5507 (copy_stack_and_call): Copy the stack after unwinding and before
5508 rewinding.
5509 (scm_dynthrow): Do not call scm_dowinds, this is now done by
5510 copy_stack_and_call.
241d9cea 5511
441a25d9
KR
55122004-01-04 Kevin Ryde <user42@zip.com.au>
5513
5514 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 5515 can give bad results due to rounding.
241d9cea 5516
e0499207
KR
5517 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
5518 setzone/restorezone protection for DOS.
5519
89fcf1b4
MV
55202003-12-26 Marius Vollmer <mvo@zagadka.de>
5521
5522 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
5523 and scm_t_uintmax to be defined in scmconfig.h
5524
caff34d4
KR
55252003-12-03 Kevin Ryde <user42@zip.com.au>
5526
5527 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
5528
5529 * numbers.c (scm_make_ratio): Check for numerator equal to
5530 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
5531 giving integer -1.
5532
5533 * numbers.c (scm_real_part): Return fraction unchanged rather than
5534 converting to flonum.
5535
2d0b85ac
DH
55362003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5537
5538 * modules.c (module_variable): Fixed (and thus simplified) the
5539 definition of SCM_BOUND_THING_P to reflect the fact that since
5540 after the 1.4 series of guile, obarrays only hold variable
5541 objects.
5542
2297981d
MV
55432003-11-30 Marius Vollmer <mvo@zagadka.de>
5544
5545 * numbers.c (scm_logand): It's "#b...", not "#\b...".
5546
5547 From Paul Jarc:
5548
5549 * read.c (scm_lreadr): Signal an error for invalid escape
5550 sequences in strings. Code cleanups too.
5551
5552 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
5553 writing control characters in strings.
5554
55552003-11-21 Marius Vollmer <mvo@zagadka.de>
5556
5557 * ports.c (scm_drain_input): Bug fix: only access the port after
5558 checking that it indeed is one.
5559
5c264007
DH
55602003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5561
5562 * eval.c (s_bad_define): New static identifier.
5563
5564 (m_body): Fixed comment.
5565
5566 (scm_m_define): Don't generate memoized code for definitions that
5567 are not on the top level. As a consequence, no memoized code at
5568 all is generated for definitions any more: Top level definitions
5569 are executed immediately during memoization and internal
5570 definitions are handled separately in m_expand_body.
5571
5572 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
5573 definitions. Consequently, there is no unmemoizing code any more
5574 that might modify the environment. Thus, the old scm_unmemocopy
5575 is removed and the old unmemocopy is renamed to scm_unmemocopy.
5576
5577 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
5578 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
5579 over SCM_NIMP in places, where the argument is known to be part of
5580 a proper list.
5581
018d4730
KR
55822003-11-21 Kevin Ryde <user42@zip.com.au>
5583
5584 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
5585 for bignums.
5586
5587 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
5588 to share some shifting.
5589
5590 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
5591 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
5592 since gc does this.
5593
4bca30d8
MV
55942003-11-19 Marius Vollmer <mvo@zagadka.de>
5595
fb16d26e
MV
5596 * numbers.c (scm_make_ratio): Rewritten to have a simpler
5597 structure. Previously, not all cases with a negative denominator
5598 were covered.
5599
4bca30d8
MV
5600 * numbers.c (mem2decimal_from_point): use scm_divide instead of
5601 scm_divide2real when forming the fractional part. This allows
5602 "#e1.2" to yield 6/5.
5603
5604 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
5605 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
5606 fractions were equal to each other regardless of value. Ooops.
5607
5608 * numbers.c (scm_rationalize): Return an inexact result when given
5609 inexact arguments.
5610
5611 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
5612 non-numbers.
5613
bdf26b60
MV
56142003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5615
5616 Support for exact fractions from Bill Schottstaedt! Thanks!
241d9cea 5617
bdf26b60
MV
5618 * print.c (scm_iprin1): Handle fractions.
5619
5620 * objects.h (scm_class_fraction): New.
241d9cea 5621 * objects.c (scm_class_fraction): New.
bdf26b60 5622 (scm_class_of): Handle fractions.
241d9cea 5623
bdf26b60
MV
5624 * hash.c (scm_hasher): Handle fractions.
5625
5626 * numbers.c: New code for handling fraction all over the place.
5627 (scm_odd_p, scm_even_p): Handle inexact integers.
5628 (scm_rational_p): New function, same as scm_real_p.
5629 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
5630 New exact functions that replace the inexact 'dsubr'
5631 implementations.
5632 (scm_numerator, scm_denominator): New.
5633
5634 * numbers.h (SCM_NUMP): Recognize fractions.
5635 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5636 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5637 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5638 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5639 SCM_FRACTION_REDUCED): New.
5640 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5641 New prototypes.
5642 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5643 scm_rational_p): New prototypes.
5644 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5645 scm_i_print_fraction): New prototypes.
241d9cea 5646
bdf26b60
MV
5647 * goops.c (create_standard_classes): Create "<fraction>" class.
5648
5649 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5650
5651 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5652 case in the switch, but do nothing for now.
5653
5654 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5655 to doubles when calling 'dsubr' functions.
5656
5657 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5658
28fda544
RB
56592003-11-18 Rob Browning <rlb@defaultvalue.org>
5660
5661 * gen-scmconfig.c (main): remove public definition of
5662 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5663 direct typedef of long_long and ulong_long inside deprecated block
5664 when appropriate.
5665
5666 * deprecated.h: move long_long and ulong_long definitions to
5667 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5668 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5669
b58e7420
MV
56702003-11-17 Marius Vollmer <mvo@zagadka.de>
5671
9a1d7d7c
MV
5672 * hash.c (scm_string_hash): New hashing algorithm that takes the
5673 complete string into account.
5674
b58e7420
MV
5675 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5676 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
5677 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5678 SCM_ASSYNT.
b58e7420
MV
5679
5680 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5681 the "-e" option instead of scm_str2symbol. This allows things
5682 like (@ ...) to be specified for the entry point.
5683
461bffb1
DH
56842003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5685
5686 * eval.c (scm_m_letstar): Create memoized code in place to
5687 minimize consing.
5688
6f81708a
DH
56892003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5690
5691 * eval.c (s_splicing): Commented and reformulated.
5692
5693 (lookup_global_symbol, lookup_symbol): New static functions.
5694
5695 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5696
5697 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5698 creating a temporary pair for scm_lookupcar.
5699
5700 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5701 created deprecated wrapper function scm_unmemocar.
5702
5703 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5704 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5705 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5706 undefineds, sym_three_question_marks): Moved around without
5707 modifications.
5708
5709 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5710
910b5125
DH
57112003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5712
5713 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5714 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5715 No further modifications.
5716
c86c440b
DH
57172003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5718
5719 * eval.c (s_mixed_body_forms): New static identifier.
5720
5721 (canonicalize_define, scm_m_define): The check for a bad
5722 expression is performed in canonicalize_define now.
5723
5724 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5725 static helper functions for m_expand_body.
5726
5727 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5728 expand user defined macros. Fixed handling of the definition/
5729 expression boundary. Fixed handling of definitions grouped with
5730 'begin. Use canonicalize_define to expand definitions.
5731
3890131a
MV
57322003-11-13 Marius Vollmer <mvo@zagadka.de>
5733
b58e7420
MV
5734 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5735 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5736
5df36eac
MV
5737 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5738 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5739 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5740 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5741 New macros from Paul Jarc. Thanks!
5742
3890131a
MV
5743 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5744 return NULL when the machine type is unknown. Previously,
5745 gc_os_dep.c would refuse to compile.
5746
430b8401
DH
57472003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5748
5749 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5750 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5751 scm_m_body to m_body.
5752
328dc9a3
DH
57532003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5754
5755 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5756 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5757 scm_m_expand_body to m_expand_body and made it static. Added
5758 deprecated wrapper scm_m_expand_body.
5759
5760 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5761 of scm_m_expand_body.
5762
c2337a61
KR
57632003-11-09 Kevin Ryde <user42@zip.com.au>
5764
5765 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5766 argument. Reported by Mike Gran.
5767
ced8edb0
DH
57682003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5769
5770 * eval.c (s_missing_body_expression): New static identifier.
5771
5772 (s_body): Removed.
5773
5774 (scm_m_expand_body): Fixed core dump when passing a body with
5775 defines, but without expressions (see additions to syntax.test).
5776 Use ASSERT_SYNTAX to signal syntax errors.
5777
0f572ba7
DH
57782003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5779
5780 * eval.c (canonicalize_define): New static helper function.
5781
5782 (memoize_define, canonicalize_define): Extract handling of
5783 function currying to canonicalize_define.
5784
2510c810
DH
57852003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5786
5787 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5788 Make sure that error checking in debug mode is not worse than in
5789 standard mode.
5790
34adf7ea
DH
57912003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5792
5793 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5794 handled in scm_m_body any more, but rather in scm_m_lambda.
5795
5796 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5797 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5798 calling functions of scm_m_body.
5799
5800 (scm_m_lambda): Avoid unnecessary consing when creating the
5801 memoized code.
5802
89bff2fc
DH
58032003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5804
5805 * eval.c (s_expression): Added comment.
5806
5807 (s_empty_combination, error_unbound_variable): New static
5808 identifiers.
5809
5810 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5811 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5812 signal syntax errors.
5813
5814 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5815 scheme objects.
5816
60a49842
DH
58172003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5818
5819 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5820 Grouped together with unmemocopy, without modifications.
5821
5822 (build_binding_list, unmemocopy): Renamed names of list arguments
5823 and variables to reflect the actual order of the list elements.
5824
70c1c108
DH
58252003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5826
5827 * eval.c (s_defun): New static identifier.
5828
5829 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5830 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5831 when creating the memoized code.
5832
0ee39677
KR
58332003-10-19 Kevin Ryde <user42@zip.com.au>
5834
5835 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5836
5837 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5838 in accordance with R5RS, which just mpz_get_d doesn't really give.
5839
9a848baf
DH
58402003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5841
5842 * eval.c (s_bad_slot_number): New static identifier.
5843
5844 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5845 signal syntax errors. Avoid unnecessary consing when creating the
5846 memoized code.
5847
da48db62
DH
58482003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5849
5850 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5851 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5852 errors. Avoid unnecessary consing when creating the memoized
5853 code.
5854
5855 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5856 standard case. Make sure line and file information are copied to
5857 every created expression.
5858
82b3e2c6
DH
58592003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5860
5861 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5862 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5863 when creating the memoized code.
5864
5865 (scm_m_atbind): Reversed the order, in which the init expressions
5866 are stored and executed. The order of execution is now equal to
5867 the order in which the initializers of the let-forms are executed.
5868 Use check_bindings and transform_bindings.
5869
5870 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5871 !SCM_NULLP. Added some comments.
5872
21628685
DH
58732003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5874
5875 * eval.c: Sorted include files alphabetically.
5876
5877 (scm_m_begin): Added comment.
5878
5879 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5880 unnecessary consing when creating the memoized code.
5881
5882 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5883 syntax errors. Be more specific about the kind of error that was
5884 detected.
5885
5886 (scm_m_quote, unmemocopy): As an optimization, vector constants
5887 are now inserted unquoted into the memoized code. During
5888 unmemoization the quotes are added again to provide syntactically
5889 correct code.
5890
d6754c23
DH
58912003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5892
5893 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5894 scm_m_expand_body, check_bindings): Extracted syntax checking of
5895 bindings to new static function check_bindings.
5896
5897 (scm_m_let, memoize_named_let): Extracted handling of named let to
5898 new static function memoize_named_let.
5899
5900 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5901 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5902 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5903 unnecessary consing when creating the memoized code.
5904
03a3e941
DH
59052003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5906
5907 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5908 static identifiers.
5909
5910 (s_clauses, s_formals, s_duplicate_formals): Removed.
5911
5912 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5913 specific about the kind of error that was detected. Prepare for
5914 easier integration of changes for separated memoization.
5915
da48db62 59162003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
5917
5918 * eval.c (s_duplicate_binding): New static identifier.
5919
5920 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5921
5922 (scm_m_define): Added comment about how we check for duplicate
5923 formals.
5924
5925 (scm_m_do): Added check for duplicate bindings.
5926
5927 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5928 unnecessary consing when creating the memoized code.
5929
5930 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5931 scm_c_improper_memq to c_improper_memq, since it is not exported.
5932
5933 (transform_bindings): Call scm_c_memq rather than
5934 scm_c_improper_memq.
5935
5936 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5937
da48db62 59382003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
5939
5940 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5941 static identifiers.
5942
5943 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5944 specific about the kind of error that was detected. Avoid use of
5945 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5946 code, this way also making sure that file name, line number
5947 information etc. remain available.
5948
da48db62 59492003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
5950
5951 * eval.c (memoize_as_thunk_prototype): New static function.
5952
5953 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5954 Avoid unnecessary consing when creating the memoized code.
5955
9b9a35b6
KR
59562003-10-12 Kevin Ryde <user42@zip.com.au>
5957
5958 * list.c (scm_append): Track argument number and use in error.
5959
cc56ba80
DH
59602003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5961
5962 * eval.c (s_missing_expression, s_bad_variable): New static
5963 identifiers.
5964
5965 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5966 R5RS terminology for the naming of variables. Be more specific
5967 about the kind of error that was detected. Make sure file name,
5968 line number etc. are added to all freshly created expressions.
5969 Avoid unnecessary consing when creating the memoized code.
5970
609a8b86
DH
59712003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5972
5973 * eval.c (s_extra_expression, s_misplaced_else_clause,
5974 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5975
5976 (s_extra_case_clause): Removed.
5977
5978 (scm_m_case, scm_m_cond): If a clause appears after an else
5979 clause, report a misplaced else clause.
5980
5981 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5982 specific about the kind of error that was detected. Handle bound
5983 'else and '=>. Avoid unnecessary consing when creating the
5984 memoized code.
5985
5986 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5987 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5988 syntactic keyword '=>.
5989
58a2510b
DH
59902003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5991
5992 * eval.c (scm_m_case): Allow empty lists of case labels.
5993
2a6f7afe
DH
59942003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5995
5996 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
5997
5998 * print.c (scm_isymnames): Add names for the new memoizer codes.
5999
6000 * eval.c (s_missing_clauses, s_bad_case_clause,
6001 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
6002 literal_p): New static identifiers.
6003
6004 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
6005 specific about the kind of error that was detected. Check for
6006 duplicate case labels. Handle bound 'else. Avoid unnecessary
6007 consing when creating the memoized code.
6008
6009 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
6010 the syntactic keyword 'else.
6011
e6729603
DH
60122003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
6013
6014 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
6015 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
6016
6017 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
6018 unnecessary consing when creating the memoized code.
6019
9ddeb776
KR
60202003-10-09 Kevin Ryde <user42@zip.com.au>
6021
6022 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
6023 cast gives for values bigger than a long, or for nan or inf.
6024
df5af69a
DH
60252003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
6026
6027 * smob.h (scm_make_smob_type): Made the declaration match the
6028 definition.
6029
da0e6c2b
MV
60302003-10-07 Marius Vollmer <mvo@zagadka.de>
6031
6032 * goops.c, objects.h, smob.c, smob.h: Make type names char
6033 const * instead of char *. Thanks to Paul Jarc!
6034
591924eb
KR
60352003-10-02 Kevin Ryde <user42@zip.com.au>
6036
ff6ea7b9 6037 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
6038 rather than scm_strport_to_string, so as to guard against the port
6039 having been closed by the called procedure. Reported by Nic Ferrier.
6040
f03314f9
DH
60412003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6042
6043 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
6044
6045 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
6046 tags.h to deprecated.h.
6047
534c55a9
DH
60482003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6049
6050 This set of patches introduces a new tc7 code scm_tc7_number for
6051 numbers. Bignums, reals and complex numbers are turned from smobs
6052 into subtypes of scm_tc7_number.
6053
6054 * tags.h (scm_tc7_number): New.
6055
6056 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
6057 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
6058 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
6059 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
6060 (scm_class_of), print.c (scm_iprin1), smob.c
6061 (scm_smob_prehistory): Don't handle bignums, reals and complex
6062 numbers as subtypes of scm_tc7_smob any more.
6063
6064 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
6065 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
6066
29c4382a
DH
60672003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6068
6069 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
6070 sizeof (scm_t_complex) to determine the memory size of the
6071 malloc'd area for complex numbers.
6072
47ae1f0e
DH
60732003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6074
6075 * numbers.c (scm_bigequal): Fixed.
6076
859b6b2f
MV
60772003-09-16 Marius Vollmer <mvo@zagadka.de>
6078
6079 * stime.c (scm_current_time): 'time' does not set errno so don't
6080 use SCM_SYSERROR for reporting errors.
6081
e17d318f
DH
60822003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
6083
6084 This set of patches eliminates the dependency between the
6085 implementation of evaluator specific memoization codes and special
6086 constants like #f, '() etc. ('flags'), which are not evaluator
6087 specific. The goal is to remove definitions of evaluator
6088 memoization codes completely from the public interface. This will
6089 make it possible to experiment more freely with optimizations of
6090 guile's internal representation of memoized code.
6091
6092 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
6093
6094 * print.c (iflagnames): New array, holding the printed names of
6095 guile's special constants ('flags').
6096
6097 (scm_isymnames): Now holds only the printed names of the
6098 memoization codes.
6099
6100 (scm_iprin1): Separate the handling of memoization codes and
6101 guile's special constants.
6102
6103 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
6104 SCM_IFLAGNUM): new
6105
6106 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
6107 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
6108 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
6109 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
6110 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
6111 values.
6112
6113 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
6114
6115 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
6116 tc9 macros and scm_tc9_flag.
6117
eecac806
MV
61182003-09-15 Marius Vollmer <mvo@zagadka.de>
6119
6120 * posix.c (scm_setgroups): Check that the gid list is not too
6121 long. Thanks to Paul Jarc!
6122
22f2cf2d
DH
61232003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
6124
6125 * tags.h: Reduced the number of short instructions from 14 to 13.
6126 The typecode of the former 14th short instruction is now used to
6127 represent long instructions. Changed some comments to reflect
6128 this fact.
6129
6130 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
6131 previously used by SCM_IM_DEFINE.
6132
6133 (SCM_IM_DEFINE): Turned into a long instruction.
6134
6135 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
6136 instruction.
6137
6138 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
6139 code that is separate from all instructions, one level of dispatch
6140 for long instructions can be eliminated.
6141
6142 * print.c (scm_isymnames): Removed some commented code.
6143
62f548e1
MV
61442003-09-12 Marius Vollmer <mvo@zagadka.de>
6145
97a61c5f
MV
6146 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
6147 compiler on IA64.
6148
50e0ba57
MV
6149 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
6150
6151 * modules.c (scm_module_reverse_lookup): Check that the obarray
6152 really is a hashtable and do nothing if not.
6153
62f548e1
MV
6154 * inline.h: Use "extern inline" only with GCC. Use "static
6155 inline" else.
6156
0d5e3480
DH
61572003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6158
6159 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
6160 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6161
6162 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
6163 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
6164 deprecated.h.
6165
6b412e91
DH
61662003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6167
6168 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
6169 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6170
6171 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
6172 0.0==some_expression to some_expression==0.0. The latter is
6173 better readable. The former is preferred by some people, since it
6174 leads to a compiler error when confusing == with =. However, when
6175 using gcc, a warning will be issued if in an if-statement an
6176 assigment appears. Since many Guile developers are using gcc,
6177 such errors will not remain unnoticed anyway. We can therefore
6178 focus on better readability.
6179
7e3b25bf
DH
61802003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6181
6182 * tags.h: Added description of Guile's type system. Removed some
6183 old and misleading comments.
6184
3ea39242
DH
61852003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6186
6187 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
6188 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6189
5d7d39ff
DH
61902003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6191
6192 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
6193
6194 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
6195 respective SLOPPY macro.
6196
baa84a20
DH
61972003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6198
6199 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
6200 type string, not SCM_TYP7S.
6201
ba15f500
KR
62022003-09-03 Kevin Ryde <user42@zip.com.au>
6203
6204 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
6205 2s-complement.
6206
53bb8782
KR
6207 * stime.c (scm_strptime): Add comment about glibc strptime %s and
6208 current timezone requiring SCM_DEFER_INTS.
6209
defdc4b4
NJ
62102003-08-30 Neil Jerram <neil@ossau.uklinux.net>
6211
6212 * script.c (scm_compile_shell_switches): Make -s switch optional
6213 if file to be loaded does not begin with a `-'. (Thanks to Aaron
6214 VanDevender for the patch!)
6215
0f008a15
KR
62162003-08-30 Kevin Ryde <user42@zip.com.au>
6217
6218 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
6219 and to have non-integer types rejected as per other logical funcs.
241d9cea 6220
438a3ba1
KR
62212003-08-28 Kevin Ryde <user42@zip.com.au>
6222
6223 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
6224
98dceb37
KR
62252003-08-23 Kevin Ryde <user42@zip.com.au>
6226
6227 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
6228 thread safe, and could take a long time too.
6229
1fa79a38
KR
62302003-08-22 Kevin Ryde <user42@zip.com.au>
6231
6232 * numbers.c (scm_difference): Correction to bignum - negative inum.
6233
d97f9b42
KR
62342003-08-14 Kevin Ryde <user42@zip.com.au>
6235
6236 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
6237 [__GNUC__]: Use volatile asm macros rather than a function call.
6238 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
6239 macros while defining functions.
6240
6241 * simpos.c (getenv): Use <stdlib.h> for prototype.
6242 (scm_system): In docstring, refer to status:exit-val rather than
6243 "functions above".
6244
b9052fcc
KR
62452003-08-09 Kevin Ryde <user42@zip.com.au>
6246
6247 * srcprop.c (scm_source_properties): Return plist from hash if it's a
6248 list set by source-properties! rather than an SRCPROPS object,
6249
8e5b4b9e
KR
62502003-07-29 Kevin Ryde <user42@zip.com.au>
6251
6252 * properties.c (scm_primitive_property_ref): In docstring, note
6253 parameters to not-found-proc, use hyphens rather than underscores for
6254 that parameter name.
6255 (scm_primitive_property_set_x): In docstring, VAL is the value
6256 parameter not CODE.
241d9cea 6257
20703ac4
MV
62582003-07-27 Marius Vollmer <mvo@zagadka.de>
6259
c6ccee34
MV
6260 * print.c (scm_print_symbol_name): handle more weird characters by
6261 escaping the symbol name properly. Thanks to Paul Jarc!
6262
2f4931bf
MV
6263 * posix.h (scm_setgroups): New prototype.
6264 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
6265 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
6266 Don't use SCM_WRITABLE_VELTS.
241d9cea 6267
265c456f
MV
6268 * gc.h (SCM_GC_SET_CELL_BVEC): New.
6269 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
6270 Matthias Koeppe!
6271
20703ac4
MV
6272 * __scm.h (SCM_C_INLINE_KEYWORD): New.
6273 * numbers.c: Use it in place of SCM_C_INLINE so that the code
6274 compiles when SCM_C_INLINE is undefined.
6275
59c4bb82
DH
62762003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6277
6278 * __scm.h: Reformulated the architecture and compiler properties
6279 in terms of properties of scm_t_bits and SCM variables rather than
6280 in terms of c standard types. This is since it is not known which
6281 of the standard types scm_t_bits and SCM variables will be defined
6282 to.
6283
d7850c8d
KR
62842003-07-24 Kevin Ryde <user42@zip.com.au>
6285
6286 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
6287 and real.
6288
8a0c514f
KR
62892003-07-18 Kevin Ryde <user42@zip.com.au>
6290
6291 * numbers.c (scm_product): In complex * bignum, correction to
6292 REAL/IMAG fetch, x is the complex, not y.
6293
0aacf84e
MD
62942003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6295
6296 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
6297 scm_inf_p test as Scheme values.
6298 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
6299 and a positive inum.
6300 Use GNU indentation style.
6301
192de9a4
DH
63022003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6303
6304 * values.c (scm_values): Build lists of length 1 by using
6305 scm_list_1 instead of using scm_cons.
6306
bbb4438a
KR
63072003-07-10 Kevin Ryde <user42@zip.com.au>
6308
b58c85ce
KR
6309 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
6310 * list.c (scm_list_n): Ditto.
6311
bbb4438a
KR
6312 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
6313
287f8ad1
KR
63142003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
6315
6316 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
6317 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
6318 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
6319 the other using intptr_t.
6320
005d2366
KR
63212003-07-08 Kevin Ryde <user42@zip.com.au>
6322
0aacf84e 6323 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
6324 (scm_magnitude): Use hypot.
6325
6326 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
6327 @footnote since it doesn't go through to guile-procedures.txt.
6328
6329 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
6330 outside @var to quieten makeinfo, and use @code.
6331
cbfe8e62
HWN
63322003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6333
6334 * gc-malloc.c (decrease_mtrigger): new function
6335 (increase_mtrigger): new function, separate debug registering and
6336 mtrigger administration.
6337 (scm_gc_realloc): bugfix: do mtrigger administration before the
6338 actual realloc, for the realloc might invalidate a GC-d segment of
6339 memory. Thanks to Sam Hocevar for pointing this out.
6340 (scm_gc_realloc): use scm_malloc_reregister instead of
6341 unregistering and registering in sequence.
6342
aeb4c2e1
HWN
63432003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6344
241d9cea 6345 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
aeb4c2e1 6346
4c27f8d2
HWN
63472003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6348
6349 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
6350 clauses.
241d9cea 6351
983e697d
MV
63522003-06-29 Marius Vollmer <mvo@zagadka.de>
6353
6354 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
6355 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
6356 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
6357 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
6358 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
6359 the release_1_6 branch.
6360
78b6566e
SJ
63612003-06-25 Stefan Jahn <stefan@lkcc.org>
6362
6363 * continuations.c: Redeclaration of getcontext() via the
6364 __asm__ ("getcontext") directive.
6365
241d9cea 6366 * continuations.h: Include <ucontext.h> instead of
78b6566e
SJ
6367 <sys/ucontext.h>.
6368
1ebb8497
KR
63692003-06-21 Kevin Ryde <user42@zip.com.au>
6370
6371 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
6372 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
6373 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
6374 available.
6375 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
6376 (isfinite): Remove, conflicts with C99 isfinite().
6377
fbf85ba4
MV
63782003-06-19 Marius Vollmer <mvo@zagadka.de>
6379
6380 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
6381 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
6382 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
6383 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
6384 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
6385 the release_1_6 branch.
6386
fcc5d734
SJ
63872003-06-14 Stefan Jahn <stefan@lkcc.org>
6388
6389 * threads.h: Redefined scm_getspecific() and scm_setspecific()
6390 to be functions instead of macros.
6391
6392 * threads.c: Conditionalized inclusion of <sys/time.h> and
6393 <unistd.h>.
6394 (scm_getspecific, scm_setspecific): Made these two function
6395 real part of the API.
6396
241d9cea 6397 * posix.c (s_scm_putenv): Added some code to make a
fcc5d734
SJ
6398 (putenv "FOO="), i.e. setting an empty string, work also on
6399 Win32 systems. Thanks to Kevin Ryde for the proposal.
6400
c3ae8e07
KR
64012003-06-12 Kevin Ryde <user42@zip.com.au>
6402
75b14838
KR
6403 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
6404 freebsd to comment about need to use unsetenv.
c3ae8e07 6405
9d9fa092
MV
64062003-06-02 Marius Vollmer <mvo@zagadka.de>
6407
6408 * ports.c (scm_peek_char): Safe the column of the port around the
6409 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
6410
f2478375
KR
64112003-06-07 Kevin Ryde <user42@zip.com.au>
6412
6413 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
6414 and friends required by scm_t_bits setups.
6415
6375e040
DH
64162003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6417
6418 * tags.h (scm_tc2_int): Added.
6419
6420 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
6421 scm_tc2_int.
6422
6423 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
6424 scm_tcs_closures): Hard coded values replaced by symbolic ones.
6425
f5c6ec2f
DH
64262003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6427
6428 * eval.c: Partially undid my patch from 2003-05-31. This patch
6429 caused the segfault referenced in the previous changelog entry.
6430
47dbd81e
DH
64312003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6432
6433 * tags.h: Fixed comment about the immediate type code layout.
6434
6435 * eval.c: Fixed handling of non-special instructions. Without
6436 this patch, guile will segfault on (#\0) and similar instructions.
6437
3ec52c51
KR
64382003-06-05 Kevin Ryde <user42@zip.com.au>
6439
6440 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
6441 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
6442
e418bd7c
KR
6443 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
6444 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
241d9cea 6445
d0624e39
DH
64462003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6447
6448 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
6449 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
6450 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
6451 generalized it to apply not only to C level functions but also to
6452 scheme level functions.
6453
6454 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
6455 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
6456 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
6457 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
6458 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
6459 respectively.
6460
6461 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
6462 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
6463 eval.h into eval.c and a copy is placed into deprecated.h.
6464
6465 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
6466 into eval.c. This definition was not part of the API in any
6467 officially released version of guile and thus does not need to go
6468 through a phase of deprecation.
6469
e90c3a89
DH
64702003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
6471
d0624e39
DH
6472 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
6473 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
6474 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
6475 definitions are make static and renamed from scm_s_xxx to s_xxx.
6476 In deprecated.c the original definitions are copied.
6477
d0624e39
DH
6478 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
6479 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
6480 eval.h into eval.c and a copy (slightly modified to work in user
6481 code) is placed into deprecated.h.
6482
6483 * eval.c: Use the local static s_xxx definitions instead of the
6484 scm_s_xxx definitions throughout.
6485
14b18ed6
DH
64862003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6487
6488 This set of patches separates the representation of the cxr family
6489 of functions (car, cdr etc.) from the dsubr family of functions
6490 (i. e. functions that take a double precision floating point
6491 argument). Further, the algorithm for handling the cxr function
6492 is improved.
6493
6494 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
6495 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
6496 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
6497 cosh, tanh), objects.c (scm_class_of), procprop.c
6498 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
6499 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
6500 typecode for the dsubr family of functions.
6501
6502 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
6503 ramap_dsubr.
6504
6505 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
6506 (scm_init_pairs): Make use of the (now usable) second cell element
6507 of a scm_tc7_cxr function to implement the cxr family of functions
6508 more efficiently.
6509
2ca0d207
DH
65102003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6511
6512 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
6513 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
6514 end of an if-else-if-sequence of checks.
6515
9a069bdd
DH
65162003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6517
6518 * eval.c (SCM_CEVAL): Improved readability of call-with-values
6519 execution. Generalize apply_closure to apply_proc and use that
6520 for call-with-values.
6521
e910e9d2
DH
65222003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6523
6524 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
6525 a non closure.
6526
1e498fbd
SJ
65272003-05-30 Stefan Jahn <stefan@lkcc.org>
6528
241d9cea 6529 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
1e498fbd
SJ
6530 appropriately for mingw32 hosts.
6531
6532 * numbers.h: Defining copysign(), isnan() and finite() to
6533 be prefixed by a single '_' for mingw32 hosts.
6534
c47e2599
KR
65352003-05-30 Kevin Ryde <user42@zip.com.au>
6536
6537 * numbers.c (z_negative_one): New variable.
6538 (scm_init_numbers): Initialize it.
6539 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
6540
2e945bcc
SJ
65412003-05-29 Stefan Jahn <stefan@lkcc.org>
6542
6543 * win32-dirent.c: Use malloc() instead of scm_malloc().
6544
6545 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
6546 warning.
6547
6548 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
6549 mingw32 build.
6550
6551 * modules.c (s_scm_module_import_interface): Renamed local
6552 variable interface to _interface. Seems like 'interface'
6553 is a special compiler directive for the mingw32 compiler.
6554
6555 * mkstemp.c: Provide prototype to avoid compiler warning.
6556
6557 * load.c (s_scm_search_path): Fixed absolute and relative
6558 path detections for native Windows platforms.
6559
241d9cea 6560 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
2e945bcc
SJ
6561 to build on mingw32).
6562
241d9cea 6563 * gc-freelist.c ("s_scm_map_free_list",
2e945bcc
SJ
6564 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
6565
241d9cea 6566 * fports.c (fport_fill_input): Disable use of
2e945bcc
SJ
6567 fport_wait_for_input() on Win32 platforms.
6568
6569 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
6570
6571 * Makefile.am: Modified some rules for cross compiling.
6572
ddd8f927
DH
65732003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6574
6575 * eval.c (SCM_CEVAL): In case of an application, all checks for a
6576 proper function object and the correct number of arguments are now
6577 performed in the application part of SCM_CEVAL.
6578
6579 (scm_badformalsp): Removed.
6580
f8ba2197
DH
65812003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6582
6583 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
6584
79f55b7c
MD
65852003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6586
a502595f
MD
6587 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
6588 always being false by inserting preprocessor conditional. (Thanks
6589 to Bruce Korb.)
6590
79f55b7c
MD
6591 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
6592 (void *) in order to avoid an aliasing warning; thanks to Bruce
6593 Korb.)
6594
6595 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
6596
6597 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
6598 SCM_STACK_PTR.
6599
6600 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
6601 thread->base --> t->base.
6602
6603 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
6604
47dee228
MV
66052003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6606
6607 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
6608 scm_variable_set_name_hint, scm_builtin_variable,
6609 scm_internal_with_fluids, scm_make_gsubr,
6610 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
6611 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
6612 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
6613 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
6614 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
6615 scm_make_subr_with_generic, scm_make_subr_opt,
6616 scm_call_catching_errors, scm_make_smob_type_mfpe,
6617 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
6618 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
6619 branch. Some have been slightly rewritten.
6620 (scm_i_object_chars, scm_i_object_length): New, to support
6621 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
241d9cea 6622
e681d187
DH
66232003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6624
6625 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
6626 names and inits in the memoized code of do.
6627
7e59d9d4
MD
66282003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6629
6630 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
6631 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
6632 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6633 a compilation error if error-on-warning is enabled).
6634
9950a42c
MV
66352003-05-17 Marius Vollmer <mvo@zagadka.de>
6636
6637 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6638 removes preprocessor directives from the snarfage that might
6639 otherwise confuse us. These directives appear when compiling with
6640 "-g3", for example.
6641
0068984b
HWN
66422003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6643
26e68795
HWN
6644 * ChangeLog: add my surname
6645
0068984b
HWN
6646 * srcprop.c (scm_finish_srcprop): use
6647 scm_gc_register_collectable_memory()
6648 (scm_make_srcprops): idem.
6649
131805f0
HWN
66502003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6651
6652 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6653 wrap-around for scm_mtrigger
6654 (scm_gc_register_collectable_memory): abort on overflowing
6655 scm_mallocated().
6656
d4611024
KR
66572003-05-13 Kevin Ryde <user42@zip.com.au>
6658
6659 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6660 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6661
7aaf8dc9
MD
66622003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6663
dfd03fb9
MD
6664 * backtrace.c (scm_display_error_message): Introduced fancy
6665 printing with max level 7 and length 10. (Purpose: avoid printing
6666 gigantic objects in error messages.)
6667
6668 * print.c, print.h (scm_i_port_with_print_state): New function.
6669
6670 * print.c (scm_iprin1, scm_printer_apply,
6671 scm_port_with_print_state): Use scm_i_port_with_print_state.
6672 (scm_simple_format): Modified not to destroy print states.
6673 (print_state_mutex): New mutex.
6674 (scm_make_print_state, scm_free_print_state, scm_prin1):
6675 Lock/unlock print_state_mutex.
241d9cea 6676
7aaf8dc9
MD
6677 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6678 Use current names in definitions.
6679
a4d9ffa1
KR
66802003-05-10 Kevin Ryde <user42@zip.com.au>
6681
6682 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6683
d25e96a4
KR
6684 * numbers.c (scm_integer_length): On negative bignums, adjust
6685 mpz_sizeinbase to account for it looking at absolute value where we
6686 want ones-complement.
6687
6688 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6689 since we're only using the ulong return value, and x might not fit.
6690
5bf6a6f0
DH
66912003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6692
6693 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6694 read. This will allow to make the definition in read.c static.
6695
f58c472a
DH
66962003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6697
6698 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6699 from evalext to eval. This will allow to make some of the
6700 definitions in eval.c static.
6701
90382aeb
KR
67022003-05-06 Kevin Ryde <user42@zip.com.au>
6703
6704 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6705 (scm_logcount): Use mpz_com, not mpz_neg.
6706
3b88ed2a
DH
67072003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6708
6709 The purpose of this patch is to make guile's internal memoizers
6710 distinguishable from memoizing macros created on the scheme level
6711 or from user provided primitive memoizing macros. The reason is,
6712 that the internal memoizers are the only ones that are allowed to
6713 transform their scheme input into memoizer byte code, while all
6714 other memoizing macros may only transform scheme code into new
6715 scheme code.
6716
6717 To achieve this, a new macro type 'builtin-macro!' is introduced.
6718 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6719 this will change when the memoizer and executor are separated.
6720
6721 * macros.[ch] (scm_i_makbimacro): New.
6722
6723 * macros.h (SCM_BUILTIN_MACRO_P): New.
6724
6725 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6726
6727 * eval.c, goops.c: All of guile's primitive memoizing macros are
6728 primitive builtin-macros now.
6729
6730 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6731 builtin-macros are handled equally to memoizing macros.
6732
b0780eb1
MV
67332003-05-04 Marius Vollmer <mvo@zagadka.de>
6734
6735 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6736 work around a bug in GCC 2.95.2 but is now a bug in itself.
6737
1cbf4fe9
MV
67382003-05-02 Marius Vollmer <mvo@zagadka.de>
6739
6740 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6741 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6742 scm_tcs_symbols): New.
6743
1a61d41b
MV
67442003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6745
096ecbaf
MV
6746 * deprecated.h, deprecated.c (scm_protect_object,
6747 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6748 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6749 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6750 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6751 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6752 scm_ptob_descriptor, scm_port_rw_active,
6753 scm_close_all_ports_except): New.
6754
1a61d41b
MV
6755 * ports.c (scm_c_port_for_each): New function, mostly copied from
6756 scm_port_for_each.
6757 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6758 * ports.h (scm_c_port_for_each): New prototype.
241d9cea 6759
c8e1d354
MD
67602003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6761
6762 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6763 macro was introduced in anticipation of GOOPS method compilation
6764 code.)
6765
6766 * goops.c: Removed binding of @dispatch.
6767
a4aa2134
DH
67682003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6769
6770 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6771 instructions that bind the macros on the scheme level back to
6772 goops.c in order to make sure again that the bindings go into the
6773 (oop goops) module and are not visible from the outside.
6774
9fbee57e
DH
67752003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6776
6777 * eval.c: Non functional change: Separated R5RS and non-R5RS
6778 macros into different sections of the file and ordered the
6779 memoizers alphabetically.
6780
12841895
DH
67812003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6782
6783 * eval.c (scm_ilookup): Rewritten to improve readability.
6784
6a3f13f0
DH
67852003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6786
6787 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6788 Partially reverted patch from 2003-04-23 in oder to find a better
6789 compromise between readability and debuggability.
6790
b0c5d67b
DH
67912003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6792
6793 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6794 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6795 definitions of the special goops memoizers from goops.[ch] to
6796 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6797 throughout guile.
6798
b9ad392e
MD
67992003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6800
6801 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6802
6803 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6804
6805 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6806
6807 * ioext.c (scm_fdes_to_ports): Ditto.
6808
6809 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6810 lock/unlock scm_i_port_table_mutex.
6811
6812 * strports.c (scm_mkstrport): Ditto.
6813
6814 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6815
6816 * fports.c (scm_fdes_to_port): Ditto.
6817
d0b07b5d
DH
68182003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6819
6820 This set of patches contains no functional changes, only debatable
6821 minor stylistic ones. Still, in order to prepare a patch between
6822 my local copy and the CVS version, I decided to submit the changes
6823 below. Then, the patch will hopefully only contain relevant
6824 modifications :-)
6825
6826 * eval.c (iqq): Added const specifier.
6827
6828 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6829 Use NULL instead of 0 to indicate that a pointer is returned.
6830 Removed some misleading 'fall through' comments.
6831
6832 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6833 Split up long expressions into smaller ones to be more debugging
6834 friendly.
6835
a98e8e98
DH
68362003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6837
6838 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6839 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6840 rather than casting to SCM.
6841
c178c3a6
DH
68422003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6843
6844 * sort.c, pairs.h: Removed unnecessary includes.
6845
d339981a
DH
68462003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6847
6848 * sort.c: Replaced hand-made trampline code by the new official
6849 mechanism from eval.c. This fixes a segfault in the new test file
6850 sort.test.
6851
6852 (quicksort, compare_function, scm_restricted_vector_sort_x,
6853 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6854 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6855 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6856 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6857 eval.c.
6858
6859 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6860 cmp_fun_t): Removed.
6861
6862 (compare_function): Added.
6863
6864 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6865 arithmetics with index arithmetics. Changed quicksort to work on
6866 an array of SCM values instead of an array of characters. Avoid
6867 bytewise copying of SCM elements. Avoid allocating memory on the
6868 stack with alloca. Fixed some comments.
6869
821f18a4
DH
68702003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6871
6872 * eval.c (EXTEND_ENV): Eliminated.
6873
6874 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6875 EXTEND_ENV.
6876
94fb5a6e
DH
68772003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6878
6879 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6880
6881 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6882 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6883
6884 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6885 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6886 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6887 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6888 functions such that they check if the object is a non-immediate.
6889 Further, renamed identifiers to use the scm_dbg_ prefix and made
6890 their inclusion into the lib dependent of the
6891 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6892
fce0b22d
DH
68932003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6894
6895 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6896 debug option.
6897
1685446c
DH
68982003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6899
821f18a4 6900 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
6901 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6902 any calls to SCM_NCONSP any more.
6903
6904 * unif.c (l2ra): Eliminate redundant check.
6905
9ff1720f
DH
69062003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6907
6908 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6909 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6910 SCM_NNULLP. Now, guile itself does not include any calls to
6911 SCM_NNULLP any more.
6912
05b15362
DH
69132003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6914
6915 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6916 scm_copy_tree): Place assignment expressions which are part of
6917 other expressions into an expression of their own.
6918
0c88d7df
DH
69192003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6920
6921 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6922 compare SCM values with !=.
6923
5cb22e96
DH
69242003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6925
6926 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6927 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6928 and definition of the memoizer for the generalized set! macro from
6929 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6930 define the macro object.
6931
6932 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6933 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6934 eval.c, it is made static and renamed to s_set_x.
6935
6936 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6937 over SCM_N<foo>.
6938
a44a9715
DH
69392003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6940
6941 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6942 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6943 to undefineds and registered the object as a permanent object.
6944
6945 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6946 static in eval.c, renamed it to f_apply and registered the object
6947 as a permanent object.
6948
1b43d24c
DH
69492003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6950
5cb22e96 6951 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
6952 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6953
aec16f99
DH
69542003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6955
6956 * numbers.c (scm_logtest): Fixed argument bug in the call to
6957 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6958
f96460ce
DH
69592003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6960
6961 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6962 type errors that showed up when compiling with SCM_DEBUG defined.
6963
d0f6ceb8
DH
69642003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6965
6966 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6967 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6968 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6969 fix compile errors with --disable-deprecated.
6970
19a7a089
RB
69712003-04-17 Rob Browning <rlb@defaultvalue.org>
6972
6973 * numbers.c (scm_integer_expt): fix case where we were declaring
6974 vars in the middle of a statement block. Thanks to Thamer
6975 Al-Harbash.
6976
47cd67db
MD
69772003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6978
0fd7dcd3
MD
6979 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6980 change.
6981
47cd67db
MD
6982 * eq.c (scm_eqv_p): Turned into a primitive generic.
6983
3b8b889c
RB
69842003-04-16 Rob Browning <rlb@defaultvalue.org>
6985
312006bb
RB
6986 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6987 Thanks to Boyd Gerber.
6988 Added check for __arm__ in addition to arm for LINUX and copied
6989 __s390__ defines from upstream libgc. Thanks to James Treacy for
6990 reporting the problems.
c7ef2ea1 6991
3b8b889c
RB
6992 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
6993
6994 * socket.c: use SCM_CHAR_BIT.
6995
6996 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
6997
6998 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
6999
43261b39
MD
70002003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7001
7002 * feature.c (scm_init_feature): Always add threads feature.
7003
58241edc
MD
70042003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7005
7006 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
7007 scm_at_assert_bound_ref. (We don't want the unbound check. See
7008 oop/goops/active-slot.scm.)
7009
94e91275
RB
70102003-04-14 Rob Browning <rlb@defaultvalue.org>
7011
7012 * tags.h: scm_t_intptr should have been intptr_t.
7013
3071ea27
RB
70142003-04-13 Rob Browning <rlb@defaultvalue.org>
7015
7016 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
7017 test. Instead use
7018 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
7019 as gc_os_dep.c suggests is appropriate.
7020
7021 * goops.c (prep_hashsets): make static to match prototype.
7022 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
7023 Chin.
241d9cea 7024
3071ea27
RB
7025 * c-tokenize.lex: remove trailing comma from enum. Thanks to
7026 Albert Chin.
7027
7028 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
7029 Klausner.
7030
21ab2aeb
MD
70312003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7032
7033 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
7034 indicated through extra fields in getters-n-setters.
7035 (scm_add_slot): Adapted to new format of getters_n_setters slot.
7036 (Thanks to Andy Wingo.)
7037
dff96e95
HWN
70382003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7039
7040 * gc-segment.c: add comment
7041
07921c76
RB
70422003-04-07 Rob Browning <rlb@defaultvalue.org>
7043
b5331f10
RB
7044 * debug.h: change "id" arg name to "info_id" to avoid objective-c
7045 clash.
7046
07921c76
RB
7047 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
7048 and add regression test to standalone/.
7049
70502003-04-06 Rob Browning <rlb@defaultvalue.org>
7051
7052 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
7053 Thanks to Dale P. Smith.
7054
7055 * random.c: #include gmp.h.
7056 (scm_c_random_bignum): normalize result on return.
7057
7058 * init.c: #include gmp.h.
7059
7060 * numbers.h: remove the gmp.h #include (not needed now).
7061
7062 * posix.h: change occurences of "id" to something else so we don't
7063 cause trouble when included via objective-c (can't hurt, might
7064 help). Still have usage in debug.h, though.
7065
938f6b7c
MD
70662003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7067
372691d8
MD
7068 * random.c (scm_c_random_bignum): Don't generate a random number
7069 equal to m (the second argument of scm_c_random_bignum); only
7070 generate numbers in the range 0 <= r < m.
c5f268f8
MD
7071 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
7072 scm_var_random_state.
372691d8 7073
938f6b7c
MD
7074 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
7075 clause.
7076
6cdb8c3f
RB
70772003-04-05 Rob Browning <rlb@defaultvalue.org>
7078
938f6b7c 7079 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
7080 uses before any code.
7081
15635be5
MD
70822003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7083
1ecfd013
MD
7084 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
7085 not top_srcdir.
7086
15635be5
MD
7087 * hashtab.c (rehash_after_gc): Clear to_rehash list before
7088 processing it in order to avoid an infinite loop.
7089
7090 * print.c (scm_prin1): Remember old state of pstate->writingp.
7091
73be1d9e
MV
70922003-04-05 Marius Vollmer <mvo@zagadka.de>
7093
7094 * Changed license terms to the plain LGPL thru-out.
7095
ad815c06
RB
70962003-04-04 Rob Browning <rlb@defaultvalue.org>
7097
7098 * socket.c (FLIPCPY_NET_HOST_128): new macro.
7099 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
7100 rewrite to handle GMP bignums.
7101
7102
7103 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
7104
7105 * ports.c (scm_getc): minor tweak.
7106
7107 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
7108 rewrite to handle GMP bignums.
7109
7110 * numbers.c: rewrite *many* functions to handle GMP bignums.
7111
7112 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
7113 handle GMP bignums.
7114
7115 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
7116
7117 * init.c (check_config): remove SCM_BIGDIG conditionals.
7118 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
7119
7120 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
7121
7122 * eval.c: remove SCM_BIGDIG conditionals.
7123
7124 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
7125
6cdb8c3f
RB
71262003-03-31 Rob Browning <rlb@defaultvalue.org>
7127
7128 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
7129 to Kevin Ryde.)
7130
71312003-03-27 Rob Browning <rlb@defaultvalue.org>
7132
7133 * threads.h: fix various preprocessor usages of new public
7134 symbols to expect 0 or 1 values rather than 1 or undefined.
7135 i.e. change #ifdef to #if, etc.
7136
7137 * threads.c: fix various preprocessor usages of new public
7138 symbols to expect 0 or 1 values rather than 1 or undefined.
7139 i.e. change #ifdef to #if, etc.
7140
7141 * tags.h: fix various preprocessor usages of new public
7142 symbols to expect 0 or 1 values rather than 1 or undefined.
7143 i.e. change #ifdef to #if, etc.
7144
7145 * stacks.c: fix various preprocessor usages of new public
7146 symbols to expect 0 or 1 values rather than 1 or undefined.
7147 i.e. change #ifdef to #if, etc.
7148
7149 * stackchk.h: fix various preprocessor usages of new public
7150 symbols to expect 0 or 1 values rather than 1 or undefined.
7151 i.e. change #ifdef to #if, etc.
7152
7153 * stackchk.c: fix various preprocessor usages of new public
7154 symbols to expect 0 or 1 values rather than 1 or undefined.
7155 i.e. change #ifdef to #if, etc.
7156
7157 * sort.c: fix various preprocessor usages of new public
7158 symbols to expect 0 or 1 values rather than 1 or undefined.
7159 i.e. change #ifdef to #if, etc.
7160
7161 * read.c: fix various preprocessor usages of new public
7162 symbols to expect 0 or 1 values rather than 1 or undefined.
7163 i.e. change #ifdef to #if, etc.
7164
7165 * random.c: fix various preprocessor usages of new public
7166 symbols to expect 0 or 1 values rather than 1 or undefined.
7167 i.e. change #ifdef to #if, etc.
7168
7169 * print.c: fix various preprocessor usages of new public
7170 symbols to expect 0 or 1 values rather than 1 or undefined.
7171 i.e. change #ifdef to #if, etc.
7172
7173 * objects.c: fix various preprocessor usages of new public
7174 symbols to expect 0 or 1 values rather than 1 or undefined.
7175 i.e. change #ifdef to #if, etc.
7176
7177 * numbers.h: fix various preprocessor usages of new public
7178 symbols to expect 0 or 1 values rather than 1 or undefined.
7179 i.e. change #ifdef to #if, etc.
7180
7181 * null-threads.c: fix various preprocessor usages of new public
7182 symbols to expect 0 or 1 values rather than 1 or undefined.
7183 i.e. change #ifdef to #if, etc.
7184
7185 * lang.c: fix various preprocessor usages of new public
7186 symbols to expect 0 or 1 values rather than 1 or undefined.
7187 i.e. change #ifdef to #if, etc.
7188
7189 * lang.h: fix various preprocessor usages of new public
7190 symbols to expect 0 or 1 values rather than 1 or undefined.
7191 i.e. change #ifdef to #if, etc.
7192
7193 * iselect.h: fix various preprocessor usages of new public
7194 symbols to expect 0 or 1 values rather than 1 or undefined.
7195 i.e. change #ifdef to #if, etc.
7196
7197 * init.c: fix various preprocessor usages of new public
7198 symbols to expect 0 or 1 values rather than 1 or undefined.
7199 i.e. change #ifdef to #if, etc.
7200
7201 * gh_data.c: fix various preprocessor usages of new public
7202 symbols to expect 0 or 1 values rather than 1 or undefined.
7203 i.e. change #ifdef to #if, etc.
7204
7205 * gh.h: fix various preprocessor usages of new public
7206 symbols to expect 0 or 1 values rather than 1 or undefined.
7207 i.e. change #ifdef to #if, etc.
7208
7209 * gen-scmconfig.c: change most new public symbols to be defined to
7210 0 or 1 rather than being either 1 or undefined.
7211
7212 * gc_os_dep.c: fix various preprocessor usages of new public
7213 symbols to expect 0 or 1 values rather than 1 or undefined.
7214 i.e. change #ifdef to #if, etc.
7215 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
7216
7217 * gc.h: fix various preprocessor usages of new public
7218 symbols to expect 0 or 1 values rather than 1 or undefined.
7219 i.e. change #ifdef to #if, etc.
7220
7221 * gc-card.c: fix various preprocessor usages of new public
7222 symbols to expect 0 or 1 values rather than 1 or undefined.
7223 i.e. change #ifdef to #if, etc.
7224
7225 * gc-mark.c: fix various preprocessor usages of new public
7226 symbols to expect 0 or 1 values rather than 1 or undefined.
7227 i.e. change #ifdef to #if, etc.
7228
7229 * feature.c: fix various preprocessor usages of new public
7230 symbols to expect 0 or 1 values rather than 1 or undefined.
7231 i.e. change #ifdef to #if, etc.
7232
7233 * evalext.c: fix various preprocessor usages of new public
7234 symbols to expect 0 or 1 values rather than 1 or undefined.
7235 i.e. change #ifdef to #if, etc.
7236
7237 * eval.h: fix various preprocessor usages of new public
7238 symbols to expect 0 or 1 values rather than 1 or undefined.
7239 i.e. change #ifdef to #if, etc.
7240
7241 * eval.c: fix various preprocessor usages of new public
7242 symbols to expect 0 or 1 values rather than 1 or undefined.
7243 i.e. change #ifdef to #if, etc.
7244
7245 * eq.c: fix various preprocessor usages of new public
7246 symbols to expect 0 or 1 values rather than 1 or undefined.
7247 i.e. change #ifdef to #if, etc.
7248
7249 * coop.c: fix various preprocessor usages of new public
7250 symbols to expect 0 or 1 values rather than 1 or undefined.
7251 i.e. change #ifdef to #if, etc.
7252
7253 * coop-threads.c: fix various preprocessor usages of new public
7254 symbols to expect 0 or 1 values rather than 1 or undefined.
7255 i.e. change #ifdef to #if, etc.
7256
7257 * coop-pthreads.c: fix various preprocessor usages of new public
7258 symbols to expect 0 or 1 values rather than 1 or undefined.
7259 i.e. change #ifdef to #if, etc.
7260
7261 * coop-defs.h: fix various preprocessor usages of new public
7262 symbols to expect 0 or 1 values rather than 1 or undefined.
7263 i.e. change #ifdef to #if, etc.
7264
7265 * convert.i.c: fix various preprocessor usages of new public
7266 symbols to expect 0 or 1 values rather than 1 or undefined.
7267 i.e. change #ifdef to #if, etc.
7268
7269 * continuations.c: fix various preprocessor usages of new public
7270 symbols to expect 0 or 1 values rather than 1 or undefined.
7271 i.e. change #ifdef to #if, etc.
7272
7273 * _scm.h: fix various preprocessor usages of new public symbols to
7274 expect 0 or 1 values rather than 1 or undefined. i.e. change
7275 #ifdef to #if, etc.
7276
d11d697a
MV
72772003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7278
9686f86d
MV
7279 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
7280
7281 * deprecated.c, deprecated.h: New files, to collect deprecated
7282 things in one place.
7283 * Makefile.am: Added them in all the right places.
7284
d11d697a
MV
7285 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
7286 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
7287 builds work.
9686f86d
MV
7288 (DOT_X_FILES): Removed "iselect.x".
7289 (DOT_DOC_FILES): Removed "iselect.doc".
241d9cea 7290
e3c0c3b9
RB
72912003-03-25 Rob Browning <rlb@defaultvalue.org>
7292
7293 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
7294 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
7295
7296 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
7297
7298 * vports.c: #include <config.h> if HAVE_CONFIG_H.
7299
7300 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
7301 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7302
7303 * threads.h: replace usage of struct timespect with
7304 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
7305 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
7306 favor of scm_t_timespec from scmconfig.h.
7307
7308 * threads.c: move libguile/_scm.h include to the top so we pick up
7309 any critical defines like _GNU_SOURCE early. Replace usage of
7310 struct timespect with scm_t_timespec. Replace usage of
7311 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
7312 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
7313
7314 * threads-plugin.h: replace usage of struct timespect with
7315 scm_t_timespec.
7316
7317 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
7318 usage of struct timespect with scm_t_timespec.
7319
7320 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
7321 HAVE_INTTYPES_H handling to scmconfig.h. #include
7322 "libguile/__scm.h". Rework handling for scm_t_bits,
7323 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
7324 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
7325 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
7326 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
7327 SCM_HAVE_ARRAYS.
7328
7329 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
7330
7331 * struct.c: #include <config.h> if HAVE_CONFIG_H.
7332
7333 * strports.c: #include <config.h> if HAVE_CONFIG_H.
7334
7335 * strop.c: #include <config.h> if HAVE_CONFIG_H.
7336
7337 * stime.h: move handling of time related headers to scmconfig.h.
7338
7339 * stime.c: #include <config.h> if HAVE_CONFIG_H.
7340
7341 * stacks.c: replace usage of STACK_GROWS_UP with
7342 SCM_STACK_GROWS_UP.
7343
7344 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7345 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7346
7347 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7348 of uint32 and HAVE_UINT_32 with scm_t_int32.
7349
7350 * smob.c: #include <config.h> if HAVE_CONFIG_H.
7351
7352 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
7353
7354 * script.c: #include <config.h> if HAVE_CONFIG_H.
7355
7356 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
7357
7358 * scmconfig.h.top: new file -- preamble for scmconfig.h.
7359
7360 * rw.c: #include <config.h> if HAVE_CONFIG_H.
7361
7362 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
7363
7364 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7365
7366 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
7367
7368 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7369 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
7370 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
7371 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7372
7373 * ramap.c: replace usage of HAVE_LONG_LONGS with
7374 "SCM_SIZEOF_LONG_LONG != 0".
7375
7376 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
7377 "libguile/scmconfig.h".
7378
7379 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
7380
7381 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7382 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7383
7384 * posix.c: #include <config.h> if HAVE_CONFIG_H.
7385
7386 * ports.c: #include <config.h> if HAVE_CONFIG_H.
7387
7388 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7389
7390 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
7391 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
7392 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
7393 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
7394 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
7395 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
7396 "SCM_SIZEOF_LONG_LONG != 0".
7397
7398 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7399 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
7400 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
7401 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
7402
7403 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
7404
7405 * null-threads.h: replace usage of struct timespect with
7406 scm_t_timespec.
7407
7408 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
7409
7410 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
7411 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
7412 scm_t_uint64 and rename usages.
7413
7414 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
7415
7416 * load.c: #include <config.h> if HAVE_CONFIG_H.
7417
7418 * iselect.h: move handling of time related headers to scmconfig.h.
7419 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
7420 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
7421 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
7422
7423 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7424 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7425 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7426
7427 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
7428
7429 * inline.h: #include "libguile/__scm.h" at the top. Change code
7430 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
7431 what to do instead of creating a new public #define. Rename usage
7432 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7433 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
7434 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
7435
7436 * inline.c: rearrange handling -- now we just #define
7437 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
7438 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
7439 appropriate, and we use that in inline.h along with the above
7440 define to determine how to respond.
7441
7442 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7443 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7444
7445 * guile.c: #include <config.h> if HAVE_CONFIG_H.
7446
7447 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7448 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7449
7450 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7451
7452 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
7453
7454 * gen-scmconfig.c: new file -- see comments in file for details.
7455
7456 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
7457
7458 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
7459 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7460
7461 * gc.h: replace usage of SIZEOF_LONG with
7462 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
7463 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
7464 since we handle that in scmconfig.h now.
7465
7466 * gc.c: #include <config.h> if HAVE_CONFIG_H.
7467
7468 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7469 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
7470 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7471
7472 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
7473
7474 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7475 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7476
7477 * fports.c: #include <config.h> if HAVE_CONFIG_H.
7478
7479 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
7480
7481 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7482 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7483
7484 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
7485
7486 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7487 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7488
7489 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
7490 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
7491 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7492 with "SCM_SIZEOF_LONG_LONG != 0".
7493
7494 * error.c: #include <config.h> if HAVE_CONFIG_H.
7495
7496 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7497 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7498 with "SCM_SIZEOF_LONG_LONG != 0".
7499
7500 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
7501
7502 * coop.c: replace usage of struct timespect with scm_t_timespec.
7503 #include <config.h> if HAVE_CONFIG_H.
7504
7505 * coop-threads.c: #include "libguile/_scm.h" early. Replace
7506 usage of struct timespect with scm_t_timespec. Replace usage of
7507 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7508
7509 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
7510 usage of struct timespect with scm_t_timespec. Replace usage of
7511 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7512
7513 * coop-defs.h: move handling of time related headers to
7514 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
7515 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
7516 timespect with scm_t_timespec.
7517
7518 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7519
7520 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7521
7522 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7523 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7524
7525 * continuations.c: move libguile/_scm.h include to the top so we
7526 pick up any critical defines like _GNU_SOURCE early.
7527
7528 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
7529
7530 * async.c: #include <config.h> if HAVE_CONFIG_H.
7531
7532 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
7533
7534 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
7535 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
7536
7537 * __scm.h: move libguile/scmconfig.h include up to the top, so
7538 we're sure to pick up any critical defines like _GNU_SOURCE early.
7539 #include <limits.h> removed in favor of scmconfig.h inclusion when
7540 appropriate. STDC_HEADERS based inclusion of stdlib.h,
7541 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
7542 scmconfig.h inclusion when appropriate. Various Win32 related
7543 definitions removed in favor of scmconfig.h inclusion when
7544 appropriate.
7545 (HAVE_UINTPTR_T): definition removed (see NEWS).
7546 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
7547 (HAVE_LONG_LONGS): definition removed (see NEWS).
7548 (HAVE_LONG_LONG): definition removed (see NEWS).
7549 (HAVE_PTRDIFF_T): definition removed (see NEWS).
7550
7551 * Makefile.am: scmconfig.h is now generated by building and
7552 running gen-scmconfig.h and capturing its output. gen-scmconfig
7553 uses config.h and the configure.in generated gen-scmconfig.h to
7554 decide what to output. See gen-scmconfig.c for details.
7555 (noinst_PROGRAMS): add gen-scmconfig.
7556 (gen_scmconfig_SOURCES): new variable.
7557 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
7558 cross-compiling right.
7559 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
7560 (BUILT_SOURCES): add scmconfig.h.
7561
25e0bf97
MV
75622003-03-19 Marius Vollmer <mvo@zagadka.de>
7563
7564 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
7565 Adrian Bunk. Thanks!
7566
74b6d6e4
MD
75672003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7568
7569 * goops.c (make_class_from_template): New fourth arg:
7570 applicablep.
7571 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
7572 cpls.
7573
7574 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
7575
7576 * goops.c, objects.c, objects.h (scm_make_extended_class): New
7577 second arg: applicablep.
7578 (scm_i_inherit_applicable): New function.
7579
7580 * goops.c, goops.h (scm_class_applicable,
7581 scm_class_extended_accessor): New classes.
7582
5c9e7dad
DH
75832003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7584
7585 * procs.c (scm_procedure_documentation): Removed redundant
7586 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
7587 predicates.
7588
f8af5c6d
MD
75892003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7590
c614a00b
MD
7591 * list.c, list.h (scm_filter, scm_filter_x): New functions.
7592
109c2c9f
MD
7593 * modules.c (scm_module_import_interface): New function.
7594
f8af5c6d
MD
7595 * goops.c, goops.h (scm_class_accessor_method): Renamed from
7596 scm_class_accessor.
7597 (scm_class_accessor): New class.
7598
a48d60b1
MD
75992003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7600
7601 * goops.c (scm_primitive_generic_generic): Enable primitive
7602 generic if not enabled.
7603 (scm_sys_goops_loaded): Setup unextended primitive generics.
7604
7605 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
7606
7607 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
7608 snarf macros.
7609
7610 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
7611 testing example. All uses of SCM_GPROC should be converted.)
7612
7613 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
7614 scm_assoc.
7615
7616 * eq.c (scm_equal_p): Turned into a primitive generic.
7617
84edc049
RB
76182003-02-27 Rob Browning <rlb@defaultvalue.org>
7619
7620 * Makefile.am (scmconfig.h): new target -- generate file from
7621 ../config.h.
7622 (modinclude_HEADERS): remove version.h.
7623 (nodist_modinclude_HEADERS): add version.h.
7624
ea5c9285
MD
76252003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7626
b4a1358c
MD
7627 This fixes a serious GC bug, introduced during the latest
7628 reorganization of the GC, which disabled freeing of structs and
7629 GOOPS objects:
7630
7631 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
7632 SCM_EOL.
53af8255
MD
7633 (scm_struct_prehistory): Move scm_free_structs to
7634 scm_before_mark_c_hook.
ea5c9285 7635
b4a1358c
MD
7636 * gc-card.c (sweep_card): Check that we haven't swept structs on
7637 this card before. That can happen if scm_i_sweep_all_segments has
7638 been called from some other place than scm_igc.
7639
c35738c1
MD
76402003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7641
231a4ea8
MD
7642 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7643 (since hash tables now adapt their size).
7644
7645 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7646 (current number of prehistory bindings; hashtable code will select
7647 a prime which is greater than this value).
7648
7649 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7650 (current number of initial symbols).
7651
7652 * properties.c (scm_init_properties): Don't specify size of
7653 scm_properties_whash.
7654
7655 * objprop.c (scm_init_objprop): Don't specify size of
7656 scm_object_whash.
7657
7658 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7659
c35738c1
MD
7660 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7661
7662 The following changes introduce the use of resizable hash tables
7663 throughout Guile. It also renames the old *-hash-table* functions
7664 to *-alist-vector* and places them, together with the rest of the
7665 weak vector support, in the module (ice-9 weak-vector). We should
7666 probably introduce a new, better, API for weak references, for
7667 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7668 look like and are used like ordinary pairs.)
7669
7670 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7671 leaf_environment_fold, obarray_remove_all): Use hashtable
7672 accessors.
7673
7674 * gc.c (scm_init_storage): Moved hook initialization to
7675 scm_storage_prehistory.
7676 (scm_storage_prehistory): New function.
7677 (scm_igc): Added commentary about placement of
7678 scm_after_sweep_c_hook.
7679
7680 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7681 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7682 SCM_WVECT_WEAK_VALUE_P.
7683
7684 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7685 functions.
7686 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7687 Removed.
7688 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7689 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7690
7691 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7692 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7693
7694 * modules.c (module-reverse-lookup): Use hashtable accessors.
7695
7696 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7697
7698 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7699 scm_make_weak_value_alist_vector,
7700 scm_make_doubly_weak_alist_vector): New functions.
7701
7702 * weaks.c (scm_init_weaks_builtins): New function.
7703
7704 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7705 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7706 SCM_WVECT_NOSCAN_P): New macros.
7707
7708 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7709 and SCM_WVECT_WEAK_VALUE_P.
7710
7711 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7712 allocate_weak_vector and exported.
7713
0a4c1355
MD
77142003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7715
7716 * hashtab.c: Undid thread safety. (We decided that it's better to
7717 let the user explicitly protect the tables (or not) according what
7718 is suitable for the application.)
7719
87ca11ff
MD
77202003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7721
7722 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7723 thread safe and handle resizing tables.
7724 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7725 SCM_DEFER/ALLOW_INTS.
7726
f59a096e
MD
77272003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7728
7729 * hashtab.c (scm_vector_to_hash_table,
7730 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7731 functions.
7732 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7733 safe and handle resizing tables.
7734
7735 * weaks.c (scm_make_weak_key_hash_table,
7736 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7737 Size argument made optional. Return resizable table if not
7738 specified.
7739
4b612c5b
MD
77402003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7741
7742 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7743 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7744
b3d7f6df
MD
77452003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7746
7747 * debug.c (scm_procedure_source): Handle all objects for which
7748 procedure? is #t. (Thanks to Bill Schottstaedt.)
7749
756414cf
MD
77502003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7751
361d631f
MD
7752 * futures.c (mark_futures): Don't need to mark data of recycled
7753 futures.
7754 (scan_futures, cleanup_undead): Be smarter about marking
7755 futures---avoid unnecessary passes through future lists.
7756
756414cf
MD
7757 * futures.h, futures.c: New files; Introduced recycling of
7758 futures. For fine-grained threading this lifts performance to
7759 another level. We can now use parallelization in inner loops of
7760 Guile programs without impossible overhead.
7761
7762 * threads.h, threads.c: Moved futures to their own file.
7763
7764 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7765 (DOT_X_FILES): Added futures.x.
7766 (DOT_DOC_FILES): Added futures.doc.
7767 (modinclude_HEADERS): Added futures.h.
7768
7769 * threads.c, threads.h (scm_i_create_thread): Renamed from
7770 create_thread and made global.
7771
7772 * futures.c (scm_make_future): New procedure.
7773
7774 * eval.c: #include "libguile/futures.h".
7775
7776 * init.c: #include "futures.h"
7777 (scm_init_guile_1): Call scm_init_futures.
7778
7779 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7780
7781 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7782
7783 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7784 functions.
7785
7786 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7787
b4debead
MD
77882003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7789
7790 * threads.c (create_thread): Don't unwind dynwind chain of parent
7791 thread before creation. Just start the new thread with an empty
7792 dynwind chain.
7793
93f26b7b
MD
77942003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7795
7796 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7797
38d8927c
MD
77982003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7799
41c96c32
MD
7800 * threads.c (scm_timed_wait_condition_variable): Support timed
7801 waiting also for simple condition variables.
7802
38d8927c
MD
7803 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7804 of calling the procedure change-object-class.
7805
9cf5d9b7
MD
78062003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7807
7808 * ramap.c (scm_ramapc): Typo in error message.
7809
bbf8d523
MD
78102003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7811
b46fae00
MD
7812 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7813 slots with instance allocation.
241d9cea 7814
bbf8d523
MD
7815 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7816 class.
7817 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7818
7819 * goops.c (scm_generic_function_methods): Support extended
7820 generic functions.
7821
ebf9b47c
MD
78222002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7823
7824 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 7825 Thanks to Neil for pointing this out!
ebf9b47c 7826
14a9ba3f
NJ
78272002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7828
7829 * lang.h: Remove declarations matching definitions removed from
7830 lang.c (just below).
7831
c6a040a8
NJ
78322002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7833
6054d805
NJ
7834 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7835 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7836 and already commented out.
7837
c6a040a8
NJ
7838 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7839 scm_lreadparen): Support reading vectors with Elisp syntax if
7840 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7841 is not currently defined, and there isn't even a configure switch
7842 to enable it yet.)
7843
3742c12f
MV
78442002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7845
7846 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7847 builds work.
7848 (EXTRA_DIST): Added version.h.in.
241d9cea 7849
fb50ef08
MD
78502002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7851
7852 This change makes it possible for one thread to do lazy sweeping
7853 while other threads are running. Now only the mark phase need to
7854 have all threads asleep. We should look further into this issue.
7855 Presently, I've put the locking of scm_i_sweep_mutex at
7856 "conservative" places due to my current lack of knowledge about
7857 the garbage collector. Please feel free to restrict these regions
7858 further to allow for maximal parallelism!
7859
7860 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7861
7862 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7863 scm_gc_register_collectable_memory): Substitute locking of
7864 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7865 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7866 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7867 the single-thread section (which now only contains the mark
7868 phase).
7869 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7870 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7871
7872 * threads.c (gc_section_mutex): Removed.
7873
9ed24633
MD
78742002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7875
0d48aca5
MD
7876 * threads.c (create_thread): Clear parent field in root state in
7877 order not to unnecessarily remember dead threads.
7878
9ed24633
MD
7879 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7880 (scm_trampoline_1, scm_trampoline_2): Use them.
7881
29717c89
MD
78822002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7883
7884 Partial introduction of real plugin interface.
7885
7886 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7887 (EXTRA_DIST): Added threads-plugin.c.
7888
7889 * threads-plugin.h, threads-plugin.c: New files.
7890
7891 * threads.h: #include "libguile/threads-plugin.h".
7892
7893 * threads.c: #include "libguile/threads-plugin.c".
7894
7895 * pthread-threads.c: Temporarily remove debugging functions.
7896
7897 * threads.c, threads.h (scm_yield): Added back.
7898
e29e0b09
MD
78992002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7900
7901 * threads.c (really_launch): Detach before unlocking
7902 thread_admin_mutex in order not to risk being joined.
7903 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7904 thread_admin_mutex locked during GC.
7905
7906 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7907 functions.
7908
0b6843b1 79092002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 7910
6da2dfc4
MD
7911 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7912 support for debugging mutex operations.
7913
1b92fb6b
MD
7914 * threads.c (scm_thread): Removed filed joining_threads.
7915 (thread_print): Print thread number as well as address of thread
7916 structure.
0b6843b1
MD
7917 (scm_join_thread): Bugfix.
7918 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7919 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7920 scm_broadcast_condition_variable): Use the low-level API.
7921 (scm_all_threads): Return copy of thread list (to prevent
7922 unintended destruction).
7923 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 7924
93cd4dcd
MD
7925 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7926 pthread "native" recursive mutex support.
7927
2ff4f181
MD
79282002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7929
28d52ebb
MD
7930 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7931 Simply lock a thread C API recursive mutex.
7932 (SCM_NONREC_CRITICAL_SECTION_START,
7933 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7934 SCM_REC_CRITICAL_SECTION_END): Removed.
7935
7936 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7937 direct calls to scm_rec_mutex_lock / unlock around the three calls
7938 to scm_m_expand_body.
7939
7940 * eval.c, eval.h (promise_free): New function.
7941 (scm_force): Rewritten; Now thread-safe; Removed
7942 SCM_DEFER/ALLOW_INTS.
7943
7944 * pthread-threads.h: Added partially implemented plugin interface
7945 for recursive mutexes. These are, for now, only intended to be
7946 used internally within the Guile implementation.
7947
7948 * pthread-threads.c: New file.
7949
7950 * threads.c: Conditionally #include "pthread-threads.c".
7951
7952 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7953 thread-safe;
7954
7955 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7956 SCM_GLOBAL_REC_MUTEX): New macros.
7957
7958 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7959 macros---use mutexes instead.
7960
7961 * tags.h (SCM_IM_FUTURE): New tag.
7962
7963 * eval.c (scm_m_future): New primitive macro.
7964 (SCM_CEVAL): Support futures.
7965 (unmemocopy): Support unmemoization of futures.
7966
7967 * print.c (scm_isymnames): Name of future isym.
7968
2ff4f181
MD
7969 * version.c: Unmade some changes to my private copy that got
7970 committed by mistake.
7971
392d2833
MD
79722002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7973
e200ddee
MD
7974 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7975 2002-12-10.
7976
392d2833
MD
7977 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7978
7979 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7980 logical place.
7981
7982 * threads.c (create_thread): Remember root object until the handle
7983 of the new thread is on all_threads list.
7984
7985 * root.c (scm_make_root): Moved copying of fluids until after
7986 creation of root handle so that the fluids are GC protected. Also
7987 removed the critical section.
7988
c4c52ebe
MD
79892002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7990
960c408c
MD
7991 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
7992
3cdde9d6 7993 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 7994 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
7995 (scm_realloc): Serialize call to realloc
7996 (scm_calloc): Same for calloc.
7997 Thanks to Wolfgang Jaehrling!
7998 (Now we have to make sure all calls to malloc/realloc are made
7999 through scm_malloc.)
8000
960c408c
MD
8001 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
8002
c4c52ebe
MD
8003 * threads.c (really_launch): Release heap (to prevent deadlock).
8004 (create_thread): Release heap before locking thread admin mutex.
8005
b0dc3d71
MD
80062002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8007
8008 * threads.c (scm_i_thread_invalidate_freelists): New
8009 function.
8010
8011 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
8012
8013 * modules.c (scm_export): Inserted a return statement.
8014
06e80f59
HWN
80152002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8016
8017 * modules.c (scm_export): new function
8018
8019 * gc-card.c: add a note about malloc()/free() overhead.
8020
a12611c3
MD
80212002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8022
8023 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
8024 in srcdir.
8025
c7fabadf
MD
80262002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8027
8028 These changes remove scm_ints_disabled (which hasn't has any
8029 effect in Guile for quite some time).
241d9cea 8030
c7fabadf
MD
8031 * async.c, error.h (scm_ints_disabled): Removed.
8032
8033 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
8034 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
8035 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
8036 (old_ints): Removed.
8037
8038 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
8039 critical section.
8040 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
8041 SCM_ALLOW_INTS.
8042
9bc4701c
MD
80432002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8044
52340b65
MD
8045 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
8046 Removed accidental #if 0 around these functions.
8047
9bc4701c
MD
8048 These changes are the start of support for preemptive
8049 multithreading. Marius and I have agreed that I commit this code
8050 into the repository although it isn't thoroughly tested and surely
8051 introduces many bugs. The bugs should only be exposed when using
8052 threads, though. Signalling and error handling for threads is
8053 very likely broken. Work on making the implementation cleaner and
8054 more efficient is needed.
241d9cea 8055
9bc4701c
MD
8056 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
8057 (SCM_NONREC_CRITICAL_SECTION_START,
8058 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
8059 SCM_REC_CRITICAL_SECTION_END): New macros.
8060 (SCM_CRITICAL_SECTION_START/END): Defined here.
8061
8062 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
8063 the three calls to scm_m_expand_body.
8064
8065 * gc.h: #include "libguile/pthread-threads.h";
8066 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
8067
8068 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
8069 scm_t_key;
8070
8071 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
8072 access.
8073
8074 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
8075
8076 * gc-freelist.c, threads.c (really_launch): Use
8077 SCM_FREELIST_CREATE.
8078
8079 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
8080
8081 * gc.c (scm_i_expensive_validation_check, scm_gc,
8082 scm_gc_for_newcell): Put threads to sleep before doing GC-related
8083 heap administration so that those pieces of code are executed
8084 single-threaded. We might consider rewriting these code sections
8085 in terms of a "call_gc_code_singly_threaded" construct instead of
8086 calling the pair of scm_i_thread_put_to_sleep () and
8087 scm_i_thread_wake_up (). Also, we would want to have as many of
8088 these sections eleminated.
8089
8090 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
8091
8092 * inline.h: #include "libguile/threads.h"
8093
8094 * pthread-threads.h: Macros now conform more closely to the
8095 pthreads interface. Some of them now take a second argument.
8096
8097 * threads.c, threads.h: Many changes.
8098
80992002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8100
8101 * Makefile.am (version.h): Changed $^ --> $< in rule for
8102 version.h.
241d9cea 8103
b2cbe8d8
RB
81042002-12-08 Rob Browning <rlb@defaultvalue.org>
8105
8106 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
8107 (SCM_MINOR_VERSION): use @--@ substitution now.
8108 (SCM_MICRO_VERSION): use @--@ substitution now.
8109 (scm_effective_version): new function prototype.
8110
8111 * version.c (scm_effective_version): new function, also add
8112 effective-version.
8113
8114 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
8115 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
8116 SCM_LIBRARY_DIR.
8117 (version.h): generate this here rather than configure.in. This
8118 approach tracks source edits better (i.e. more immediately).
8119 Might be worth considering for other .in files too.
8120
5441c65c
MV
81212002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
8122
8123 Reorganized thread package selection. A thread package now only
8124 implements a small set of pthread like functions and Guile
8125 implements the rest on top of that. Guile's implementation is
8126 what the "coop-pthreads" package has been previously. Support for
8127 "coop" threads has been removed until I get time to add it again.
241d9cea 8128
5441c65c
MV
8129 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
8130 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
8131 null-threads.c, coop-pthreads.c.
8132 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
8133 pthread-threads.h.
241d9cea 8134
5441c65c
MV
8135 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
8136
8137 * threads.h: Do not include "libguile/coop-defs.h". Include
8138 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
8139 (previously deprecated) C level thread API prototypes. They are
8140 now in the thread package specific headers, "null-threads.h" and
8141 "pthread-threads.h".
8142 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
8143 New.
8144 (scm_threads_init): Removed.
8145 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
8146 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
8147 SCM_I_THREAD_SWITCH_COUNT): Define here.
8148 (scm_single_thread_p): Removed.
8149 (scm_call_with_new_thread): Take two args directly instead of list
8150 of two args.
8151 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
8152 SCM_SET_THREAD_LOCAL_DATA): Define here.
8153
8154 * threads.c: Merged with "coop-pthreads.c".
8155
8156 * null-threads.h: Implement pthread-like API as a set of macros.
8157
8158 * pthread-threads.h: New, implement pthread-like API by deferring
8159 to pthread itself.
241d9cea 8160
5441c65c
MV
8161 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
8162 has been lost in the reorganization.
8163
504d99c5
MD
81642002-12-01 Mikael Djurfeldt <mdj@linnaeus>
8165
8166 The following change makes it possible to move procedure
8167 application dispatch outside inner loops. The motivation was
8168 clean implementation of efficient replacements of R5RS primitives
8169 in SRFI-1.
8170
8171 The semantics is clear: scm_trampoline_N returns an optimized
8172 version of scm_call_N (or NULL if the procedure isn't applicable
8173 on N args).
8174
8175 Applying the optimization to map and for-each increases efficiency
8176 noticeably. For example, (map abs ls) is 8 times faster than
8177 before.
8178
8179 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
8180
8181 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
8182
8183 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
8184 (map, for-each): Handle also application on two args as a special
8185 case; Use trampolines.
8186
8187 Other changes:
241d9cea 8188
504d99c5
MD
8189 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
8190 (subr2oless): Removed.
8191 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
8192 vector GC protected.
8193
8194 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
8195 scm_out_of_range.
8196
63dd3413
DH
81972002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8198
8199 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
8200
4ba5f279
MD
82012002-11-17 Mikael Djurfeldt <mdj@linnaeus>
8202
8203 * debug.c (scm_make_iloc): Added missing "return".
8204
56ae231f
MV
82052002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
8206
8207 * strports.c (scm_eval_string_in_module): Validate second arg to
8208 be a module. Thanks to Arno Peters!
8209
80b28865
DH
82102002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8211
8212 * .cvsignore: remove goops.c
8213
c88b1456
DH
82142002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8215
8216 * modules.c (scm_env_top_level, scm_lookup_closure_module,
8217 module_variable, scm_module_lookup_closure,
8218 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
8219 scm_system_module_env_p): Don't compare SCM values with C
8220 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
8221 over SCM_NFALSEP.
8222
a8a19efc
DH
82232002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8224
8225 * eval.h (SCM_MAKE_ILOC): New macro.
8226
8227 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
8228 the iloc bitpattern here.
8229
76734914
MD
82302002-11-14 Mikael Djurfeldt <mdj@linnaeus>
8231
8232 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
8233 part of the API, otherwise it's difficult to write Guile
8234 extensions using non-blocking I/O => moved #include
8235 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
8236
8237 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
8238 s_unlock_mutex.
8239
8b5b4a75
MV
82402002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
8241
8242 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
8243 are defined in configure.in.
8244
8245 * threads.c: Removed SCM_API from function definitions. SCM_API
8246 is only for declarations.
8247
e5a83084
MD
82482002-11-07 Mikael Djurfeldt <mdj@linnaeus>
8249
9be8bb45
MD
8250 * coop-pthreads.h: Added support for thread specific data to the
8251 generic C API for the coop-pthreads case.
8252
e5a83084
MD
8253 * threads.c, threads.h (scm_cond_init): Undo unintentional API
8254 change.
6c214b62 8255 (scm_cond_broadcast): Added missing function.
e5a83084 8256
7edf178e
MV
82572002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8258
8259 * coop.c (coop_next_runnable_thread): Removed, wich should have
8260 happened when GUILE_ISELECT was hard-wired.
8261
7f5b1b77
MV
82622002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
8263
7caa1b07
MV
8264 * Makefile.am (libguile_la_SOURCES): Added threads.c
8265 (DOT_DOC_FILES): Added threads.doc.
8266 (DOT_X_FILES): Added threads.x.
8267 (EXTRA_libguile_la_SOURCES): Removed threads.c.
8268 (noinst_HEADERS): Added coop-pthreads.c.
8269 (modinclude_HEADERS): Added coop-pthreads.h.
8270
8271 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
8272 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
8273
bb11cbf4
MV
8274 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
8275 Thanks to Bill Schottstaedt!
8276
1d4cbbed
MV
8277 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
8278
7f5b1b77
MV
8279 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
8280 SCM_COPT_THREADS is defined.
8281 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
8282 is defined.
241d9cea 8283
7f5b1b77
MV
8284 * coop-pthreads.c: Some harmless renamings of internal stuff.
8285 (create_thread): New, generalized version of
8286 scm_call_with_new_thread.
8287 (scm_call_with_new_thread): Use it.
8288 (scm_spawn_thread): New, use create_thread.
241d9cea 8289
d52f53b1
MV
82902002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
8291
8292 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
8293 start testing it now.
8294
8295 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
8296 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
8297 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
8298 is defined.
8299
30f920c3
MV
83002002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
8301
8302 * scmsigs.c (signal_cell_handlers, install_handler_data,
8303 scm_delq_spine_x, really_install_handler, install_handler): New
8304 scheme for triggering signal handlers, to simplify take_signal.
8305 (take_signal): Simplified, to avoid race conditions.
8306 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
8307 hasn't exited yet.
241d9cea 8308
30f920c3
MV
8309 * async.c (scm_async_click): Reset pending_asyncs, handle
8310 signal_asyncs. Don't set cdr of a non-signal async to #f.
8311 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
8312 always. Set pending_asyncs.
8313 (scm_system_async_mark_for_thread): Check that thread has not
8314 exited.
8315 (scm_unmask_signals, decrease_block): Call scm_async_click after
8316 block_asyncs becomes zero.
241d9cea 8317
30f920c3
MV
8318 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
8319 active_asyncs.
8320
8321 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
8322 fields.
8323 * root.c (root_mark): Mark them.
8324 (make_root): Initialize them.
241d9cea 8325
30f920c3
MV
8326 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
8327 USE_COOP_THREADS.
8328 (scm_internal_select): Define one version for USE_COOP_THREADS and
8329 one for USE_NULL_THREADS.
8330 (scm_init_iselect): Likewise.
241d9cea 8331
30f920c3
MV
8332 * inline.h (scm_cell, scm_double_cell): Also allow
8333 USE_COPT_THREADS to not protect the slot initializers.
241d9cea 8334
30f920c3
MV
8335 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
8336 because threads need to be initialized before the stack, but
8337 gsubrs such as scm_timed_condition_variable_wait can only be
8338 created later.
8339
8340 * threads.h: Include "coop-pthreads.h" when requested.
8341 (scm_threads_make_mutex, scm_threads_lock_mutex,
8342 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
8343 not implemented anyway.
8344 (scm_init_thread_procs, scm_try_mutex,
8345 scm_timed_condition_variable_wait,
8346 scm_broadcast_condition_variable, scm_c_thread_exited_p,
8347 scm_thread_exited_p): New prototypes.
8348 (struct timespec): Define if not already defined.
8349 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8350 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8351 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8352 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
8353 deprecated.
8354
8355 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
8356 requested.
8357 (scm_thread_exited_p): New.
8358 (scm_try_mutex, scm_broadcast_condition_variable): Newly
8359 registered procedures.
8360 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
8361 Use the latter as the procedure for "wait-condition-variable",
8362 thus offering a optional timeout parameter to Scheme.
8363 (scm_wait_condition_variable): Implement in terms of
8364 scm_timed_wait_condition_variable.
8365 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8366 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
8367 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8368 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
8369 scm_make_mutex, etc, and deprecate.
8370 (scm_init_threads): Do not create smobs, leave this to
8371 scm_threads_init. Do not include "threads.x" file.
8372 (scm_init_thread_procs): New, include "threads.x" here.
8373
8374 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
8375 scm_null_mutex_lock, scm_null_mutex_unlock,
8376 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
8377 scm_null_condvar_wait, scm_null_condvar_signal,
8378 scm_null_condvar_destroy): Removed.
8379 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
8380 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
8381 scm_cond_destory): Do not define, they are now deprecated and
8382 handled by threads.{h,c}.
241d9cea 8383
30f920c3
MV
8384 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
8385 (scm_threads_init): Create smobs here, using the appropriate
8386 sizes.
8387 (block): Removed, now unused.
8388 (scm_c_thread_exited_p): New.
8389 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
8390 scm_null_mutex_destroy, scm_null_condvar_init,
8391 scm_null_condvar_wait, scm_null_condvar_signal,
8392 scm_null_condvar_destroy): Removed and updated users to do their
8393 task directly.
8394 (scm_try_mutex, timeval_subtract,
8395 scm_timed_wait_condition_variable,
8396 scm_broadcast_condition_variable): New.
8397 (scm_wait_condition_variable): Removed.
8398
8399 * coop-defs.h (coop_m): Added 'level' field.
8400 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8401 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8402 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8403 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
8404 define.
8405 (coop_condition_variable_broadcast): New.
8406
8407 * coop-threads.c (scm_threads_init): Create smobs here, using the
8408 appropriate sizes.
8409 (scm_c_thread_exited_p, scm_try_mutex,
8410 scm_timed_wait_condition_variable,
8411 scm_broadcast_condition_variable): New.
8412 (scm_wait_condition_variable): Removed.
8413
8414 * coop.c (coop_new_mutex_init): Initialize level.
8415 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
8416 level.
8417 (coop_condition_variable_signal): Renamed to
8418 coop_condition_variable_broadcast and reimplemented in terms of
8419 that. Thus...
8420 (coop_condition_variable_broadcast): New.
8421
8422 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
8423
8424 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
241d9cea 8425
087ed40d
MV
84262002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
8427
65a23095
MV
8428 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
8429 of system headers.
8430
087ed40d
MV
8431 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
8432 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 8433 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 8434
5ec1d2c8
DH
84352002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8436
8437 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
8438 scm_definedp to scm_defined_p and deprecated scm_definedp.
8439
100ae50d
DH
84402002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8441
8442 * async.h, async.c (scm_system_async): Fixed deprecation to work
8443 correctly when deprecated features are excluded.
8444
2794cb50
MV
84452002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8446
8447 * async.c (scm_system_async_mark_for_thread): Validate thread
8448 argument.
8449
8450 * coop-threads.c (scm_i_thread_root): Do not validate argument.
8451
8452 * feature.c (scm_init_feature): Don't add 'threads' for
8453 USE_NULL_THREADS.
8454
8455 * inline.h (scm_cell, scm_double_cell): Also allow
8456 USE_NULL_THREADS to not protect the slot initializers.
8457
8458 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
8459 "USE_THREAD".
8460
8461 * Makefile.am (noinst_HEADERS): Added null-threads.c.
8462 (modinclude_HEADERS): Added null-threads.h.
8463
8464 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
8465 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
8466 (scm_init_threads): Use generic type names scm_t_mutex and
8467 scm_t_cond instead of coop_m and coop_c.
8468
8469 * null-threads.c, null-threads.h: New files.
8470
ff810d7a
MV
84712002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
8472
8473 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
8474 This is to support makes that know about "$<" only in pattern
8475 rules, like Sun's make.
8476
a90bdb73
MV
84772002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
8478
8479 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
8480 substitution. Thanks to David Allouche!
8481
e71a8bf2
DH
84822002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8483
8484 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
8485 !SCM_ENABLE_DEPRECATED.
8486
41f77ff5
MV
84872002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8488
504d99c5 8489 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
8490 scm_i_thread_root when USE_THREADS is defined. Use scm_root
8491 otherwise.
8492
8493 * scmsigs.c (take_signal): Only call scm_i_thread_root when
8494 USE_THREADS is defined. Use scm_root otherwise.
8495 (scm_sigaction_for_thread): Ignore THREAD argument when
8496 USE_THREADS is not defined. Also, move THREAD argument defaulting
8497 out of HAVE_SIGACTION section, which was a bug.
8498
6d16b125
MV
84992002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8500
8501 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
8502 signal_handlers, not the closure that is used as the async.
8503 The closure is stored in signal_handler_cells, as previously.
241d9cea 8504
acfa1f52
MV
85052002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
8506
8507 * root.h (scm_root_state): Added 'block_async' slot.
8508 (scm_active_asyncs): Removed abbrev.
8509 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
8510
8511 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
8512 abbrev.
8513
8514 * async.h (scm_call_with_blocked_asyncs,
8515 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8516 scm_c_call_with_unblocked_asyncs): New prototypes.
8517 (scm_mask_signals, scm_unmask_signals): Deprecated.
8518 (scm_mask_ints): Turned into a macro.
8519 * async.c (scm_mask_ints): Removed.
8520 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
8521 this should not be necessary.
8522 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
8523 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
8524 deprecation warning and check for errornous use. Set block_asyncs
8525 instead of scm_mask_ints.
8526 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
8527 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8528 scm_c_call_with_unblocked_asyncs): New.
241d9cea 8529
acfa1f52
MV
8530 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
8531 Asyncs are enabled by default.
8532
34010f56
NJ
85332002-10-09 Neil Jerram <neil@ossau.uklinux.net>
8534
8535 * vports.c (scm_make_soft_port): Allow vector argument to carry a
8536 6th element: an input waiting thunk.
8537 (sf_input_waiting): New.
8538
9310d6f2
MV
85392002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
8540
8541 * root.c (root_mark): Mark active_asyncs slot.
8542
8543 * async.c (scm_async_click): Set the cdr of a executed handler
8544 cell to SCM_BOOL_F, not SCM_EOL.
8545 (scm_i_queue_async_cell): Queue the cell at the end of the list,
8546 and only if the handler procedure is not already present.
8547 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
8548 with SCM_BOOL_F.
8549 * scmsigs.c (scm_sigaction_for_thread): Likewise.
241d9cea 8550
ac48c719
RB
85512002-10-04 Rob Browning <rlb@defaultvalue.org>
8552
1360a142
RB
8553 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
8554
8555 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
8556 scm_lt_dlopenext, and scm_lt_dlerror.
8557 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
8558 and scm_lt_dlerror.
8559 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
8560 and scm_lt_dlerror.
8561 (sysdep_dynl_init): switch to scm_lt_dlinit();
8562
8563 * Makefile.am (libguile_la_LIBADD): switch to use
8564 libguile-ltdl.la.
8565
504d99c5 8566 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 8567
497092c9
MV
85682002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
8569
8570 * scmsigs.h (scm_sigaction_for_thread): New prototype.
8571 * scmsigs.c (got_signal): Removed.
8572 (signal_handler_cells, signal_handler_threads): New.
8573 (take_signal): Queue the cell of the signal for the specified
8574 thread. Reset the signal handler on systems that don't have
8575 sigaction.
8576 (sys_deliver_signals): Removed.
8577 (close_1): New.
8578 (scm_sigaction_for_thread): Renamed from scm_sigaction and
8579 extended to also set the thread of a signal and allocate a cell
8580 for it. Keep the Scheme name "sigaction". Check that signum is
8581 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
8582 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
8583 (scm_init_scmsigs): Allocate signal_handler_cells and
8584 signal_handler_threads vectors.
8585
8586 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
8587 that system asnycs and user asyncs are separated. Reimplemented
8588 system asyncs to work per-thread.
8589
8590 * gc.c (scm_init_gc): Do not use scm_system_async.
8591
8592 * async.h (scm_asyncs_pending, scm_set_tick_rate,
8593 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
8594 Removed prototypes.
8595 (scm_i_queue_async_cell): New.
241d9cea 8596
497092c9
MV
8597 * __scm.h (scm_asyncs_pending_p): Removed.
8598 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
8599 scm_asyncs_pending_p.
8600
8601 * async.h (scm_system_async_mark_for_thread): New prototype.
8602
8603 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
8604
8605 * root.h (scm_root_state): Added new "active_asyncs" slot.
8606 * root.c (scm_make_root): Initialize it to SCM_EOL.
8607
8608 * coop-defs.h (coop_t): Added new "handle" slot.
8609 * coop-threads.c (all_threads, scm_current_thread,
8610 scm_all_threads, scm_i_thread_root): New.
8611 (scm_threads_init): Add main thread to all_threads.
8612 (scheme_launch_thread): Remove thread from all_threads when it
8613 terminates.
8614 (scm_call_with_new_thread): Initialize handle slot of coop_t
8615 structure and add new thread to all_threads.
8616 (scm_spawn_thread): Likewise.
8617
8618 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
8619 * threads.c (scm_current_thread, scm_all_threads): Register as
8620 primitives.
8621
8622 * dynl.c: Use scm_lt_ prefix for libltdl functions.
8623
480fa28d
NJ
86242002-09-29 Neil Jerram <neil@ossau.uklinux.net>
8625
8626 * script.c (scm_compile_shell_switches): Fix bad spelling of
8627 `explicitly' in comment.
8628
86292002-09-28 Neil Jerram <neil@ossau.uklinux.net>
8630
8631 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
8632 Refer to provided? in doc string rather than deprecated feature?.
8633
3553e1d1
GH
86342002-09-24 Gary Houston <ghouston@arglist.com>
8635
8636 * inline.h (scm_double_cell): prevent reordering of statements
8637 with any following code (for GCC 3 strict-aliasing).
8638 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8639 the earlier version of the reordering prevention.
8640
4ad0814a
HWN
86412002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8642
241d9cea 8643 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
4ad0814a 8644
e88e4f2e
HWN
86452002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8646
8647 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8648 protection.
8649
1e71eafb
HWN
86502002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8651
8652 * inline.h: include stdio.h
8653
8654 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8655
61ef9c1f
HWN
86562002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8657
dac04e9f
HWN
8658 * gc-segment.c (scm_i_make_initial_segment): check user settings
8659 for sanity.
8660
8661 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8662 sanity.
dac04e9f 8663
241d9cea 8664 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
dac04e9f 8665
ffd72400
HWN
8666 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8667
8668 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
8669 these won't ever wrap around with high memory usage. Thanks to
8670 Sven Hartrumpf for finding this.
ffd72400 8671
5bd4a949
HWN
8672 * gc-freelist.c: include <stdio.h>
8673
61ef9c1f
HWN
8674 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8675
ffd0ef3b
MV
86762002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8677
a27e3d14
MV
8678 * vectors.h (SCM_VECTOR_REF): New.
8679
ffd0ef3b
MV
8680 * snarf.h (SCM_DEFINE_PUBLIC): New.
8681
f8a1712b
MV
86822002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8683
8684 * socket.c (scm_addr_vector): Added size of address to arguments.
8685 Use it to avoid accessing a non-existent path in a sockaddr_un.
8686 Changed all callers.
8687
7200a36b
HWN
86882002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8689
1383773b
HWN
8690 * gc.h: remove DOUBLECELL card flags.
8691
8692 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8693 scm_realloc().
8694
8695 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8696 init loop; handle this from scm_init_card_freelist()
8697
8698 * gc-card.c (scm_init_card_freelist): init bit vector here.
8699
7200a36b 8700 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 8701 num2float.i.c (FLOAT2NUM): idem
7200a36b 8702
9981de3a
HWN
87032002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8704
8705 * eval.h: prepend libguile/ to include path
8706
19647556
MV
87072002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8708
8709 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
9a5fa6e9 8710 years. Thanks to Martin Grabmüller!
19647556 8711
38d1262a
HWN
87122002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8713
8714 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8715 unsigned numbers for computing minimum heap increment. This
8716 prevents weird results when a a negative minimum increment is
8717 computed.
8718
f800ebfb
MV
87192002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8720
8721 * gc_os_dep.c: When we have __libc_stack_end, use that directly
19647556 8722 instead of the old tricks.
f800ebfb
MV
8723
8724 * guile-snarf.in: Do not expect the input file to be the first
8725 argument after the optional "-o" option, just pass everything to
8726 the pre-processor without extracting the input file name.
8727
4a5309c9
HWN
87282002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8729
8730 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
241d9cea 8731 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
4a5309c9 8732
f2893a25
HWN
87332002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8734
8735 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8736 Bill Schottstaedt for the bug report
8737
483f518b
MV
87382002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8739
8740 * print.c (scm_iprin1): Print primitives generics always as
8741 "primitive-generic" even when they have no primitive methods yet.
8742
917adc55
GH
87432002-08-17 Gary Houston <ghouston@arglist.com>
8744
8745 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8746 call.
8747
67329a9e
HWN
87482002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8749
85835e59 8750 * ports.c (scm_add_to_port_table): small bugfix.
67329a9e
HWN
8751
8752 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8753 malloc.
8754
8755 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8756 only use SCM_MIN_HEAP_SEG_SIZE.
8757
8758 * ports.c (scm_add_to_port_table): add backwards compatibility
8759 function
8760
8761 * ports.h: use scm_i_ prefix for port table and port table size.
241d9cea 8762
f07c886a
MD
87632002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8764
8765 * vports.c (scm_make_soft_port): Initialize pt variable.
8766
dc61cbc6
MV
87672002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8768
8769 * strports.h (scm_c_eval_string_in_module,
8770 scm_eval_string_in_module): New prototypes.
8771 * strports.c (scm_eval_string_in_module): New, but use
8772 "eval-string" as the Scheme name and make second parameter
8773 optional.
8774 (scm_eval_string): Implement using scm_eval_string_in_module.
8775 (scm_c_eval_string_in_module): New.
8776 Thanks to Ralf Mattes for the suggestion!
241d9cea 8777
da220f27
HWN
87782002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8779
be3ff021
HWN
8780 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8781 message and abort.
241d9cea 8782
be3ff021
HWN
8783 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8784
da220f27
HWN
8785 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8786 stead of scm_t_port*. The function now takes a tag argument.
8787
eab1b259
HWN
87882002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8789
8790 * gc.h: add scm_debug_cells_gc_interval to public interface
8791
8792 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8793
8794 * gc.c (scm_i_expensive_validation_check): separate expensive
8795 validation checks from cheap ones.
8796
ba1b2226
HWN
87972002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8798
8799 * read.c (scm_input_error): new function: give meaningful error
8800 messages, and throw read-error
8801
8802 * gc-malloc.c (scm_calloc): add scm_calloc.
8803
39e8f371
HWN
88042002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8805
241d9cea 8806 * tags.h: remove GC bits documentation from the tags table.
33138b05 8807
39e8f371
HWN
8808 * read.c (INPUT_ERROR): Prepare for file:line:column error
8809 messages for errors in scm_lreadr() and friends.
8810
88112002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8812
8813 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
241d9cea 8814 implementation).
39e8f371
HWN
8815 (scm_gc_calloc): new function
8816
26e68795 88172002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
402788a9 8818
5f16b897
HWN
8819 * ports.c (scm_new_port_table_entry): init port entry to 0
8820 completely.
241d9cea 8821
402788a9
HWN
8822 * ports.c (scm_new_port_table_entry): change function from
8823 scm_add_to_port_table. This prevents cells with null-pointers from
8824 being exposed to GC.
8825
504d99c5 8826 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
402788a9 8827 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
c8a1bdc4 8828
504d99c5 8829 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
c2cbcc57
HWN
8830 to gc-stats.
8831
c8a1bdc4
HWN
8832 * numbers.c (big2str): return "0" for 0 iso. ""
8833
c2cbcc57
HWN
8834 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8835 private-gc.h: new file
c8a1bdc4
HWN
8836
8837 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8838 sweeping. More documentation in workbook/newgc.text
8839
aea06b34
MV
88402002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8841
8842 * random.c (rstate_free): Return zero.
8843
35060ae9
DH
88442002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8845
8846 * environments.c (remove_key_from_alist): Removed.
8847
8848 (obarray_remove): Simplified.
8849
6a535440
SJ
88502002-07-24 Stefan Jahn <stefan@lkcc.org>
8851
241d9cea 8852 * continuations.h: ia64: Include <signal.h> before
6a535440
SJ
8853 <sys/ucontext.h>.
8854
bcbd25b7
DH
88552002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8856
8857 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8858
26e68795 88592002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1d1559ce
HWN
8860
8861 * goops.c (scm_compute_applicable_methods): use
8862 scm_remember_upto_here_1 iso scm_remember_upto_here
8863
8864 * macros.c: include deprecation.h
8865
504d99c5 8866 * vectors.c (scm_vector_move_right_x): remove side effect in
1d1559ce 8867 macro arg.
504d99c5 8868 (scm_vector_move_left_x): idem.
1d1559ce
HWN
8869
8870 * net_db.c, posix.c, socket.c: variable naming: change ans to
8871 result.
8872
8873 * sort.c (scm_merge_vector_x): accept vector as argument
8874 iso. SCM*. This is needed for full GC correctness.
8875
8876 * gc.h: undo previous undocumented changes related to #ifdef
8877 GENGC.
8878
26e68795 88792002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
34d19ef6
HWN
8880
8881 * *.c: add space after commas everywhere.
8882
8883 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8884 Document cases where SCM_WRITABLE_VELTS() is used.
241d9cea 8885
34d19ef6
HWN
8886 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8887 SCM_VELTS() return a const pointer
8888 (SCM_VECTOR_SET): add macro.
8889
3063e30a
DH
88902002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8891
8892 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8893 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8894 Deprecated the special kind of built-in dynamic syntax transformer
8895 that was inaccurately named "macro". Note: The built-in syntax
8896 transformers that are named "mmacro" or "memoizing-macro" still
8897 exist, and it is these which come much closer to what one would
8898 call a macro.
8899
4c5f8e8f
NJ
89002002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8901
8902 * eval.c (unmemocopy): Fix for
8903 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8904 with internal definitions and local-eval).
8905
4f6f9ae3
GH
89062002-07-12 Gary Houston <ghouston@arglist.com>
8907
8908 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8909 defined. They don't do anything useful, especially since the
8910 only case where DYNAMIC_LINKING is undefined seems to be
8911 when --with-modules=no is given to configure, which is basically
8912 requesting that the "dynamic linking module" be omitted.
8913
8914 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8915 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8916
8917 * extensions.c (load_extension): check DYNAMIC_LINKING for
8918 scm_dynamic_call.
8919 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8920 scm_init_dynamic_linking.
8921
c21935e6
MV
89222002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8923
8924 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8925 check for Cygwin when including <winsock2.h>, this is already
8926 check for by configure. Thus, revert change from 2002-07-07.
8927
ee95d597
GH
89282002-07-10 Gary Houston <ghouston@arglist.com>
8929
9540b68f 8930 * eq.c: include <string.h>
ee95d597
GH
8931 * dynl.c: docstring editing.
8932
46732b54
GH
89332002-07-09 Gary Houston <ghouston@arglist.com>
8934
8935 * dynl.c (scm_dynamic_call): docstring editing.
8936
c09d12e0
RB
89372002-07-08 Rob Browning <rlb@defaultvalue.org>
8938
8939 * gc_os_dep.c: HURD fixes.
8940
3f6571eb
MV
89412002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8942
8943 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8944
8945 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8946 this should be compiled for BUILD host.
8947 Override default rule for
8948 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8949 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8950 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8951
8952 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8953 <winsock2.h> on Cygwin even when we have it.
8954
bd987b8e
DH
89552002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8956
8957 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8958 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8959 the code. Full number of arguments checking of closures is
8960 mandatory now. However, the option to disable the checking has
8961 most probably not been used anyway.
8962
8505e285
DH
89632002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8964
bd987b8e
DH
8965 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8966 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8967 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8968 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8969 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8970 (scm_source_properties, scm_set_source_properties_x,
8971 scm_source_property): Removed compile time option SCM_RECKLESS to
8972 clean up the code. Full number of arguments checking of closures
8973 is mandatory now. However, the option to disable the checking has
8974 most probably not been used anyway.
8505e285
DH
8975
8976 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8977 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8978
2ee08a28
GH
89792002-06-30 Gary Houston <ghouston@arglist.com>
8980
732b9327
GH
8981 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8982 do anything useful. Added a comment about need for a mutex if
8983 pre-emptive threading is supported.
8984
2ee08a28
GH
8985 * posix.c (scm_convert_exec_args), dynl.c
8986 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8987 allocate_string_pointers. 2) simplified: don't reallocate the
8988 strings, just make an array of pointers 3) avoid memory leaks on
8989 error 4) let the procedure report errors in its own name.
8990 Consequences: 1) the procedures now assume that SCM strings are
8991 nul-terminated, which should always be the case. 2) Since strings
8992 are not reallocated, it's now possible for strings passed to
8993 dynamic-args-call to be mutated.
8994
c136c920
DH
89952002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8996
8997 * __scm.h, eval.c, eval.h: Removed compile time option
8998 MEMOIZE_LOCALS to clean up the code. Now, caching of local
8999 variable positions during memoization is mandatory. However, the
9000 option to disable the caching has most probably not been used
9001 anyway.
9002
e540802f
MV
90032002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
9004
9005 * print.c (scm_simple_format): Print missing part of format before
9006 ~% control. Thanks to Daniel Skarda!
9007
4c1ffcdd
MV
90082002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
9009
9010 * mkstemp.c: Added exception notice to license statement.
9011
ba1b077b
MV
90122002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
9013
8dc434c7
MV
9014 * numbers.c (mem2ureal): When returning an inexact zero, make sure
9015 it is represented as a floating point value so that we can change
9016 its sign.
9017
ba1b077b
MV
9018 From John W. Eaton <jwe@bevo.che.wisc.edu>
9019
9020 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
9021
74c58131
TTN
90222002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
9023
9024 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
0926d46e 9025 in addition to `i386'. Thanks to Dale P. Smith.
74c58131 9026
8766d4b5
MV
90272002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
9028
9029 * eq.c (real_eqv): New.
9030 (scm_eqv_p): Use it when comparing reals and complexes.
9031
9032 * numbers.c: Include <string.h>, for strncmp.
9033 (mem2complex): Do not create negative NaNs.
9034 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
9035 NaN.
9036 (scm_inexact_to_exact): Signal error when converting a NaN.
74c58131 9037
1d8c3cad
MV
90382002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
9039
9040 * posix.c (scm_putenv): Handle removing variables explicitely by
9041 calling unsetenv.
9042
9043 From John W. Eaton.
74c58131 9044
1d8c3cad
MV
9045 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
9046 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
9047 and scm_nan.
9048 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
9049 [SCO && ! HAVE_ISINF] (isinf): New function.
9050 (xisinf, xisnan): New functions.
9051 (IS_INF): Delete.
9052 (isfinite): Define in terms of xisinf.
9053 (scm_inf_p, scm_nan_p): New functions.
9054 (guile_Inf, guile_NaN): New file-scope vars.
9055 (guile_ieee_init): New function.
9056 (scm_inf, scm_nan): New functions.
9057 (idbl2str): Handle Inf and NaN. Remove funny label and
9058 corresponding gotos.
9059 (ALLOW_DIVIDE_BY_ZERO): New macro.
9060 (scm_divide): Allow division by zero to occur if
9061 ALLOW_DIVIDE_BY_ZERO is defined.
9062 Handle bignums and ints as special cases.
9063
9064 Additional stuff by me:
9065
9066 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
9067 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
9068 (iflo2str): Don't output a '+' for negative numbers or for Inf and
9069 NaN. They will provide their own sign.
9070 (scm_divide): Only allow divides by inexact zeros. Dividing by
9071 exact zeros still signals an errors.
74c58131 9072
7a0c65eb
TTN
90732002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
9074
87b72063 9075 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb 9076 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
504d99c5 9077 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb
TTN
9078 Thanks to Andreas Rottmann.
9079
5e423a39
GH
90802002-04-20 Gary Houston <ghouston@arglist.com>
9081
9082 * removal of unused fields in root state (thanks to Christopher
9083 Cramer for pointing out the disuse.)
9084 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1841c44a 9085 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
b6287a25 9086
5e423a39
GH
9087 * root.c (root_mark): don't mark them.
9088 (scm_make_root): don't set them to #f.
9089 * init.c (scm_init_standard_ports): don't initialise with the
9090 default ports.
9091
9d2cce76
MV
90922002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
9093
9094 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
9095 cpp_sig_symbols.c.
9096
90972002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
9098
9099 * guile-snarf.in: Do not clean input file. This would write to
9100 the $(srcdir) during a VPATH build, which is not allowed. It also
9101 isn't needed since it only works when an output filename has been
9102 specified and in that case we don't need to clean the input file
9103 because the output file will already exist.
9104
6f79b6cc
MV
91052002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
9106
9107 * guile-snarf: Install the trap for removing $cleanfile only when
9108 the value of $cleanfile is actually known.
9109
21550b10
RB
91102002-04-10 Rob Browning <rlb@defaultvalue.org>
9111
9112 * .cvsignore: add versiondat.h and *.c.clean.c.
9113
bc76d628
DH
91142002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
9115
9116 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
9117 function, replaces macro SRCBRKP.
9118
9119 (SRCBRKP): Deprecated.
9120
9121 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
9122 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
9123 temporary variable.
9124
5132eef0
DH
91252002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9126
9127 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
9128 CHECK_EXIT and removed all references to them.
9129
680516ba
DH
91302002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
9131
9132 * debug.h (scm_ready_p, debug_print): Removed declarations.
9133
9134 * eval.c (EVALCELLCAR): Removed.
9135
9136 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
9137 operation from condition.
9138
e2bd68e0
MV
91392002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
9140
9141 * guile-snarf.in: When the output filename is "-", write to
9142 stdout. When no "-o" option is given, use "-" as the output
9143 filename (i.e., stdout). Only 'clean' the inputfile or remove the
9144 output file on error when the output file name is not "-". Define
9145 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
9146
9147 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
9148
ab1f1094
DH
91492002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
9150
9151 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
9152 and the corresponding goto statements. Removed redundant code.
9153
42030fb2
DH
91542002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
9155
9156 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
9157 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
9158 Re-enabled handing of rpsubrs and asubrs.
9159
e050d4f8
DH
91602002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
9161
9162 * eval.c (SIDEVAL): Removed.
9163
9164 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
9165 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
9166 argument checking order for set! to locals, variables and symbols.
9167 Improvements to control structure. Removed some uses of arg1 and
9168 arg2 as temporary variables.
9169
a6d344d3
TTN
91702002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
9171
9172 * guile-snarf.in: Remove "--compat=1.4" support.
9173 Add "-d" and "-D" support.
9174
9175 (deprecated_list): New var.
9176 (compat_mode_clean_xxx): Delete.
9177 (grep_deprecated): New func.
9178 ("main"): If "-d" or "-D", call `grep_deprecated'.
9179
3939e9df
NJ
91802002-03-15 Neil Jerram <neil@ossau.uklinux.net>
9181
387d418c
NJ
9182 * hooks.h: Change scm_t_c_hookype_t everywhere to
9183 scm_t_c_hook_type.
9184
bb2c02f2 9185 Docstring fixes:
a6d344d3 9186
bb2c02f2
NJ
9187 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
9188
9189 * ports.c (scm_sys_make_void_port): Use `@file'.
9190
9191 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
9192 than `else'.
9193
9194 * macros.c (scm_makmacro): Don't say that the form replaces its
9195 source, because it doesn't.
9196 (scm_makmmacro): Clarify difference between this and scm_makmacro.
9197
9198 * backtrace.c (scm_display_error), filesys.c (scm_umask,
9199 scm_select, scm_basename), goops.c (scm_method_generic_function),
9200 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
9201 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
9202 spelling mistakes.
9203
3939e9df
NJ
9204 * debug.c (scm_debug_options), eval.c
9205 (scm_eval_options_interface), read.c (scm_read_options): Change
9206 incorrect @var in docstring to @code.
9207
3b3cc781
MV
92082002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
9209
500b0d5b
MV
9210 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
9211
3b3cc781
MV
9212 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
9213 guile-snarf can remove trailing non-init code.
9214
9215 * guile-snarf.in (modern_snarf): Remove everything following and
9216 including "^:^" from the output.
9217
dff98306
DH
92182002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9219
9220 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
9221
9222 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
9223
2287fb53
TTN
92242002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
9225
9226 * guile-snarf.in: Update copyright.
9227 Rewrite to internalize error handling.
9228 Add "--compat=1.4" handling.
9229 Add commentary.
9230
9231 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
9232 (snarfcppopts): New var.
9233 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
9234 (.c.doc): Use $(snarfcppopts).
9235
822250a4
TTN
9236 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
9237 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
9238 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
9239 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
9240 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
9241 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
9242 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
9243 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
9244 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
9245 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
9246 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
9247 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
9248 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
9249 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
9250
b7798e10
DH
92512002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9252
9253 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
9254 The next step will be to remove the union 't' and simplify the
9255 code of SCM_CEVAL that way.
9256
04a98cff
NJ
92572002-03-12 Neil Jerram <neil@ossau.uklinux.net>
9258
9259 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
9260 rreadfds, rwritefds, rexceptfds): Made static.
9261
9262 * gc.c (terminating), fports.c (terminating): Renamed
9263 scm_i_terminating.
9264
16d98032
MV
92652002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
9266
5046250e
MV
9267 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
9268 potential overflow problems. Thanks to John W Eaton!
9269
8794207d
MV
9270 * strop.c (string_capitalize_x): Treat characters as unsigned so
9271 that 8-bit chars work. Thanks to David Pirotte!
16d98032 9272
1d15ecd3
DH
92732002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9274
9275 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
9276 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
9277 proc as temporary variables. Introduced temporary variables with
9278 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9279 by a more explicit predicate in some places.
9280
92812002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
f12745b6
DH
9282
9283 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
9284 Added lots of comments regarding the implementation of #@dispatch.
9285 Changed intra-procedure communication to use t.arg1 instead of
9286 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
9287 variables. Introduced temporary variables with hopefully
9288 descriptive names for clarification. Replaced SCM_N?IMP by a more
9289 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
9290 of computing the expression explicitly. Eliminate now unused
9291 label nontoplevel_cdrxbegin.
9292
9293 * goops.h (SCM_INSTANCE_HASH): New macro.
9294
9295 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
9296
1ebf1566
TTN
92972002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9298
9299 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
9300 "guile-snarf" moved back from `noinst_SCRIPTS'.
9301
020c890c
NJ
93022002-03-08 Neil Jerram <neil@ossau.uklinux.net>
9303
58d233cc
NJ
9304 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
9305 exists when adding a source property other than those that are
9306 handled explicitly, add the new property to the SRCPROPS obj's
9307 plist.
9308
020c890c
NJ
9309 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
9310 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
9311
9312 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
9313 debug.status. It isn't needed, and it can overflow the bits
9314 reserved for it (which may lead to a segv or a GC abort).
9315
3f04400d
DH
93162002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9317
9318 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
9319 side-effecting operations from conditions and macro calls.
9320 Replaced SCM_N?IMP by a more explicit predicate in some places.
9321 Minimized the scope of some variables.
9322
97820583
SJ
93232002-03-02 Stefan Jahn <stefan@lkcc.org>
9324
9325 * convert.i.c: Fixed int <-> long conversions which would have
9326 failed if their sizes were different.
9327
38ace99e
DH
93282002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9329
9330 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
9331 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
9332 as temporary variables. Removed side-effecting operations from
9333 conditions and macro calls. Introduced temporary variables with
9334 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9335 by a more explicit predicate in some places. Removed code that
9336 was conditionally compiled if SICP was defined - which it never
9337 is.
9338
e5cb71a0
DH
93392002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9340
9341 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
9342 Removed some uses of t.arg1 and proc as temporary variables.
9343 Removed side-effecting operations from conditions and macro calls.
9344 Introduced temporary variables with hopefully descriptive names
9345 for clarification. Replaced SCM_N?IMP by a more explicit
9346 predicate in some places.
9347
6a0f6ff3
DH
93482002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9349
9350 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
9351 explicit predicate in some places.
9352
9353 (CHECK_EQVISH): Removed.
9354
9355 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
9356 variables. Removed side-effecting operations from conditions and
9357 macro calls. Introduced temporary variables for clarification.
9358 Sorted if-else-if check for the type of the last form in a list by
9359 frequency. Avoided some unnecessary tail-recursion calls.
9360
228a24ef
DH
93612002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9362
9363 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
9364 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
9365 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
9366 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
9367 scm_cell and all its uses to scm_t_cell in accordance to Guile's
9368 naming scheme for types.
9369
9370 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
9371 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
9372 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
9373 (scm_make_environment), eval.c (scm_closure), fports.c
9374 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
9375 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
9376 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
9377 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
9378 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
9379 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
9380 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
9381 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
9382 scm_alloc_cell to scm_cell.
9383
9384 * environments.c (core_environments_observe), gc.c
9385 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
9386 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
9387 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
9388 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
9389 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
9390 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
9391 (allocate_weak_vector): Renamed scm_alloc_double_cell to
9392 scm_double_cell.
9393
edb810bb
SJ
93942002-02-27 Stefan Jahn <stefan@lkcc.org>
9395
9396 * convert.i.c, convert.c: Better range checking.
9397
9398 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
9399
1ebf1566 9400 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
edb810bb
SJ
9401 Windows (MinGW).
9402
327d4dd3
TTN
94032002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
9404
9405 * Makefile.am: Update path to pre-inst-guile automake frag.
9406
89d7a92c 94072002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
646052c0
DH
9408
9409 * gc.c (scm_gc_sweep): Make it compile even when deprecated
9410 features are excluded.
9411
89d7a92c 94122002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
bac0e232
DH
9413
9414 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
9415
4f2716b6
GH
94162002-02-25 Gary Houston <ghouston@arglist.com>
9417
9418 * convert.c: include <string.h> for convert_i.c.
9419
46151112
RB
94202002-02-24 Rob Browning <rlb@defaultvalue.org>
9421
9422 * .cvsignore: add stamp-h1.
9423
cd328b4f
NJ
94242002-02-21 Neil Jerram <neil@ossau.uklinux.net>
9425
9426 * unif.c (scm_array_to_list): Correct name, which had been
9427 accidentally changed to scm_t_arrayo_list!
9428
c709de7f
MD
94292002-02-20 Mikael Djurfeldt <mdj@linnaeus>
9430
9431 * gc.c (scm_gc_sweep): Print an error message when aborting due to
9432 underflowing scm_mallocated.
9433
c1965d31
MV
94342002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9435
9436 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
9437 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
9438 Reimplemented using the new scm_gc_malloc, etc., functions and
9439 deprecated.
9440
b606945b
TTN
94412002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
9442
9443 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
9444 to `noinst_PROGRAMS'.
9445 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
9446 (noinst_PROGRAMS, noinst_SCRIPTS): New.
9447
7c686ba8
MV
94482002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9449
9450 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
9451 non-zero is returned from a port or smob free function.
9452 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
9453 scm_gc_register_collectable_memory,
9454 scm_gc_unregister_collectable_memory, scm_gc_malloc,
9455 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
9456
9457 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
9458 debug-malloc.c, dynl.c, environments.c, environments.h,
9459 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
9460 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
9461 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
9462 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
9463 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
9464 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
9465 appropriate. Return zero from smob and port free functions.
9466
9467 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
9468
9469 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
9470 messages while the GC is running.
9471 (scm_c_issue_deprecation_warning_fmt): New.
9472
9473 * fports.c (scm_setvbuf): Reset read buffer to saved values when
9474 it is pointing to the putback buffer.
9475
66adc0a6
TTN
94762002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9477
9478 * gsubr.c (create_gsubr): On "too many args" error,
9479 also display arg count and name. Thanks to Bill Schottstaedt.
9480
0187b4f4
TTN
94812002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
9482
9483 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
9484
9485 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
9486 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
9487 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
9488
9489 * guile-snarf-docs-texi.in: Bye bye.
9490
402e687c
MV
94912002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9492
9493 * symbols.c (scm_make_symbol): Fix typo in docstring.
9494
9495 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9496 scm_make_symbol): New prototypes.
9497
319b98ed
MV
94982002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
9499
9500 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
9501 (SCM_SYMBOL_INTERNED_P): New.
9502 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
9503 SCM_MAKINUM since hash values can well be bignums.
9504 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
9505 This signals a interned symbol.
9506 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9507 scm_make_symbol): New.
0187b4f4 9508
319b98ed
MV
9509 * print.c (scm_iprin1): Print uninterned symbols unreadably.
9510
34472dfe
TTN
95112002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
9512
9513 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
9514 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
0187b4f4 9515 Thanks to Dave Love.
34472dfe 9516
1b39c2e3
MV
95172002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
9518
9519 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
319b98ed 9520 This might help to make unintended clashes less likely.
1b39c2e3
MV
9521 (scm_string_to_symbol): Protect the string until the symbols is
9522 created.
9523
1fa86ca5
SJ
95242002-01-31 Stefan Jahn <stefan@lkcc.org>
9525
9526 * convert.c, convert.h, convert.i.c: New files containing C
34472dfe 9527 array to Scheme conversion helpers meant to be replacement
1fa86ca5
SJ
9528 functions for the deprecated gh interface.
9529
9530 * Makefile.am: Setup rules for new `convert.*' files.
9531
af68e5e5
SJ
95322002-01-28 Stefan Jahn <stefan@lkcc.org>
9533
9534 * symbols.c (scm_c_symbol2str): New function, replacement for
9535 `gh_scm2newsymbol()'.
9536
34472dfe 9537 * strings.c (scm_c_substring2str): New function. Proper
af68e5e5
SJ
9538 replacement for `gh_get_substr()'.
9539
9540 * socket.c: Include `stdint.h' if available for the `uint32_t'
9541 declaration.
9542
504d99c5 9543 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
af68e5e5
SJ
9544 compiler warning).
9545
9546 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
9547
c96d76b8 95482002-01-22 Neil Jerram <neil@ossau.uklinux.net>
34472dfe 9549
c96d76b8 9550 Other changes unrelated to Elisp...
34472dfe 9551
c96d76b8
NJ
9552 * eval.c (scm_m_if): Use s_if rather than repeating string literal
9553 "if".
9554 (comments): Fix a few typos.
9555 (scm_for_each): Add parentheses around oddly unparenthesized
9556 if/while conditions.
9557
9558 * read.c (scm_read_opts): Add full stop at end of doc for
9559 `keywords' option.
9560
9561 * script.c (scm_compile_shell_switches): Use scm_str2symbol
9562 instead of gh_symbol2scm.
9563
9564 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
9565 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
9566
9567 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
9568 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
9569
9570 First batch of changes for Elisp support...
9571
9572 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
9573 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
9574 throw.c, vectors.c, weaks.c: Add #include for lang.h.
9575
9576 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
9577 conditionalize compilation and initialization of Elisp support
9578 function.
34472dfe 9579
c96d76b8
NJ
9580 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
9581 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
9582 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
9583 filesys.c (fill_select_type, retrieve_select_type), fluids.c
9584 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
9585 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
9586 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
bbd26b5a
NJ
9587 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
9588 options.c (change_option_setting, scm_options), posix.c
9589 (environ_list_to_c), print.c (scm_iprlist), throw.c
9590 (scm_exit_status), vectors.c (scm_vector), weaks.c
9591 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
c96d76b8
NJ
9592
9593 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
9594 just SCM_FALSEP.
34472dfe 9595
c96d76b8
NJ
9596 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
9597 of just SCM_BOOLP.
9598
9599 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
9600 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
9601 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
9602 (scm_m_atfop): Support function aliasing. Support both function
9603 args, which need transformation, and macro args, which do not.
9604 Add explanatory comments.
9605 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
9606 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
9607 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
9608 SCM_NULLP || SCM_NILP instead of checks against (removed)
9609 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
9610 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
9611
9612 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
9613 scm_m_while, scm_nil_eq): Commented out; I don't think we need
9614 these, but I don't want to remove them yet, just in case.
9615 (scm_init_lang): Define `%nil' variable on Scheme level to hold
9616 Elisp nil value.
9617
9618 * lang.h (SCM_NILP): Test against Elisp nil value instead of
9619 against (removed) scm_lisp_nil.
9620 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
9621 (SCM_NULL_OR_NIL_P): New.
9622
9623 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
9624 SCM_VALIDATE_NULL.
9625
9626 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
9627 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
9628 value).
9629
9630 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
9631 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
9632 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9633 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9634
9635 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9636 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9637 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9638 Numbering shifted down accordingly.
9639 (SCM_ELISP_NIL): New IFLAG.
9640
9641 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
34472dfe 9642
a392ee15
DH
96432002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9644
9645 * eval.c: Removed outdated references to "everr". Improved some
9646 comments.
9647
9648 (scm_deval_args, deval_args): Renamed scm_deval_args to
9649 deval_args, since it is not part of the interface.
9650
9651 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9652 use references to debug.vect[0] before it exists. Add parentheses
9653 to switch statement.
9654
9655 * goops.h: Added local emacs variables.
9656
24933780
DH
96572002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9658
9659 * eval.[ch] (scm_deval_args): Made static.
9660
9661 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9662 test.
9663
9664 * strings.c (scm_c_string2str): Clarified comment. Replaced
9665 THINKME by FIXME for uniformness. Removed question about whether
9666 arguments need to be protected from garbage collection: Arguments
9667 must be protected as any other variable.
9668
f9450cdb
DH
96692002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9670
9671 * procs.h (SCM_CLOSURE_BODY): New Macro.
9672
9673 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9674 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9675 get_slot_value, set_slot_value), procs.c
9676 (scm_procedure_documentation), sort.c (closureless), stacks.c
9677 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9678 SCM_CLOSURE_BODY.
9679
9680 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9681
5dc64f64
MV
96822001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9683
9684 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9685 use "cp" instead.
9686
197ee3d3
MV
96872001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9688
9689 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9690 everywhere.
9691
9692 * continuations.c (scm_make_continuation): Do not retain the
9693 throw_value when the continuation is invoked.
9694
4d4528e7
SJ
96952001-12-08 Stefan Jahn <stefan@lkcc.org>
9696
9697 * strings.c (scm_c_string2str): New function. Converts a
34472dfe 9698 given Scheme string into a C string. Also put in two
4d4528e7
SJ
9699 THINKME's regarding the malloc policy for the missing converter
9700 routines.
9701
98347362
NJ
97022001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9703
9704 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9705 gh_symbol2scm.
9706
1fc8902f
DH
97072001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9708
9709 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9710 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9711
9712 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9713 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9714 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9715 macros.
9716
9717 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9718
9719 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9720 SCM_GC_CELL_* macros when accessing free cells.
9721
4878beec
MV
97222001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9723
9724 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
34472dfe 9725 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
4878beec
MV
9726 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9727 * strings.h (SCM_MAKE_STRING_TAG): New.
9728 * procs.h (SCM_MAKE_CCLO_TAG): New.
9729 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9730
9731 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9732 !SCM_ENABLE_DEPRECATED.
9733
9734 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9735 New.
9736
9737 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9738 signal handlers are allowed to divert the flow of control. Call
9739 scm_system_async_mark_from_signal_handler instead of
9740 scm_system_async_mark.
9741
9742
9743 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9744 scm_alloc_double_cell in their place.
34472dfe 9745
4878beec
MV
9746 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9747 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9748 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9749 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9750 scm_deprecated_newcell and scm_deprecated_newcell2.
9751
9752 gc.c (scm_tc16_allocated): Only define when including deprecated
9753 features.
9754 (scm_debug_newcell, scm_debug_newcell2): Removed.
9755 (scm_init_storage): Do not initialize scm_tc16_allocated.
9756 (scm_init_gc): Do it here.
9757 (allocated_mark): New, from old code.
9758 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
34472dfe 9759
4878beec 9760 * inline.c, inline.h: New files.
34472dfe 9761 * Makefile.am: Added them in all the right places.
4878beec 9762
34472dfe 9763 * _scm.h: Include "libguile/inline.h".
4878beec
MV
9764
9765 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9766 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9767 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9768 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9769 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9770 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9771 scm_alloc_double_cell, respectively.
9772
d2bc7fae
MV
97732001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9774
9775 * modules.c (scm_c_use_module): Adapt to changes to
9776 `process-use-modules'.
9777
5eec27e9
DH
97782001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9779
9780 * numbers.c (scm_divide): Fix more division by zero errors.
9781
8978878f
GH
97822001-11-21 Gary Houston <ghouston@arglist.com>
9783
9784 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9785 obsolete. autogen.sh says:
9786 invalid unused variable name: `OMIT_DEPENDENCIES'
9787
164826d3
DH
97882001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9789
9790 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9791 reporting the bug.
9792
84aff7a7
MV
97932001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9794
9795 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9796 Thanks to Eric Gillespie, Jr!
34472dfe 9797
6063dc1d
SJ
97982001-11-21 Stefan Jahn <stefan@lkcc.org>
9799
34472dfe
TTN
9800 * win32-socket.c (getservent, setservent, endservent,
9801 getprotoent, setprotoent, endprotoent): New functions.
6063dc1d
SJ
9802 Appropriate replacements for M$-Windows.
9803
9804 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9805 these definitions for GUILE_DEBUG.
9806
9807 * net_db.c: Include "win32-socket.h" if compiling with a native
34472dfe
TTN
9808 M$-Windows compiler. Include some pieces of code (protoent and
9809 servent interface) protected by HAVE_* macros when using a
6063dc1d
SJ
9810 native M$-Windows compiler.
9811
351982f6
MV
98122001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9813
9814 * modules.c (scm_c_export): Do nothing when the first argument is
9815 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9816
849038b5
TTN
98172001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9818
9819 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9820 also include `buildstamp'.
9821
5c790b44
RB
98222001-11-18 Rob Browning <rlb@defaultvalue.org>
9823
9824 * version.c
9825 (s_scm_major_version): use SCM_MAJOR_VERSION.
9826 (s_scm_minor_version): use SCM_MINOR_VERSION.
9827 (s_scm_micro_version): use SCM_MICRO_VERSION.
9828 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9829 SCM_MICRO_VERSION.
9830
9831 * version.h.in
9832 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9833 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9834 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9835
694a9bb3
NJ
98362001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9837
9838 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9839 Rewrite docstrings without reference to substring-move-left/right,
9840 since the latter no longer exist.
9841
302c12b4
DH
98422001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9843
9844 * eval.c: Removed bogus comment about acros.
9845
9846 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9847 Minimize scope of local variable. Eliminate dependency on
9848 macro DEBUG_EXTENSIONS.
9849
9850 (s_splicing): New error message string.
9851
9852 (scm_m_body): Issue 'bad body' message rather than 'missing
9853 expression' message.
9854
9855 (scm_m_quote): Eliminate unnecessary copying.
9856
9857 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9858 checking of the body to scm_m_body.
9859
9860 (scm_m_do): Move comment to function header. Rename arg1 to
9861 binding. Made the code a bit easier to read.
9862
9863 (evalcar): Removed.
9864
9865 (iqq): Added a comment. Changed the depth parameter to
9866 unsigned. Use size_t for vector lengths. Make sure vector object
9867 is gc protected as long as its contents are read. Add some syntax
9868 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9869 control structure a bit.
9870
9871 (scm_m_delay): Added comment about the implementation of
9872 scm_m_delay.
9873
9874 (scm_m_define): Add comment about guile's currying define
9875 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9876 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9877
9878 (scm_m_letrec1): Removed. Part of the functionality is taken
9879 over by the new function 'transform_bindings'.
9880
9881 (transform_bindings): New function. Takes over some of the
9882 functionality of removed function 'scm_m_letrec1', namely to split
9883 a list of bindings into a reversed list of variables and a list of
9884 initializers.
9885
9886 (scm_m_letrec): Call 'transform_bindings'.
9887
9888 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9889 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9890 test. Use 'transform_bindings'. Fixed scoping error with named
9891 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9892 Jerram for suggesting the fix). Cleaned up the control structure
9893 a bit.
9894
9895 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9896 unnecessary consing. Eliminated unnecessary
9897 SCM_DEFER/ALLOW_INTS.
9898
9899 (SCM_CEVAL): Un-obfuscated some loops.
9900
cecb4a5e
NJ
99012001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9902
8f85c0c6
NJ
9903 * gc.h (scm_unhash_name): Old declaration removed.
9904
9905 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9906 @code{primitive-eval}.
9907
9908 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9909 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9910 Change @deffnx lines in docstrings to say {Scheme Procedure}
9911 rather than primitive or procedure.
9912
9913 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9914 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9915 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9916 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9917 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9918 (scm_string_split, scm_string_ci_to_symbol), strings.c
9919 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9920 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9921 Docstring fixes and improvements reflecting edits that have been
9922 made in the reference manual source.
9923
9924 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9925 scm_object_property, scm_set_object_property_x): Remove invalid
9926 @deffnx lines for corresponding procedure property primitives.
9927
cecb4a5e
NJ
9928 These changes add a @deffnx C function declaration and function
9929 index entries for each Guile primitive to the copy of the doc
9930 snarf output that is used for reference manual synchronization.
9931 Online help is unchanged.
849038b5 9932
cecb4a5e
NJ
9933 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9934 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9935 name to SCM_SNARF_DOCS.
849038b5 9936
cecb4a5e
NJ
9937 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9938 snarf-check-and-output-texi.
9939
9940 * Makefile.am (guile-procedures.texi): New rule.
9941 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9942 Changed so that the last stage of doc snarfing is now performed
9943 twice, once to produce guile-procedures.txt for online help, and
9944 once to produce guile.texi for reference manual synchronization.
9945
ddea3325
DH
99462001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9947
9948 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9949 safely usable as a single statement followed by a ';', for example
9950 in an if statement.
9951
9952 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9953
72dd0a03
NJ
99542001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9955
9956 * random.c (scm_random_solid_sphere_x,
9957 scm_random_hollow_sphere_x): Correct "shere" typos.
9958
9959 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9960
9961 * version.c (scm_version): Update docstring to include
9962 `micro-version'.
9963
6558eda6
MV
99642001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9965
409b8588
MV
9966 * modules.c (scm_c_export): Call va_end after collecting the
9967 symbols.
9968
adb8c0f2
MV
9969 * strop.h, strop.c (scm_substring_move_left_x,
9970 scm_substring_move_right_x): Removed.
9971
6558eda6
MV
9972 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9973 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9974 configure does.
9975
5d8fc640
MV
99762001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9977
9978 * numbers.c: Document macros to define when including
9979 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9980 now rely on SIZEOF_ macros that have been figured out at
9981 configure time.
9982
9983 * num2integral.i.c: Adapt to new interface.
9984 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9985 target type by casting it and checking whether it is still the
9986 same. Do not try to handle bignums for integral types that are
9987 smaller than fixnums. When handling bignums, collect the
9988 magnituse first into a unsigned type, and correctly check for
9989 overflow.
9990 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
9991 only -MIN_VALUE can still be negative of all negative numbers (in
9992 twos-complement).
9993
849038b5 9994 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
9995
9996 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
9997 HAVE_LONG_LONG depending on whether their size is non-zero.
9998
d6b8cf11
TTN
99992001-11-11 Thien-Thi Nguyen <ttn@glug.org>
10000
10001 * strop.c (scm_string_null_p): Docfix; nfc.
10002 Thanks to Scott Lenser.
10003
9401323e
NJ
100042001-11-07 Neil Jerram <neil@ossau.uklinux.net>
10005
10006 * extensions.c (scm_load_extension): Canonicalize docstring
10007 whitespace.
10008
10009 * unif.c (scm_uniform_array_write), ports.c
10010 (scm_current_output_port, scm_force_output), dynwind.c
10011 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
10012 filesys.c (scm_open, scm_lstat), struct.c
10013 (scm_make_struct_layout), random.c (scm_random,
10014 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
10015 (scm_i_index): Remove superfluous whitespace from end of docstring
10016 lines.
10017
10018 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
10019 strings.c (scm_make_string), variable.c (scm_make_variable,
10020 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
10021 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
10022 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
10023 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
10024 newline at end of docstrings.
10025
10026 * modules.c (scm_set_current_module): Add missing newline to
10027 docstring.
10028
b4e15479
SJ
100292001-11-07 Stefan Jahn <stefan@lkcc.org>
10030
10031 * win32-socket.[ch]: New files. Defines Winsock-API error codes
10032 and makes them available through Guile. That is because the
10033 Winsock-API does not store its errors in `errno' and thus cannot
10034 return error messages via `strerror (errno)'.
10035
10036 * socket.c (scm_init_socket): Initialize `win32-socket' part
10037 here under M$-Windows.
10038
d6b8cf11 10039 * numbers.h: Added missing declaration of
b4e15479
SJ
10040 `scm_sys_check_number_conversions()'.
10041
10042 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
10043 and use in `(strerror)' and `(system-error)'.
10044
d6b8cf11 10045 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
10046 `win32-socket.[ch]' to extra source and header files.
10047
7ab89df1
MV
100482001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
10049
10050 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
10051 a call to turn-on-debugging when --debug has been given instead of
10052 turning it on directly. Also, handle new `--no-debug' option,
10053 which might suppress the call to turn-on-debugging.
10054
0233bfc1
SJ
100552001-11-05 Stefan Jahn <stefan@lkcc.org>
10056
10057 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
10058
8f99e3f3
SJ
100592001-11-04 Stefan Jahn <stefan@lkcc.org>
10060
10061 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 10062 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
10063 correctly and allows a clean build on Win32.
10064
d6b8cf11 10065 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
10066 into FOO.
10067
10068 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
10069 import macros for external libraries (libcrypt, libqthreads,
10070 libreadline and libregex).
10071
10072 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
10073
10074 * posix.c (flock): Added support for flock() in M$-Windows.
10075
10076 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
10077 of __SCM_IMPORT__.
10078
10079 * fports.c (getflags): Differentiate reading and writing pipes
10080 descriptors.
10081
10082 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
10083 M$-Windows.
10084
10085 * coop.c (coop_condition_variable_timed_wait_mutex): Use
10086 conditionalized error code if `ETIMEDOUT' is not available.
10087 (scm_thread_usleep): Remove bogus declaration of `struct timeval
10088 timeout'.
10089
10090 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
10091 belongs. That is because NO_PREPRO_MAGIC gets undefined after
10092 each inclusion of `num2integral.i.c'.
10093 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
10094
4e21fa60
MV
100952001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
10096
10097 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
10098 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
10099
08112c95
MD
101002001-11-02 Mikael Djurfeldt <mdj@linnaeus>
10101
7663c008
MD
10102 * print.c (scm_iprin1): Mark print state as revealed when
10103 dispatching to generic write or display.
10104
08112c95
MD
10105 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
10106
f712d833
MV
101072001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
10108
10109 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 10110
f712d833
MV
10111 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
10112 and win32-dirent.h to extra source and header files. These
10113 include the uname() and the POSIX dirent interface implementation
10114 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
10115 linkers which do not allow unresolved symbols inside shared
10116 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
10117 dependency.
10118
d6b8cf11
TTN
10119 * __scm.h: Defined SCM_API. This macro gets prepended to all
10120 function and data definitions which should be exported or imported
f712d833
MV
10121 in the resulting dynamic link library in the Win32 port.
10122
10123 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 10124 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
10125 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
10126 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
10127 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
10128 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
10129 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 10130 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
10131 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
10132 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
10133 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
10134 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
10135 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
10136 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
10137 vports.h, weaks.h:
10138 Prefixed each each exported symbol with SCM_API.
10139
d6b8cf11 10140 * continuations.c: Added comment about the use of the extern
f712d833
MV
10141 declarations of {get,set}context() functions used in the ia64 port.
10142
10143 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
10144 is meant to be a `unsigned long *'.
10145
10146 * filesys.c: Include `direct.h' if possible. Use local
10147 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
10148 macros for M$-Windows. Implementation of `fstat_Win32()' which is
10149 able to differentiate between sockets and other file descriptors.
10150 Use this function as wrapper in `scm_fstat()'. Fixed typo in
10151 `scm_dirname()'.
10152
10153 * fports.c: Include `io.h' is possible. Put `*fp' into referring
10154 statement block in `scm_fport_buffer_add()'.
10155 Some corrections in `getflags()'.
d6b8cf11 10156
f712d833
MV
10157 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
10158
10159 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
10160 build on Win32. Disable preloaded symbols on Win2 platforms.
10161
10162 * ioext.c, ports.c: Include `io.h' is possible.
10163
10164 * mkstemp.c: Include `process.h' is possible.
10165
10166 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
10167 too.
10168 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
10169
10170 * posix.c: Remove unnecessary dirent includes and defines. Include
10171 local `win32-uname.h' for MinGW. Extern declaration of
10172 `mkstemp()' for systems where it does not exists. Make
10173 `getlogin()' available on M$-Windows.
10174
10175 * scmsigs.c: Made `usleep()' avalable on MinGW.
10176
10177 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
10178
10179 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
10180
10181 * win32-uname.c: Include "win32-uname.h", not "uname.h".
10182
d245ce23
MD
101832001-10-28 Mikael Djurfeldt <mdj@linnaeus>
10184
10185 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
10186 Don't apply scm_uniform_vector_length on arrays.
10187
8ea46249
DH
101882001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
10189
10190 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
10191 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
10192 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
10193 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
10194 scm_list_<n> over scm_cons[2]?.
10195
10196 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
10197 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
10198 SCM_C[AD][AD]R instead of explicit form.
10199
10200 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
10201 comparison parameters.
10202
10203 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
10204 !SCM_NULLP instead of SCM_NIMP.
10205
10206 (scm_m_case): Don't copy the form. Renamed proc to clause and
10207 minimized its scope. Renamed x to clauses. Removed side
10208 effecting operation from macro call.
10209
10210 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
10211 minimized its scope. Renamed x to clauses. Minimized the scope
10212 of variable 'len'. Make sure the else clause is treated specially
10213 even in case of '=>' occurences. Don't change the else to #t in
10214 order to be able to distinguish this case in the evaluator. Leave
10215 type checking of the recipient to the evaluator.
10216
10217 (scm_c_improper_memq): Made the comment somewhat clearer.
10218
10219 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
10220 test for SCM_IM_LET at the place of the formal parameters.
10221 Simplified the formal parameter checking.
10222
10223 (scm_m_letstar): Added Comment. Renamed proc to bindings.
10224 Renamed arg1 to binding and minimized its scope. Eliminated
10225 unnecessary consing.
10226
10227 (scm_m_do): Renamed proc to bindings. Minimized the scope of
10228 variable 'len'.
10229
10230 (build_binding_list): New static function.
10231
10232 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
10233 Further, split up the 'letrec' unmemoizing code to the
10234 corresponding parts for 'do', 'let' and 'letrec', adding comments
10235 to each form. Cleanup the handling of the do form (This removes
10236 some *real* code :-).
10237
10238 (SCM_CEVAL): Removed side effecting operation from macro call.
10239 Handle the 'else clause of the 'cond form specially - the symbol
10240 'else is not replaced with #t any more.
10241
8186c4f5
GH
102422001-10-14 Gary Houston <ghouston@arglist.com>
10243
10244 * version.c (scm_version): use sprintf instead of snprintf,
10245 for portability. thanks to Bill Schottstaedt.
10246
89759084
MD
102472001-10-14 Mikael Djurfeldt <mdj@linnaeus>
10248
10249 * read.c (scm_lreadr): When user-defined hash procedure returns
10250 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
10251 an exception. (This prevents parsing of uniform vectors from
10252 interfering with parsing of numbers.)
10253
9c7ce563
MV
102542001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
10255
10256 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
10257 PTRDIFF_MIN. Thanks to Ken Raeburn.
10258
102592001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
10260
10261 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
10262
10263 * eval.c (scm_m_atbind): First try to find the variable without
10264 defining it locally; when it has not been found, define it
10265 locally.
10266
10267 * modules.c (module_variable): Pass over variables that exist but
10268 are unbound.
10269
102702001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10271
10272 * backtrace.c (display_backtrace_file_and_line): Only use
10273 scm_basename when POSIX support is compiled in. Thanks to Chris
10274 Cramer.
10275
1fe5e088
DH
102762001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10277
10278 * numbers.c (mem2uinteger): Return number read so far when coming
10279 across a hexdigit after having read a # or if not reading a hex
10280 value. This will enable the calling code to correctly handle
10281 forms like 1e2. (The background is, that the exponent markers d,
10282 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
10283 providing this patch.
10284
10285 (mem2complex): Fix erroneous double-negation. Now, numbers like
10286 1-i will be read correctly.
10287
68665a97
MD
102882001-10-12 Mikael Djurfeldt <mdj@linnaeus>
10289
10290 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
10291
10292 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
10293
d5cf5324
DH
102942001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
10295
10296 * print.c (scm_print_state_vtable, print_state_pool):
10297 Initialize. These variables are now registered as gc roots.
10298
10299 (scm_current_pstate): Update documentation.
10300
10301 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
10302 scm_prin1, scm_init_print): print_state_pool is registered as a
10303 gc root and thus does not need to be protected by a surrounding
10304 pair any more.
10305
10306 (make_print_state): The car of print_state_pool no longer holds
10307 the scm_print_state_vtable.
10308
10309 (scm_current_pstate, scm_make_print_state, print_circref,
10310 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
10311 SCM_N<foo>.
10312
10313 (scm_prin1): When building lists, prefer scm_list_<n> over
10314 scm_cons[2]?.
10315
10316 (scm_iprlist): Removed a redundant SCM_IMP test.
10317
10318 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
10319
37c56aec
DH
103202001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10321
10322 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
10323
10324 (scm_memcons, scm_mem_to_proc): When building lists, prefer
10325 scm_list_<n> over scm_cons[2]?.
10326
10327 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
10328
10329 (scm_procedure_name): Use SCM_CADR instead of explicit form.
10330
10331 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
10332 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
10333 for some reason his patch didn't make it into the cvs.
10334
79d34f68
DH
103352001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
10336
10337 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
10338 little bit - should even be somewhat more accurate now.
10339
5e137c65
RB
103402001-10-08 Rob Browning <rlb@defaultvalue.org>
10341
10342 * gc.c: support ia64 register backing store.
10343 (SCM_MARK_BACKING_STORE): new macro.
10344
10345 * continuations.h: support ia64 register backing store.
10346 (struct scm_t_contregs): add ia64 register backing store.
10347
10348 * continuations.c: support ia64 register backing store.
10349 (continuation_mark): mark ia64 register backing store.
10350 (continuation_free): free ia64 register backing store.
10351 (scm_make_continuation): capture ia64 register backing store.
10352 (copy_stack_and_call): copy ia64 register backing store.
10353
ee083ac2
DH
103542001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10355
10356 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
10357 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
10358 instead of SCM_NIMP to test for that case.
10359
10360 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
10361 scm_t_bits instead of long.
10362
71dcdbf9
MV
103632001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10364
10365 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
10366 SCM_T_SIGNED_BITS_MIN): New.
10367 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
10368 Use them to make these macros computable by the preprocessor.
10369
10370 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
10371 whether the integral type fits in a fixnum, not the compiler.
10372 This removes a spurious compiler warning. Also, honor the
10373 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
10374 needed for `long long's.
10375
10376 * numbers.c: Define NO_PREPRO_MAGOC when including
10377 num2integral.c.i for `long long' and `signed long long'.
10378
152812c0
MD
103792001-10-06 Mikael Djurfeldt <mdj@linnaeus>
10380
10381 These changes fixes a race condition in the Guile coop - pthread
10382 compatibility code.
d6b8cf11 10383
152812c0
MD
10384 * coop.c (mother_awake_p): New variable.
10385 (coop_create): Set mother_awake_p before creating or signalling
10386 mother; wait until mother is going to sleep before returning.
10387 (mother): Reset mother_awake_p before going to sleep.
10388
11d49f54
DH
103892001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10390
10391 * options.c (protected_objects, scm_init_options): The content of
10392 protected_objects is now protected from garbage collection using
10393 scm_gc_register_root instead of scm_permanent_object.
10394
10395 (get_option_setting): New static function that computes an option
10396 setting as it was formerly done in the function scm_options.
10397
10398 (get_documented_option_setting): New static function that
10399 returns option documentation as it was formerly done in the
10400 function scm_options. Note that documentation C strings are no
10401 longer precomputed into SCM objects. Instead, they are converted
10402 into SCM strings every time get_documented_option_setting is
10403 called.
10404
10405 (change_option_setting): New static functions that modifies the
10406 option setting as it was formerly done in the function
10407 scm_options. The function is now exception safe, i. e. won't
10408 cause a memory leak when interrupted. Further, only non-immediate
10409 option values are added to the protection list.
10410
10411 (scm_options): This function now has only the purpose to dispatch
10412 to to get_option_setting, get_documented_option_setting or
10413 change_option_setting, depending on the arguments given to
10414 scm_options.
10415
10416 (scm_init_opts): Don't convert documentation C strings into SCM
10417 strings. Further, don't protect any object values: They _must_
10418 be immediate values, otherwise there is no guarantee that they
10419 have not been collected before anyway.
10420
10421 * options.[ch] (scm_t_option): Made type unsigned, name into a
10422 constant char* and val into a scm_t_bits type.
10423
10424 (scm_options, scm_init_opts): The number of options is guaranteed
10425 to be larger or equal to zero. Thus, the type is changed to
10426 unsigned.
10427
3dbacabc
DH
104282001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10429
10430 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
10431 testing an unsigned value for being >= 0.
10432
14282d0f
DH
104332001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10434
10435 * numbers.h: Removed old comment about using SCM_CAR to access
10436 non-pair cells.
10437
10438 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
10439 the return value is signed. Thanks to Brian Crowder for the bug
10440 report.
10441
10442 (SCM_SRS): Avoid unnecessary casting and don't unpack input
10443 values. With this patch, SCM_SRS can be safely used for other
10444 types than scm_t_signed_bits. However, it should still better be
10445 an internal macro and thus be renamed to SCM_I_SRS.
10446
10447 (SCM_MAKINUM, SCM_INUM): Use proper casting.
10448
2dbec7b5
GH
104492001-10-03 Gary Houston <ghouston@arglist.com>
10450
10451 * continuations.h, unif.h: in the descriptions of the bit patterns
10452 of the heap cells, make bit 0 the least significant.
10453
cf4ee841
TTN
104542001-09-25 Thien-Thi Nguyen <ttn@glug.org>
10455
10456 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
10457 Thanks to Golubev I. N.
10458
4a151b3d
GH
104592001-09-25 Gary Houston <ghouston@arglist.com>
10460
10461 * ports.c (scm_drain_input): extended the docstring. thanks to
10462 Alex Schroeder and Thien-Thi Nguyen.
10463
581ded70
MD
104642001-09-23 Mikael Djurfeldt <mdj@linnaeus>
10465
10466 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
10467 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
10468 macros. (The NUM names might soon change.)
10469
10470 * numbers.h: Added missing declarations.
10471
5437598b
MD
104722001-09-22 Mikael Djurfeldt <mdj@linnaeus>
10473
10474 * Makefile.am: Distribute num2float.i.c.
10475
10476 * num2float.i.c: New file, multiply included by numbers.c, used
10477 to "templatize" the float <-> num conversion routines.
10478
10479 * numbers.c: New functions: scm_num2float, scm_float2num,
10480 scm_num2double, scm_double2num.
10481
0b073f0f
RB
104822001-09-21 Rob Browning <rlb@defaultvalue.org>
10483
10484 * .cvsignore: really add version.h
10485
10486 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
10487 Otherwise it fails on the alpha. However, we might rather choose
10488 this size conditionally.
10489
10490 * numbers.c (scm_gcd): change "k" to a long from an int.
10491 Otherwise it fails on the alpha. However, we might rather choose
10492 this size conditionally.
10493
10494 * error.c (scm_wta): coerce char* to intptr_t before int
10495 assignment.
10496
10497 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
10498 int.
10499
10500 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
10501
2830fd91
MD
105022001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10503
10504 * numbers.c (scm_integer_expt): Accept inexact integer in second
10505 argument. (Thanks to Bill Schottstaedt.)
10506
c13f0a90
RB
105072001-09-20 Rob Browning <rlb@defaultvalue.org>
10508
10509 * .cvsignore: add version.h
10510
10511 * versiondat.h.in: removed (obsolete).
10512
10513 * version.h.in: renamed from version.h.
10514 (SCM_GUILE_MAJOR_VERSION): new public macro.
10515 (SCM_GUILE_MINOR_VERSION): new public macro.
10516 (SCM_GUILE_MICRO_VERSION): new public macro.
10517
10518 * version.h: renamed to version.h.in.
10519
10520 * version.c
10521 (scm_major_version): support integer *_VERSION macros.
10522 (scm_minor_version): support integer *_VERSION macros.
10523 (scm_micro_version): support integer *_VERSION macros.
10524 (scm_version): support integer *_VERSION macros.
10525
147c18a0
MD
105262001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10527
10528 * error.c, error.h: Made error keys globally accessible.
10529 Applications might want to test for these or use them in a direct
10530 call to scm_error.
10531
10532 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
10533 routines are passed an inexact. This change in behavior is
10534 motivated by concordance with R5RS: It is more common that a
10535 primitive doesn't want to accept an inexact for an exact.
10536
662c5539
DH
105372001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10538
10539 The following patch partially undoes my patch from 2001-06-30,
10540 where I added the function scm_gc_mark_cell_conservatively. The
10541 function is buggy, since it breaks guile during conservative
10542 marking if a pointer on the stack points directly into the list of
10543 free cells on the heap: With conservative cell marking this will
10544 cause the whole free list to be scanned and marked - boom!
10545
10546 * gc.c (allocated_mark, MARK, heap_segment,
10547 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 10548 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
10549 scm_gc_mark_cell_conservatively and update the corresponding
10550 comments and uses accordingly. Thanks to Christopher Cramer for
10551 the patch. (Minor corrections by me.)
10552
6c1b7628
GH
105532001-09-15 Gary Houston <ghouston@arglist.com>
10554
10555 * root.h (scm_root_state): removed the continuation_stack and
10556 continuation_stack_ptr members, which have no apparent purpose.
10557 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
10558 removed.
662c5539 10559
6c1b7628
GH
10560 * root.c (root_mark), init.c (restart_stack, start_stack), gc
10561 (scm_igc): remove all references to contination_stack and
10562 continuation_stack_ptr, avoiding allocation of a vector and
10563 useless processing during gc.
10564
455c0ac8
DH
105652001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10566
10567 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
10568
10569 (TCONC_IN): Make sure that the cell word 0 is initialized last.
10570
10571 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
10572
10573 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
10574
10575 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
10576 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
10577
22ba637b
DH
105782001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10579
10580 * guardians.c (mark_dependencies_in_tconc,
10581 whine_about_self_centered_zombies, scm_init_guardians): Register
10582 the static global variable `self_centered_zombies' via
10583 scm_gc_register_root, to make some cdr-ing unnecessary.
10584
c3c4d801
DH
105852001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10586
10587 * backtrace.c (display_backtrace_file,
10588 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
10589 values, use SCM_FALSEP when comparing SCM values against #f.
10590 Thanks to Rob Browning for the bug report.
10591
b00418df
DH
105922001-09-12 Martin Baulig <martin@home-of-linux.org>
10593
10594 * strings.[ch] (scm_str2string): New function.
10595
a0d34a0b
MV
105962001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
10597
10598 * gc.c (scm_done_free): Always subtract size from scm_mallocated
10599 when computing nm, even if it's negative.
10600 (scm_must_malloc): Abort on overflow of scm_mtrigger.
10601 (scm_must_realloc): Likewise.
10602
b10586f0
ML
106032001-09-01 Michael Livshin <mlivshin@bigfoot.com>
10604
10605 * numbers.c (scm_sys_check_number_conversions): new function,
10606 defined if Guile is compiled in debugging mode. currently checks
10607 `scm_num2ulong', should check much much more.
10608
10609 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
10610 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 10611
8c494e99
DH
106122001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10613
10614 * __scm.h: Added new section about compile time selectable
10615 features.
10616
10617 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
10618 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
10619 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
10620 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
10621 Removed.
10622
10623 * deprecation.c (scm_include_deprecated_features): Simplified.
10624
10625 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9a5fa6e9 10626 `SCM_IMP' instead of `!SCM_CELLP´.
8c494e99
DH
10627
10628 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
10629 Extract side-effecting operations from macros.
10630
10631 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
10632 scm_top_level_lookup_closure_var and scm_system_transformer.
10633
10634 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10635
10636 (heap_segment): Use CELL_P instead of SCM_CELLP.
10637
10638 * init.c (start_stack): Don't initialize
10639 scm_top_level_lookup_closure_var and scm_system_transformer.
10640
10641 * modules.c (scm_set_current_module): Don't access
10642 scm_top_level_lookup_closure_var and scm_system_transformer.
10643
10644 (scm_sym2var): Don't call scm_variable_set_name_hint.
10645
10646 (scm_post_boot_init_modules): Removed deprecated initializations.
10647
10648 * print.c (scm_ipruk): Don't access cell contents of non cells.
10649
10650 * strings.c (scm_string_set_x): All strings are writable.
10651
10652 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10653 type. There is only one string type now.
10654
10655 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10656
10657 * tags.h: Remove comments about two different string types.
10658
10659 (SCM_CELLP, SCM_NCELLP): Deprecated.
10660
10661 * variable.c (make_variable): Remove code variant for vcells.
10662
10663 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10664 SCM_VARIABLE_LOC): Remove code variant for vcells.
10665
10666 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10667 SCM_ENABLE_DEPRECATED with the logic reversed.
10668
10669 * dynl.c (moddata, registered_mods), dynl.[ch]
10670 (scm_register_module_xxx, scm_registered_modules,
10671 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10672 (*top-level-lookup-closure*), eval.[ch]
10673 (scm_top_level_lookup_closure_var, scm_system_transformer,
10674 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10675 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10676 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10677 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10678 scm_unprotect_object), modules.c (root_module_lookup_closure,
10679 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10680 beautify_user_module_x_var, try_module_autoload_var,
10681 scm_module_full_name), modules.[ch] (scm_the_root_module,
10682 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
cf4ee841 10683 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
8c494e99
DH
10684 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10685 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10686 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10687 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10688 scm_make_shared_substring), tags.h (scm_tc7_substring,
10689 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10690 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10691 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10692 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10693 Removed.
10694
10695 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10696 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10697 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10698 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10699 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10700 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10701 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10702 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10703 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10704 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10705 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10706 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10707 (setzone, scm_strftime, scm_strptime), vports.c
10708 (scm_make_soft_port): Remove calls to
10709 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10710 gone, all strings are 0-terminated anyway.
10711
10712 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10713 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10714 double inclusion of the same headers to the SCM_<filename>_H
10715 format.
10716
10717 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10718 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10719 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10720 any more.
10721
10722 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10723 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10724 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10725 !SCM_<foo> over SCM_N<foo>.
10726
dee01b01
DH
107272001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10728
10729 * Makefile.am: Remove references to symbols-deprecated.c.
10730
10731 * symbols.c (scm_init_symbols): Don't initialize deprecated
10732 symbol functions.
10733
10734 * symbols-deprecated.c: Removed.
10735
10736 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10737 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10738 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10739 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10740 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10741 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10742 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10743 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10744 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10745 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10746 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10747 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10748 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10749 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10750 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10751 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10752 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10753 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10754 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10755 scm_intern0, scm_sysintern, scm_sysintern0,
10756 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10757 scm_string_to_obarray_symbol, scm_intern_symbol,
10758 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10759 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10760 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10761 vectors.[ch] (scm_vector_set_length_x): Removed.
10762
10763 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10764 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10765 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10766 Renamed the macros that are defined to inhibit double inclusion of
10767 the same headers to the SCM_<filename>_H format.
10768
10769 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10770 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10771 SCM_N<foo>.
10772
b29058ff
DH
107732001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10774
10775 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10776 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10777 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10778 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10779 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10780 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10781 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10782 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10783 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10784 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10785 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10786 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10787
10788 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10789 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10790 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10791 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10792 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10793 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10794 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10795 double inclusion of the same headers to the SCM_<filename>_H
10796 format.
10797
10798 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10799 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10800 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10801 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10802 !SCM_<foo> over SCM_N<foo>.
10803
0527e687
DH
108042001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10805
10806 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10807 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10808 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10809 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10810 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10811 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10812 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10813 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10814 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10815 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10816 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10817 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10818 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10819 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10820 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10821 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10822 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10823 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10824 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10825 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10826 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10827 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10828 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10829 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10830 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10831 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10832 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10833 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10834 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10835 the macros that are defined to inhibit double inclusion of the
10836 same headers to the SCM_<filename>_H format.
10837
fada26b2
MV
108382001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10839
10840 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10841 "scm_t_portable" with "scm_port_table" which was an artifact from
10842 the great "scm_*_t -> scm_t_" renaming.
10843
e4d1c1ea
TTN
108442001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10845
10846 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10847 used; nfc. Thanks to Bill Schottstaedt.
10848
10849 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10850 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10851 Thanks to Chris Cramer.
10852
b573e744
MV
108532001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10854
10855 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10856
10857 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10858 dynamic scope.
10859 * dynwind.h (scm_swap_bindings): Declare.
10860 * dynwind.c (scm_swap_bindings): Make non-static.
10861
8a3e715b
ML
108622001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10863
10864 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10865 doing exactly nothing about them). thanks Neil!
10866
cf504ee0
NJ
108672001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10868
10869 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
ec2667f0 10870
43b83b54
TTN
108712001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10872
10873 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10874 (proto) in the case when either `GUILE_DEBUG' or
10875 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10876
10877 (map_free_list): Fix typo: Ref `f' correctly.
10878
10879 Thanks to Chris Cramer.
10880
ab4cd34b
RB
108812001-08-15 Rob Browning <rlb@defaultvalue.org>
10882
10883 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10884 variables.
10885 (libpath.h): change libguileversion to libguileinterface.
10886
b754e3d1
MV
108872001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10888
10889 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10890 ChangeLog-2000. Thanks to Daniel Skarda!
10891
8b1d12c7
ML
108922001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10893
10894 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10895 do it from the Makefile.
10896
10897 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10898 are of a reasonable size.
10899
baffb19f
NJ
109002001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10901
10902 * stacks.c (scm_make_stack): Improve docstring by explaining use
10903 of cutting args.
10904
c1151355
MV
109052001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10906
10907 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10908 scm_char_whitespace_p, scm_char_upper_case_p,
10909 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10910 characters to fulfill isascii in addition to the primary
10911 predicate.
10912
3c9a524f
DH
109132001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10914
10915 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10916 scm_istr2flo, scm_istring2number): Removed.
10917
10918 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10919 SCM_SLOPPY_<foo>.
10920
10921 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10922 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10923 Added.
10924
10925 (scm_string_to_number): Use new number parser.
10926
10927 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10928 handles complex numbers.
10929
10930 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10931 SCM_<foo>_H.
10932
10933 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10934 SCM_N<pred>.
10935
10936 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10937
10938 (scm_i_mem2number): Added.
10939
10940 (scm_exact_to_inexact): Changed signature.
10941
10942 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10943 here instead of within scm_i_mem2number. Call scm_i_mem2number
10944 instead of scm_istr2int and scm_istring2number.
10945
01f11e02
DH
109462001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10947
10948 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10949 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10950 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10951 !SCM_<pred> over SCM_N<pred>.
10952
10953 (scm_eval_body): Remove side effecting code from macro call.
10954
10955 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10956 SCM_NIMP test.
10957
6cf69537
DH
109582001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10959
10960 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10961
54866b6c
MV
109622001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10963
10964 Removed vcell slot from structs.
43b83b54 10965
54866b6c
MV
10966 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10967 subsequent indices.
10968
10969 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10970 zero. Use scm_vtable_index_layout instead of "0" when accessing
10971 said slot.
10972 (scm_init_struct): Remove vcell slot layout code from
10973 required_vtable_fields.
10974
10975 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10976
10977 * goops.c (build_class_class_slots): Removed vcell slot
10978 definition.
10979
10980 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10981 Removed vcell slot layout code.
10982 (scm_si_vcell): Removed.
10983
5b54c4da
MV
109842001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10985
a0f5718e 10986 "Glocs" have been removed.
43b83b54 10987
a0f5718e
MV
10988 * tags.h: Update tag system docs.
10989 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
10990 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
10991 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
10992 or SCM_NCONSP, respectively.
10993
10994 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
10995 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
10996 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
10997
10998 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
10999 tell glocs from structs.
43b83b54 11000
a0f5718e
MV
11001 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
11002
11003 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
11004 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
11005 instead of with glocs.
11006 (EVALCAR): Do not test for glocs.
11007 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
11008 condition.
11009 (scm_unmemocar): Do not handle glocs.
11010 (scm_m_atfop): Memoize as a variable, not as a gloc.
11011 (scm_eval_args, scm_deval_args): Do not handle glocs.
11012 (scm_ceval, scm_deval): Likewise.
43b83b54 11013
a0f5718e
MV
11014 * eval.h (SCM_XEVALCAR): Do not test for glocs.
11015 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
11016 Removed.
11017
11018 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
11019
11020 * dynwind.c (scm_swap_bindings): Likewise.
11021 (scm_dowinds): Updated to recognize lists of variables instead of
11022 lists of glocs.
11023
11024 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
11025
43b83b54 11026
5b54c4da
MV
11027 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
11028 where it is needed.
43b83b54 11029
3c3db128
GH
110302001-07-25 Gary Houston <ghouston@arglist.com>
11031
11032 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
11033 docstrings to reflect the n-ary implementation.
11034
dd29a169
MV
110352001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
11036
11037 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
11038 value of a variable, not the plain "return" statement.
11039
f5fe6c2f
MV
110402001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
11041
11042 * eval.c: Allow variables in memoized code (in addition to glocs).
11043 (scm_lookupcar): Handle variables in lost races. Replace symbol
11044 with variable directly, do not make a gloc.
11045 (scm_unmemocar): Rewrite variables using a reverse lookup, just
11046 like glocs.
11047 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
11048 the main switch.
11049
ee0c7345
MV
110502001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
11051
6d9ad98a
MV
11052 * variable.c (scm_i_variable_print): Use "value" instead of
11053 "binding" since a binding is the mapping between symbols and
11054 variables, not between variables and their values.
11055
ee0c7345
MV
11056 * tags.h (scm_tc7_variable): New.
11057 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
11058 * print.c (scm_iprin1): Likewise.
11059
11060 * variable.h (scm_tc16_variable): Removed.
11061 (SCM_VARIABLEP): Test for new tc7 code.
11062 (scm_i_variable_print): New.
11063 * variable.c (scm_tc16_variable): Removed.
11064 (variable_print): Renamed to scm_i_variable_print and made
11065 non-static.
11066 (variable_equal_p): Removed.
11067 (make_variable): Construct a tc7 object instead of a smob.
11068 (scm_init_variable): Do not register smob.
43b83b54 11069
f3805ebb
MV
110702001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
11071
11072 * tags.h: Include inttypes.h when we have it.
11073
110742001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
11075
11076 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
11077 is taken by the new SCM_IM_CALL_WITH_VALUES.
11078 * print.c (scm_isymnames): Update table accordingly.
43b83b54 11079
6a1677a3
GH
110802001-07-22 Gary Houston <ghouston@arglist.com>
11081
11082 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
11083 SCM_MAKINUM to convert regoff_t value to SCM.
11084
1bed8c28
GH
110852001-07-21 Gary Houston <ghouston@arglist.com>
11086
11087 * scmsigs.c: include sys/time.h for itimer stuff.
11088
e658215a
RB
110892001-07-19 Rob Browning <rlb@defaultvalue.org>
11090
11091 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
11092
11093 * c-tokenize.lex: add option %nounput to quiet warning.
11094 Add prototype for yylex to quiet warning.
11095
11096 * scmconfig.h.in: add flags for setitimer and getitimer.
11097
11098 * scmsigs.h (scm_init_scmsigs): new prototype.
11099 (scm_init_scmsigs): new prototype.
11100
11101 * scmsigs.c (s_scm_setitimer): new function.
11102 (s_scm_setitimer): new function.
11103
58ade102
MG
111042001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11105
11106 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
11107 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
11108 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
11109 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
11110 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
11111 guile-func-name-check.in, guile-snarf-docs-texi.in,
11112 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
11113 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
11114 objprop.c, objprop.h, options.c, options.h, random.h,
11115 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
11116 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
11117 version.c, version.h: Updated copyright notice.
11118
6b80d352
DH
111192001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11120
11121 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
11122 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
11123 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
11124 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
11125 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
11126 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
11127 sym_environment, scm_sym_change_class): New static variables to
11128 hold predefined symbols.
11129
11130 (build_class_class_slots): Build the list using scm_list_n
11131 instead of cons. Also, slots are already created as lists, thus
11132 making a call to maplist unnecessary.
11133
11134 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
11135 scm_class_direct_subclasses, scm_class_direct_methods,
11136 scm_class_precedence_list, scm_class_slots, scm_class_environment,
11137 scm_method_procedure, create_standard_classes, purgatory): Use
11138 predefined symbols.
11139
11140 (build_slots_list, compute_getters_n_setters,
11141 scm_sys_initialize_object, scm_sys_inherit_magic_x,
11142 get_slot_value_using_name, set_slot_value_using_name,
11143 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
11144 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
11145 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
11146
11147 (scm_sys_prep_layout_x): Minimize variable scopes.
11148
11149 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
11150 scm_sys_fast_slot_set_x): Fix signedness.
11151
11152 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
11153 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
11154 scm_memoize_method, scm_wrap_object): Use packing and unpacking
11155 when converting to and from SCM values.
11156
11157 (scm_enable_primitive_generic_x): Add rest argument checking.
11158
11159 (map, filter_cpl, maplist, scm_sys_initialize_object,
11160 scm_sys_prep_layout_x, slot_definition_using_name,
11161 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
11162 call_memoize_method, scm_make, scm_make_class): Prefer explicit
11163 predicates over SCM_N?IMP tests.
11164
11165 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
11166 checking.
11167
11168 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
11169 alias.
11170
63bcad19
DH
111712001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11172
11173 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
11174
11175 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
11176
11177 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
11178
11179 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
11180
4d6aae71
ML
111812001-07-12 Michael Livshin <mlivshin@bigfoot.com>
11182
11183 * strings.c (s_scm_string): fix arg position in assert.
11184
4b8ec619
GH
111852001-07-11 Gary Houston <ghouston@arglist.com>
11186
11187 * strports.c (st_write): use memcpy, not strncpy. thanks to
11188 Dale P. Smith.
11189
dbb640bd
TTN
111902001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
11191
11192 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
11193 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
11194 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
11195 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
11196 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
11197 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
11198 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
11199 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
11200 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
11201 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
11202 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
11203 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
11204 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
11205 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
11206 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
11207 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
11208 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
11209 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
11210 weaks.c, weaks.h: Remove "face-lift" comment.
11211
fd6c6321
RB
112122001-07-08 Rob Browning <rlb@defaultvalue.org>
11213
11214 * .cvsignore: add stamp-h.in.
11215
f91e4547
MG
112162001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11217
11218 * hooks.c (scm_make_hook, scm_add_hook_x),
11219 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
11220 value info to the docstrings.
11221
7beabedb
MG
112222001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11223
11224 Some more compatibility patches for Windows.
dbb640bd 11225
7beabedb
MG
11226 * posix.c (getlogin): getlogin() implementation for Windows.
11227
11228 * backtrace.c, ioext.c: Include <stdio.h>.
11229
11230 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
11231 exist.
11232
11233 * cpp_sig_symbols.in: Added SIGBREAK.
11234
0d0560d0
MV
112352001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
11236
11237 * strports.c (scm_read_0str, scm_eval_0str): Call
11238 scm_c_read_string and scm_c_eval_string respectively, not
11239 themselves. Thanks to Dale P. Smith!
11240
9a97e362
DH
112412001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11242
11243 * unif.c (scm_array_set_x): The variable args does not
11244 necessarily have to be a list. Further, got rid of a redundant
11245 SCM_NIMP test.
11246
592996c9
DH
112472001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11248
11249 * list.c (SCM_I_CONS): Make sure the cell type is initialized
11250 last.
11251
11252 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
f91e4547 11253 init_heap_seg): Fixed signedness.
592996c9
DH
11254
11255 (init_heap_seg): Replaced strange for-loop with a while loop.
11256
11257 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
11258
11259 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
11260
11261 The following patch adds conservative marking for the elements of
11262 free or allocated cells.
11263
11264 * gc.c (allocated_mark, heap_segment): New static functions.
11265
11266 (which_seg): Deleted, since the functionality is now provided by
11267 function heap_segment.
11268
11269 (map_free_list): Use heap_segment instead of which_seg.
11270
11271 (MARK): If cell debugging is disabled, mark free cells
11272 conservatively.
11273
11274 (scm_mark_locations, scm_cellp): Extracted the search for the
11275 heap segment of a SCM value into function heap_segment.
11276
11277 (scm_init_storage): Allocated cells must be marked
11278 conservatively.
11279
11280 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
11281
11282 The following patch changes the representation of weak vectors to
11283 double cells instead of using an extension of the vector's
11284 allocated memory.
11285
11286 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
11287 the result of SCM_WVECT_GC_CHAIN.
11288
11289 (scm_gc_sweep): Weak vectors don't have extra fields any more.
11290
11291 * weaks.c (allocate_weak_vector): New static function. It does
11292 not patch any previously created vector object during the
11293 construction of a weak vector, and thus doesn't need to switch
11294 off interrupts during vector creation.
11295
11296 (scm_make_weak_vector, scm_make_weak_key_hash_table,
11297 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11298 Use allocate_weak_vector to provide the new weak vector object.
11299
11300 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
11301 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
11302 now stored in the double cell.
11303
11304 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
11305 Use SCM_WVECT_TYPE.
11306
11307 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
11308 using an entry of the double cell.
11309
4dadf664
TTN
113102001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
11311
11312 * stamp-h.in: bye bye
11313
02202352
MV
113142001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
11315
11316 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
11317 scm_eval_0str.
11318
11319 * load.c, load.h (scm_c_primitive_load,
11320 scm_c_primitive_load_path): New.
11321
11322 * strports.c, strports.h (scm_c_read_string): Renamed from
11323 scm_read_0str. Also, added "const" qualifier to argument.
11324 (scm_c_eval_string): Renamed from scm_eval_0str.
11325 (scm_read_0str, scm_eval_0str): Deprecated.
11326
df1ad0d1
MG
113272001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11328
11329 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
11330 SCM_LIST1.
11331
1afff620
KN
113322001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
11333
11334 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
11335 scm_list_n): New functions.
11336 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
11337 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
11338 (lots of files): Use the new functions.
4dadf664 11339
1afff620
KN
11340 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
11341
11342 * strings.c: #include "libguile/deprecation.h".
11343
b858464a
MG
113442001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11345
11346 * read.c (scm_lreadr): When reading a hash token, check for a
11347 user-defined hash procedure first, so that overriding the builtin
11348 hash characters is possible (this was needed for implementing
11349 SRFI-4's read synax `f32(...)').
4dadf664 11350
b858464a
MG
11351 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
11352 because the latter is unsigned now and breaks comparisons like
11353 (n < (scm_t_signed_bits)MIN_VALUE).
4dadf664 11354
d95c0b76
NJ
113552001-06-26 Neil Jerram <neil@ossau.uklinux.net>
11356
11357 * eval.h, eval.c (scm_call_4): New function.
11358
11359 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
11360 directly rather than dispatching to them via scm_ithrow and a lazy
11361 catch.
4dadf664 11362
d95c0b76
NJ
11363 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
11364 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
11365 for trap handler procedures.
11366
11367 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
11368 procedures not being #f.
11369
30e3be5a
ML
113702001-06-27 Michael Livshin <mlivshin@bigfoot.com>
11371
11372 * Makefile.am (c-tokenize.c): add rule to generate it.
11373 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
11374
11375 filter-doc-snarfage.c: remove.
11376
82893676
MG
113772001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11378
11379 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
11380
11381 The following set of changes makes compiling Guile under various
11382 Windows compilers easier. Compilation under GNU systems should
11383 not be affected at all.
11384
11385 Thanks to Stefan Jahn for all necessary information, patches and
11386 testing.
4dadf664 11387
82893676
MG
11388 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
11389 getpgrp, ttyname, primitive-fork and some header inclusion for
11390 Windows.
11391
11392 * random.c: Define M_PI, if not predefined and use __int64 for
11393 LONG64 under Windows.
11394
11395 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
11396 Windows and conditionalize some signal names.
11397
4dadf664 11398 * socket.c (scm_getsockopt): Added missing comma.
82893676
MG
11399 Include socket library header under Windows.
11400
11401 * stime.c (CLKTCK): Add cast to int, to make it compile under
11402 Windows.
11403
11404 * ports.c (truncate): New function, compiled only under Windows.
11405
11406 * net_db.c: Do not declare errno under Windows.
11407
11408 * iselect.h, inet_aton.c: Include socket library headers under
11409 Windows.
11410
11411 * guile.c (inner_main): Under Windows, initialize socket library
11412 and initialize gdb_interface data structures.
11413
11414 * gdb_interface.h: Under Windows, gdb_interface cannot be
11415 initialized statically. Initialize at runtime instead.
11416
11417 * fports.c (write_all): ssize_t -> size_t.
11418 (fport_print): Conditionalize call to ttyname().
11419 (getflags): New function, compiled only under Windows.
11420
11421 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
11422 primitives chown, link, fcntl.
11423 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
11424 as path seperator.
11425
11426 * backtrace.c: Include <io.h> under Windows.
11427
11428 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
11429
11430 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
11431 declaration.
11432
fdc28395
KN
114332001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
11434
11435 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11436 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
11437 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11438 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
11439 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
11440 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
11441 (scm_dynamic_wind, scm_dowinds), environments.c
11442 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
11443 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
11444 goops.c (GETVAR, purgatory, make_class_from_template,
11445 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
11446 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
11447 (scm_primitive_load), modules.c (scm_resolve_module,
11448 scm_c_define_module, scm_c_use_module, scm_c_export,
11449 module_variable, scm_eval_closure_lookup, scm_sym2var,
11450 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
11451 ports.c (scm_port_for_each), print.c (scm_printer_apply),
11452 properties.c (scm_primitive_property_ref), ramap.c (ramap,
11453 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
11454 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
11455 (scm_object_to_string, scm_call_with_output_string,
11456 scm_call_with_input_string), throw.c (scm_body_thunk,
11457 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
11458 scm_make_shared_array), vports.c (sf_flush, sf_write,
11459 sf_fill_input, sf_close): Use one of the above functions.
11460 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
11461
36284627
DH
114622001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11463
11464 * filesys.c (scm_close), ports.c (scm_close_port,
11465 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
11466 instead of SCM_NEGATE_BOOL.
11467
11468 * filesys.c (scm_stat): Clean up type dispatch.
11469
11470 * filesys.c (scm_stat), ports.c (scm_input_port_p,
11471 scm_output_port_p): Get rid of redundant IM type check.
11472
11473 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
11474 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
11475 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
11476 scm_return_entry), numbers.c (scm_number_to_string), objects.c
11477 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
11478 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
11479 scm_addr_vector), stime.c (scm_strftime), strings.c
11480 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
11481 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
11482 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11483 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
11484 instead of scm_makfromstr.
11485
11486 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
11487 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
11488 scm_read_hash_extend), stime.c (scm_strftime), strings.c
11489 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
11490 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
11491 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
11492 !SCM_<pred> over SCM_N<pred>.
11493
11494 * strings.[ch] (scm_makfromstr): Deprecated.
11495
11496 (scm_mem2string): New function, replaces scm_makfromstr.
11497
11498 * strings.c (scm_substring), strop.c (string_copy,
11499 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11500 (scm_symbol_to_string): Fix gc problem.
11501
11502 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
11503 SCM_<foo>_H.
11504
11505 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
11506 warning about comparing signed and unsigned values. This fix is
11507 not optimal, since it won't work reliably if sizeof (c_start) >
11508 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
11509 solution is to define this macro as an inline function, thus
11510 allowing to specifiy the types of c_start and c_end.
11511
13dcb666
DH
115122001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
11513
11514 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
11515 scm_t_debug_frame*.
11516
11517 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
11518 Rename <foo>H to SCM_<foo>_H.
11519
11520 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
11521 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11522
11523 (narrow_stack): Make i unsigned. Don't use side-effecting
11524 operations in conditions.
11525
11526 (narrow_stack, scm_make_stack, scm_stack_id,
11527 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
11528
11529 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
11530 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
11531 more.
11532
11533 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
11534 signedness.
11535
ea2c3968 11536 (scm_last_stack_frame): Remove bogus `;'.
13dcb666
DH
11537
11538 * stacks.h (SCM_FRAMEP): Fix type check.
11539
ac13d9d2
ML
115402001-06-25 Michael Livshin <mlivshin@bigfoot.com>
11541
ee0c0e03
ML
11542 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
11543 c-tokenize.c when doing maintainer-clean.
11544
ac13d9d2
ML
11545 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
11546
11547 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
11548 simplify.
11549
11550 * eval.c: all hash signs are in column 0.
11551
11552 * Makefile.am (guile_filter_doc_snarfage): build using
11553 c-tokenize.c, not filter-doc-snarfage.c.
11554 rearrange snarfing dependencies a bit.
11555
11556 * c-tokenize.lex: new file.
11557
16be44e5
MV
115582001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
11559
11560 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
11561 scm_t_srcpropso_plist. See the big type renaming.
11562 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
11563 Thanks to Seth Alves!
4dadf664 11564
16be44e5
MV
11565 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
11566 they aren't defined already.
11567
5843e5c9
DH
115682001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
11569
11570 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
11571 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
11572 problem.
11573
11574 * backtrace.c (display_expression, scm_set_print_params_x,
11575 display_application, display_frame, scm_backtrace), numbers.c
11576 (scm_istring2number), objects.c (scm_class_of,
11577 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
11578 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11579
11580 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
11581 always positive.
11582
11583 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
11584 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
11585
11586 * objects.c (scm_class_of): Type fix.
11587
11588 (scm_mcache_lookup_cmethod): Improved comment, simplified,
11589 eliminated goto.
11590
11591 * pairs.h (scm_error_pair_access): The function can return if
11592 called recursively.
11593
6b41a313
MG
115942001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11595
11596 * init.c (scm_init_guile_1): Removed initialization of tag.c.
11597
11598 * gdbint.c, init.c: Removed inclusion of tag.h.
11599
11600 * tag.h, tag.c: Removed files.
11601
11602 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
11603
fbbdb121
GH
116042001-06-20 Gary Houston <ghouston@arglist.com>
11605
11606 * deprecation.c, extensions.c, rw.c: include string.h.
11607
72c17ed0
GH
116082001-06-19 Gary Houston <ghouston@arglist.com>
11609
11610 * filter-doc-snarfage.c (process): added ungetc in
11611 MULTILINE_COOKIE case since otherwise it fails when there's no
11612 space between the '(' and the quote of the following string
11613 (gcc 3.0).
11614
4ff9f825
MV
116152001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11616
4927dd28
MV
11617 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
11618
b629af45
MV
116192001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11620
11621 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
0f002b27
MV
11622 extension takes place.
11623 * strings.h (SCM_STRING_LENGTH): Likewise.
11624 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4dadf664 11625
4ff9f825
MV
11626 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
11627 it.
11628
11629 * tags.h: Include <stdint.h> when we have it.
11630 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
11631 available. Else use "unsigned long".
11632 (scm_signed_bits_t): New.
11633
11634 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11635 (SCM_INUM): Cast result to scm_signed_bits_t.
11636
58bee6a8
TTN
116372001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11638
11639 * mkstemp.c: Update path to #include file scmconfig.h.
11640 Thanks to Golubev I. N.
11641
00d8d838
DH
116422001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11643
11644 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11645
ea2c3968 11646 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
00d8d838
DH
11647 the macro definition.
11648
11649 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11650 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11651 instead of SCM_INST_TYPE.
11652
11653 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11654 the object is a struct before accessing its struct flags.
11655
11656 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11657
495c67e5
GH
116582001-06-10 Gary Houston <ghouston@arglist.com>
11659
11660 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11661 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11662 work reliably anymore. try it from boot-9.scm instead.
11663
6a9003d3
MV
116642001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11665
11666 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
9a5fa6e9 11667 Thanks to Matthias Köppe!
58bee6a8 11668
47bcd646
ML
116692001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11670
a88ff5b6
ML
11671 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11672 space-happy C preprocessors.
11673
47bcd646 11674 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
9a5fa6e9 11675 inside cookies. thanks to Matthias Köppe!
47bcd646 11676
bab246f3
DH
116772001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11678
11679 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11680 keywords. Fix gc protection.
11681
11682 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11683 operations in macro calls.
11684
11685 * pairs.c (scm_error_pair_access): Avoid recursion.
11686
11687 Thanks to Matthias Koeppe for reporting the bugs that correspond
11688 to the following set of patches.
11689
11690 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11691 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11692 bitvector base address using SCM_BITVECTOR_BASE.
11693
11694 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11695 unsigned long*.
11696
dcb410ec
DH
116972001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11698
11699 * goops.c (SCM_CLASS_REDEF): Removed.
11700
11701 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11702 SCM_<foo>_H.
11703
11704 Thanks to Matthias Koeppe for reporting the bugs that correspond
11705 to the following set of patches.
11706
11707 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11708 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11709 scm_sys_allocate_instance, clear_method_cache,
11710 scm_sys_invalidate_method_cache_x, scm_make,
11711 create_standard_classes, scm_make_port_classes, scm_make_class,
11712 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11713
11714 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11715
11716 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11717
11718 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11719 UNARY_ELTS_CODE): Remove bogus break statement.
11720
11721 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11722 Don't access bit vectors elements as SCM objects.
11723
11724 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11725 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11726 Don't assign to an unpacked value.
11727
e81d98ec
DH
117282001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11729
11730 * __scm.h (SCM_NORETURN): Moved here from error.h.
11731
11732 (SCM_UNUSED): New macro.
11733
11734 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11735
11736 * backtrace.c (display_error_handler), continuations.c
11737 (continuation_print), debug.c (debugobj_print), dynwind.c
11738 (guards_print), environments.c (observer_print,
11739 core_environments_finalize, leaf_environment_cell,
11740 leaf_environment_print, eval_environment_print,
11741 eval_environment_observer, import_environment_define,
11742 import_environment_undefine, import_environment_print,
11743 import_environment_observer, export_environment_define,
11744 export_environment_undefine, export_environment_print,
11745 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11746 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11747 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11748 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11749 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11750 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11751 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11752 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11753 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11754 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11755 set_slot_value, test_slot_existence, scm_change_object_class,
11756 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11757 default_setter), guardians.c (guardian_print, guardian_gc_init,
11758 guardian_zombify, whine_about_self_centered_zombies), guile.c
11759 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11760 mallocs.c (malloc_print), numbers.c (scm_print_real,
11761 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11762 end_input_default, scm_port_print, fill_input_void_port,
11763 write_void_port), root.c (root_print), smob.c (scm_mark0,
11764 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11765 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11766 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11767 (scm_struct_free_0, scm_struct_free_standard,
11768 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11769 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11770 scm_handle_by_throw, scm_ithrow), weaks.c
11771 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11772 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11773 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11774
11775 * error.h (SCM_NORETURN): Moved to __scm.h.
11776
11777 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11778 Renamed <foo>H to SCM_<foo>_H.
11779
11780 * gc.c (debug_cells_gc_interval): New static variable.
11781
11782 (scm_assert_cell_valid): If selected by the user, perform
11783 additional garbage collections.
11784
11785 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11786 if additional garbage collections are desired.
11787
11788 (mark_gc_async): If additional garbage collections are selected
11789 by the user, don't call the after-gc-hook. Instead require the
11790 user to run the hook manually.
11791
11792 * pairs.c (scm_error_pair_access): New function. Only compiled
11793 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11794
11795 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11796
11797 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11798 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11799 is a real pair object. (Glocs are also accepted, but that may
11800 change.) If not, abort with an error message.
11801
17fa3fcf
DH
118022001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11803
11804 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11805
11806 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11807 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11808
feeedafb
MV
118092001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11810
11811 * extensions.c (scm_c_register_extension): Allow NULL as library
11812 name.
11813 (load_extension): Ignore NULL library names when comparing.
58bee6a8 11814
feeedafb
MV
11815 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11816 non-pointers are being compared. Thanks to Alexander Klimov!
11817
4bcdfe46
GH
118182001-06-04 Gary Houston <ghouston@arglist.com>
11819
11820 * rw.c (scm_write_string_partial): new procedure implementing
11821 write-string/partial in (ice-9 rw).
11822 * rw.h: declare scm_write_string_partial.
58bee6a8 11823
f480396b
MV
118242001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11825
feeedafb
MV
11826 * keywords.c (keyword_print): Substract 1 from length of symbol
11827 name, accounting for the silly dash.
11828
11829 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11830 Do not emit deprecation warning.
11831
f480396b
MV
11832 Added exception notice to all files.
11833
11834 * dynl.c: Include "deprecation.h".
11835
c794483c
MV
118362001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11837
11838 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11839 scm_clear_registered_modules): Deprecated.
11840
9454d8d5
RB
118412001-06-02 Rob Browning <rlb@cs.utexas.edu>
11842
11843 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11844 guile-snarf-docs-texi.
11845
11846 * fports.c: HAVE_ST_BLKSIZE changed to
11847 HAVE_STRUCT_STAT_ST_BLKSIZE.
11848 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11849 HAVE_STRUCT_STAT_ST_BLKSIZE.
11850
11851 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11852 HAVE_STRUCT_STAT_ST_RDEV.
11853 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11854 HAVE_STRUCT_STAT_ST_BLKSIZE.
11855 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11856 HAVE_STRUCT_STAT_ST_BLOCKS.
11857
114f9bab
MV
118582001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11859
b0c16cd9
MV
11860 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11861 of scm_eval_x to allow module changes between the forms in the
11862 string. Set/restore module using scm_c_call_with_current_module.
11863
114f9bab
MV
11864 * mkstemp.c: New file, slightly modified from libiberties
11865 mkstemps.c.
11866
c99f9605
ML
118672001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11868
11869 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11870 filter-doc-snarfage.c: new files.
11871
11872 * Makefile.am: add stuff to [build,] use and distribute
11873 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11874
11875 * guile-snarf.in: grok the new snarf output.
11876
11877 * snarf.h: make the output both texttools- and `read'-friendly.
11878
47bcd646
ML
11879 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11880 guile-snarf-docs. (should also deprecate, I guess. maybe not).
c99f9605 11881
7eb5d7b2
MV
118822001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11883
11884 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11885 error for unsupported format controls and for superflous
ec2667f0 11886 arguments. Thanks to Daniel Skarda!
7eb5d7b2
MV
11887
11888 * print.h, print.c (scm_print_symbol_name): Factored out of
11889 scm_iprin1.
11890 (scm_iprin1): Call it.
58bee6a8 11891
7eb5d7b2
MV
11892 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11893 weird names are printed correctly.
11894
11895 * print.c (scm_print_symbol_name): Symbols whose name starts with
11896 `#' or `:' or ends with `:' are considered weird.
11897
609c3d30
MG
118982001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11899
11900 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11901 and /.
11902
119032001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11904
11905 * debug.h: Removed prototype for scm_eval_string.
11906
8d09eb04
MG
119072001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11908
11909 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
58bee6a8 11910 (make-string 2000 #\!))' in an older version).
8d09eb04
MG
11911
11912 Change strncpy to memcpy to allow embedded NUL characters in
11913 symbol prefix.
11914
dd85ce47
ML
119152001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11916
fde50407
ML
11917 * hooks.c (scm_create_hook): deprecated.
11918 (make_hook): deleted.
11919 (scm_make_hook): all the hook creation code is now here.
11920
11921 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11922 a hook, make it permanent, and do a `scm_c_define' on it.
11923
dd85ce47
ML
11924 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11925
11926 * socket.c (s_scm_inet_pton): fix docstring quoting.
11927 (s_scm_inet_ntop): ditto.
11928
11929 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11930
11931 * hashtab.c (scm_internal_hash_fold): fix argument position in
11932 SCM_ASSERT.
11933
11934 * environments.c (s_scm_import_environment_set_imports_x): fix
11935 argument position in SCM_ASSERT.
11936
11937 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11938 (s_scm_make_iloc): ditto.
11939
729dbac3
DH
119402001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11941
11942 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11943
11944 * eval.c (promise_print): Read the promise's value as an object.
11945
11946 (SCM_CEVAL): Don't perform side-effecting operations in macro
11947 parameters.
11948
11949 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11950 conditional expression.
11951
11952 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11953 initializer.
11954
11955 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11956 text, removed redundant computation of effective_length and fixed
11957 the overflow check.
11958
11959 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11960 values.
11961
11962 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11963
11964 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11965
11966 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11967 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11968
11969 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11970
11971 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11972 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11973 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11974 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11975
11976 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11977
11978 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11979
ea2c3968 11980 * ramap.c (ramap_rp): Removed bogus `;'.
729dbac3
DH
11981
11982 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11983 problem.
11984
11985 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11986 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11987 Read SCM objects rather than scm_bits_t values.
11988
11989 * tags.h (SCM_VOIDP_TEST): Removed.
11990
11991 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
11992 value of 2 now corresponds to the former 1, the current 1
11993 corresponds to the former situation that SCM_VOIDP_TEST was
11994 defined.
11995
58bee6a8
TTN
11996 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
11997 If this appears to be not ANSI compliant, we will change it to
729dbac3
DH
11998 typedef struct scm_unused_struct { } * SCM;
11999 Thanks to Han-Wen Nienhuys for the suggestion.
12000
12001 * unif.c (scm_array_set_x): Fix typing problem, and use
12002 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
12003 dealing with uniform vectors.
12004
6b1b030e
ML
120052001-05-27 Michael Livshin <mlivshin@bigfoot.com>
12006
12007 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
12008 (scm_igc): mark from them, too (precisely, not conservatively!).
12009
12010 * root.h (scm_gc_registered_roots): new object in
12011 scm_sys_protects.
12012
12013 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
12014 `scm_protect_object'. shouldn't call it at all, though, it seems.
12015
12016 * gc.c (scm_[un]protect_object): deprecated.
12017 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
12018 (scm_gc_[un]register_root[s]): new.
12019
12020 * gc.h: add prototypes for scm_gc_[un]protect_object,
12021 scm_gc_[un]register_root[s].
12022
c014a02e
ML
120232001-05-26 Michael Livshin <mlivshin@bigfoot.com>
12024
12025 revert the controversial part of the 2001-05-24 changes.
12026
0120801d
MV
120272001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
12028
f4e0611e
MV
12029 * modules.c (scm_env_module): Exported to Scheme.
12030
0120801d 12031 * eval.c (scm_debug_opts): New option `show-file-name'.
729dbac3 12032
0120801d 12033 * debug.h (SCM_SHOW_FILE_NAME): New.
729dbac3 12034
0120801d
MV
12035 * backtrace.c: Include "libguile/filesys.h".
12036 (sym_base, display_backtrace_get_file_line,
12037 display_backtrace_file, display_backtrace_file_and_line): New.
12038 (display_frame): Call display_backtrace_file_and_line if that is
12039 requested.
12040 (display_backtrace_body): Call scm_display_backtrace_file if
12041 requested.
12042
12043 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
12044 Prototypes removed since there's no definition for these
12045 functions.
12046
880a7d13
MG
120472001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12048
12049 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
12050 Changed use of scm_array->scm_array_t and
12051 scm_array_dim->scm_array_dim_t to enable build with
12052 --disable-deprecated.
12053
1be6b49c
ML
120542001-05-24 Michael Livshin <mlivshin@bigfoot.com>
12055
12056 The purpose of this set of changes is to regularize Guile's usage
12057 of ANSI C integral types, with the following ideas in mind:
12058
d69c867a
ML
12059 - SCM does not nesessarily have to be long.
12060 - long is not nesessarily enough to store pointers.
1be6b49c
ML
12061 - long is not nesessarily the same size as int.
12062
12063 The changes are incomplete and possibly buggy. Please test on
12064 something exotic.
12065
12066 * validate.h
12067 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
12068 new macros.
12069
12070 * unif.h: type renaming:
12071 scm_array -> scm_array_t
12072 scm_array_dim -> scm_array_dim_t
12073 the old names are deprecated, all in-Guile uses changed.
12074
12075 * tags.h (scm_ubits_t): new typedef, representing unsigned
12076 scm_bits_t.
12077
12078 * stacks.h: type renaming:
12079 scm_info_frame -> scm_info_frame_t
12080 scm_stack -> scm_stack_t
12081 the old names are deprecated, all in-Guile uses changed.
12082
12083 * srcprop.h: type renaming:
12084 scm_srcprops -> scm_srcprops_t
12085 scm_srcprops_chunk -> scm_srcprops_chunk_t
12086 the old names are deprecated, all in-Guile uses changed.
12087
12088 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
12089 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
12090 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
12091 vectors.c, vports.c, weaks.c:
12092 various int/size_t -> size_t/scm_bits_t changes.
12093
12094 * random.h: type renaming:
12095 scm_rstate -> scm_rstate_t
12096 scm_rng -> scm_rng_t
12097 scm_i_rstate -> scm_i_rstate_t
12098 the old names are deprecated, all in-Guile uses changed.
12099
12100 * procs.h: type renaming:
12101 scm_subr_entry -> scm_subr_entry_t
12102 the old name is deprecated, all in-Guile uses changed.
12103
12104 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
12105 type renaming:
12106 scm_option -> scm_option_t
12107 the old name is deprecated, all in-Guile uses changed.
12108
12109 * objects.c: various long -> scm_bits_t changes.
12110 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
12111
12112 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
12113 SCM_I_FIXNUM_BIT.
12114
12115 * num2integral.i.c: new file, multiply included by numbers.c, used
12116 to "templatize" the various integral <-> num conversion routines.
12117
12118 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
12119 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
12120 deprecated.
12121 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
12122 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
12123 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
12124 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
12125 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
12126 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
12127 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
12128 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
12129 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
12130 scm_num2size): new functions.
12131
d69c867a 12132 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
1be6b49c
ML
12133
12134 * load.c: change int -> size_t in various places (where the
12135 variable is used to store a string length).
12136 (search-path): call scm_done_free, not scm_done_malloc.
12137
12138 * list.c (scm_ilength): return a scm_bits_t, not long.
12139 some other {int,long} -> scm_bits_t changes.
12140
12141 * hashtab.c: various [u]int -> scm_bits_t changes.
12142 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
12143 (scm_ihashx): n: uint -> scm_bits_t
12144 use scm_bits2num instead of scm_ulong2num.
12145
12146 * gsubr.c: various int -> scm_bits_t changes.
12147
12148 * goops.[hc]: various {int,long} -> scm_bits_t changes.
12149
d69c867a 12150 * gh_data.c (gh_num2int): no loss of precision any more.
1be6b49c
ML
12151
12152 * gh.h (gh_str2scm): len: int -> size_t
12153 (gh_{get,set}_substr): start: int -> scm_bits_t,
12154 len: int -> size_t
12155 (gh_<num>2scm): n: int -> scm_bits_t
12156 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
12157 (gh_length): return scm_bits_t, not unsigned long.
12158
12159 * gc.[hc]: various small changes relating to many things stopping
12160 being long and starting being scm_[u]bits_t instead.
12161 scm_mallocated should no longer wrap around.
12162
12163 * fports.h: type renaming:
12164 scm_fport -> scm_fport_t
12165 the old name is deprecated, all in-Guile uses changed.
12166
12167 * fports.c (fport_fill_input): count: int -> scm_bits_t
12168 (fport_flush): init_size, remaining, count: int -> scm_bits_t
12169
12170 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
12171 those prototypes, as the functions they prototype don't exist.
12172
12173 * fports.c (default_buffer_size): int -> size_t
12174 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
12175 default_size: int -> size_t
12176 (scm_setvbuf): csize: int -> scm_bits_t
12177
12178 * fluids.c (n_fluids): int -> scm_bits_t
12179 (grow_fluids): old_length, i: int -> scm_bits_t
12180 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
12181 scm_bits_t
12182 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
12183
12184 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
12185 the new and shiny SCM_NUM2INT.
12186
12187 * extensions.c: extension -> extension_t (and made a typedef).
12188
12189 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
12190 there are no nasty surprises if/when the various deeply magic tag
12191 bits move somewhere else.
12192
12193 * eval.c: changed the locals used to store results of SCM_IFRAME,
12194 scm_ilength and such to be of type scm_bits_t (and not int/long).
12195 (iqq): depth, edepth: int -> scm_bits_t
12196 (scm_eval_stack): int -> scm_bits_t
12197 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
12198 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
12199 i: int -> scm_bits_t
12200
12201 * environments.c: changed the many calls to scm_ulong2num to
12202 scm_ubits2num.
12203 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
12204
12205 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
12206
12207 * debug.h: type renaming:
12208 scm_debug_info -> scm_debug_info_t
12209 scm_debug_frame -> scm_debug_frame_t
12210 the old names are deprecated, all in-Guile uses changed.
12211 (scm_debug_eframe_size): int -> scm_bits_t
12212
12213 * debug.c (scm_init_debug): use scm_c_define instead of the
12214 deprecated scm_define.
12215
12216 * continuations.h: type renaming:
12217 scm_contregs -> scm_contregs_t
12218 the old name is deprecated, all in-Guile uses changed.
12219 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
12220 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
12221
12222 * continuations.c (scm_make_continuation): change the type of
d69c867a 12223 stack_size from long to scm_bits_t.
1be6b49c
ML
12224
12225 * ports.h: type renaming:
12226 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
12227 scm_port -> scm_port_t
12228 scm_ptob_descriptor -> scm_ptob_descriptor_t
12229 the old names are deprecated, all in-Guile uses changed.
12230 (scm_port_t.entry): int -> scm_bits_t.
12231 (scm_port_t.line_number): int -> long.
12232 (scm_port_t.putback_buf_size): int -> size_t.
12233
12234 * __scm.h (long_long, ulong_long): deprecated (they pollute the
d69c867a 12235 global namespace and have little value beside that).
1be6b49c
ML
12236 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
12237 SCM handle).
12238 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
d69c867a 12239 exist (for size_t & ptrdiff_t).
1be6b49c
ML
12240 (scm_sizet): deprecated.
12241
12242 * Makefile.am (noinst_HEADERS): add num2integral.i.c
12243
a6219f22
MV
122442001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
12245
12246 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
12247 SCM_VARIABLE_INIT since that it what it used to be.
12248
12249 * deprecation.c (scm_include_deprecated_features): Make docstring
9a5fa6e9 12250 ANSIsh. Thanks to Matthias Köppe!
a6219f22 12251
311b6a3c
MV
122522001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
12253
9dfc4faa
MV
12254 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
12255 needed for weak-key hashtables.
12256
12257 * procs.c (scm_make_subr_with_generic): Add missing last argument
12258 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
12259
12260 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
12261 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
311b6a3c
MV
12262
12263 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
12264
2fc933fe
MV
122652001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
12266
57ae112d
MV
12267 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
12268 `duplicate_string'. Do not use an indirect cell, store symbol
12269 directly in collision list of hash table.
12270 (duplicate_string): Removed.
58bee6a8 12271
57ae112d
MV
12272 * init.c (scm_init_guile_1): Call scm_init_extensions.
12273
12274 * Makefile.am: Add "extensions.c" and related files in all the
12275 right places.
12276
12277 * extensions.h, extension.c: New files.
12278
12279 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
12280
2fc933fe
MV
12281 * modules.h (scm_system_module_env_p): Move out of deprecated
12282 section.
12283
12284 * rw.h (scm_init_rw): Added prototype.
12285
12286 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
12287 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
12288 New functions. They replace scm_make_gsubr and
12289 scm_make_gsubr_with_generic. The `make' variants only create the
12290 gsubr object, while the `define' variants also put it into the
12291 current module. Changed all callers.
12292 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
12293
12294 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
12295 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
12296 functions. They replace scm_make_subr, scm_make_subr_opt and
12297 scm_make_subr_with_generic. The `make' variants only create the
12298 subr object, while the `define' variants also put it into the
12299 current module. Changed all callers.
12300 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
12301 Deprecated.
12302
12303 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
12304 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
12305 the comments above.
58bee6a8 12306
18928596
NJ
123072001-05-19 Neil Jerram <neil@ossau.uklinux.net>
12308
12309 * throw.c (scm_lazy_catch): Slight docstring clarification.
12310
21a13beb
MV
123112001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
12312
e2b6ddc6
MV
12313 * throw.c: Lazy-catch handlers are no longer allowed to return.
12314 Fixed comments throughout.
12315 (scm_ithrow): Signal an error when a lazy-catch handler returns.
12316 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
12317 recognized as such.
12318
21a13beb
MV
12319 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
12320 refered to s_scm_minor_version previously.
12321
12322 * modules.h, modules.c: Moved around a lot of code so that
12323 deprecated features appear at the bottom.
12324 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
12325 module_prefix, make_modules_in_var, beautify_user_module_x_var,
12326 scm_the_root_module, scm_make_module, scm_ensure_user_module,
12327 scm_load_scheme_module): Deprecated.
12328 (scm_system_module_env_p): Return SCM_BOOL_T directly for
12329 environments corresponding to the root module.
12330 (convert_module_name, scm_c_resolve_module,
12331 scm_c_call_with_current_module, scm_c_define_module,
12332 scm_c_use_module, scm_c_export): New.
12333 (the_root_module): New static variant of scm_the_root_module. Use
12334 it everywhere instead of scm_the_root_module.
58bee6a8 12335
21a13beb
MV
12336 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
12337 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
12338 (scm_c_with_fluid): New.
12339 (scm_with_fluids): Use scm_c_with_fluids instead of
12340 scm_internal_with_fluids.
58bee6a8 12341
21a13beb
MV
12342 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
12343 `scm_init_goops'. Do not explicitly create/switch modules.
12344 Return SCM_UNSPECIFIED.
12345 (scm_init_goops): Only register `%init-goops-builtins' procedure.
12346 (scm_load_goops): Use scm_c_resolve_module instead of
12347 scm_resolve_module.
58bee6a8 12348
21a13beb
MV
12349 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
12350 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
12351 `scm_init_rw' prior to loading the startup files.
12352
12353 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
12354 scm_init_rdelim. Do not explicitly create/switch modules.
12355 Return SCM_UNSPECIFIED.
12356 (scm_init_rdelim): Only register `%init-rdelim-builtins'
12357 procedure.
58bee6a8 12358
21a13beb
MV
12359 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
12360 explicitly create/switch modules. Return SCM_UNSPECIFIED.
12361 (scm_init_rw): Only register `%init-rw-builtins' procedure.
12362
12363 * script.c (scm_shell): Evaluate the compiled switches in the
12364 current module, not in the root module.
12365
123662001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
12367
12368 * fluids.c (scm_c_with_fluids): Rename from
12369 scm_internal_with_fluids.
12370 (scm_internal_with_fluids): Deprecated.
12371 (scm_c_with_fluid): New.
12372
09cb9e73
DH
123732001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12374
12375 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
12376
12377 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
12378 accessed with SCM_C[AD]R.
12379
12380 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
12381
c81ea65d
RB
123822001-05-16 Rob Browning <rlb@cs.utexas.edu>
12383
12384 * version.c (s_scm_major_version): doc fixes.
12385 (s_scm_minor_version): doc fixes.
12386 (s_scm_minor_version): new function.
12387
12388 * version.h (scm_init_version): new function.
12389
12390 * versiondat.h.in: add GUILE_MICRO_VERSION.
12391
887dfa7d
DH
123922001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
12393
12394 * deprecation.c (scm_init_deprecation): Renamed
12395 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
12396
78930a69
MV
123972001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
12398
12399 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
12400 dependent on cpp_cnvt.awk
12401
39cde5c5
MG
124022001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12403
12404 * script.c (scm_compile_shell_switches): New command line option
12405 `--use-srfi' for loading a list of SRFIs on startup.
12406 (scm_shell_usage): Added `--use-srfi' to help message.
12407
f3f9dcbc
MV
124082001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12409
78930a69 12410 Merged from mvo-vcell-cleanup-1-branch.
887dfa7d 12411
f3f9dcbc
MV
12412 The concept of vcells has been removed from Guile. With it,
12413 explicit obarrays and associated operations are gone. Use
12414 hashtables instead of obarrays.
887dfa7d 12415
f3f9dcbc
MV
12416 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
12417 result as variable instead of vcell. Glocs no longer point to a
12418 vcell but to a variable. Use scm_c_define instead of
12419 scm_sysintern and treat the result as a variable (which it is),
12420 not a vcell.
887dfa7d 12421
f3f9dcbc
MV
12422 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
12423 SCM_DEFVARIABLEP): Deprecated.
12424 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
12425 (variable_print): Do not print name of variable.
12426 (variable_equalp): Compare values, not vcells.
12427 (anonymous_variable_sym): Removed.
12428 (make_vcell_variable): Removed.
12429 (make_variable): New, as replacement.
12430 (scm_make_variable, scm_make_undefined_variable): Do not take name
12431 hint parameter.
12432 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
12433 error in that case.
12434 (scm_builtin_variable): Deprecated.
12435
12436 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
12437 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
12438 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
12439 scm_sysintern, scm_sysintern0, scm_symbol_value0,
12440 scm_string_to_obarray_symbol, scm_intern_symbol,
12441 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
12442 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
12443 Deprecated and moved to "symbols-deprecated.c".
12444 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
12445 (scm_init_symbols): Call scm_init_symbols_deprecated.
12446 * symbols-deprecated.c: New file.
12447 * Makefile.am: Added symbols-deprecated.c and related files in all
12448 the right places.
887dfa7d 12449
f3f9dcbc
MV
12450 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
12451 SCM_GLOBAL_VCELL_INIT): Deprecated.
12452 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
12453 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
887dfa7d 12454
f3f9dcbc
MV
12455 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
12456 SCM_GLOC_SYM.
12457
12458 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
12459 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
12460 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
12461 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
12462 Changed according to the `throughout' comments.
12463
12464 * modules.h, modules.c (scm_module_system_booted_p): Changed type
12465 to `int'.
12466 (scm_module_type): Removed.
12467 (the_root_module): Renamed to the_root_module_var. Now points to
12468 a variable instead of a vcell. Updated all uses.
12469 (scm_the_root_module): Return SCM_BOOL_F when module systems
12470 hasn't been booted yet.
12471 (SCM_VALIDATE_STRUCT_TYPE): Removed.
12472 (scm_post_boot_init_modules): Made static.
12473 (scm_set_current_module): Call scm_post_boot_init_modules on first
12474 call.
12475 (make_modules_in, beautify_user_module_x, resolve_module,
12476 try_module_autoload, module_make_local_var_x): Tacked on "_var"
12477 suffix. Now point to variables instead of vcells. Updated all
12478 uses.
12479 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
12480 and return SCM_BOOL_F in that case.
12481 (scm_module_transformer): Likewise.
12482 (sym_module, scm_lookup_closure_module, scm_env_module): New.
12483 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
12484 (scm_eval_closure_lookup): Do not allow new definitions when
12485 `interface' flag is set.
12486 (scm_standard_interface_eval_closure): New.
12487 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
12488 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
12489 scm_c_lookup, scm_c_module_define, scm_c_define,
12490 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
12491 scm_modules_prehistory): New.
12492 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
12493 instead of scm_intern0.
887dfa7d 12494
f3f9dcbc
MV
12495 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
12496 symbol.
12497
12498 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
12499 hashtable operations to maintain the keywords, not obarray ones.
12500
12501 * init.c (scm_load_startup_files): Do not call
12502 scm_post_boot_init_modules. This is done by
12503 scm_set_current_module now.
12504 (scm_init_guile_1): Call scm_modules_prehistory. Call
12505 scm_init_variable early on.
12506
12507 * goops.c (s_scm_sys_goops_loaded): Get
12508 var_compute_applicable_methods from scm_sym2var, not from a direct
12509 invocation of scm_goops_lookup_closure.
12510
12511 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
12512
12513 * gc.c: Added simple debugging hack to mark phase of GC: When
12514 activated, do not tail-call scm_gc_mark. This gives nice
12515 backtraces.
12516 (scm_unhash_name): Removed.
12517
12518 * feature.c (features): Renamed to features_var. Now points to a
12519 variable instead of a vcell. Updated all uses.
12520
12521 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
12522 `scm_current_module_lookup_closure' which will do the right thing
12523 when the module system hasn't been booted yet.
12524 (SCM_GLOC_SYM): Removed.
12525 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
12526 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
887dfa7d 12527
f3f9dcbc
MV
12528 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
12529 instead of with vcells. Do not overwrite `var' with the result of
12530 the lookup, use the new `real_var' instead. Remove `var2' in
12531 exchange (which was only used with threads).
12532 (sym_three_question_marks): New.
12533 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
12534 `SCM_GLOC_SYM'.
12535 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
12536 (scm_m_atfop): Expect the function definition to be a variable
12537 instead of a vcell.
12538 (scm_macroexp): Do not use `unmemocar', explicitely remember the
12539 symbol instead.
12540 (scm_unmemocopy): Removed thoughts about anti-macro interface.
12541 (scm_eval_args): Use more explicit code in the gloc branch of the
12542 atrocious struct ambiguity test. The optimizer will sort this
12543 out.
12544 (scm_deval_args): Likewise.
12545 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
12546 remember the symbol instead. Added some comments where
12547 scm_tc3_cons_gloc really exclusively refers to structs.
12548 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
12549 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
12550 of scm_sysintern in general.
12551
12552 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
12553 explicit magic.
12554
12555 * debug.c (s_scm_make_gloc): Only allow proper variables, no
12556 pairs. Put the variable directly in the gloc.
12557 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
12558 (scm_init_debug): Use scm_c_define instead scm_sysintern.
12559
12560 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
12561
12562 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
12563 scm_the_last_stack_fluid_var. It now points to a variable instead
12564 of a vcell. Updated all uses.
12565 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
12566 instead of a vcell. Updated all uses.
12567
12568 * _scm.h: Include "variables.h" and "modules.h" since almost
12569 everybody needs them now.
12570
12571 * root.h (scm_symhash, scm_symhash_vars): Removed.
12572 * gc.c (scm_init_storage): Do not initialize them.
887dfa7d 12573
7c33806a
DH
125742001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12575
12576 * eval.c (scm_init_eval): Initialize scm_undefineds and
58bee6a8 12577 scm_listofnull.
7c33806a
DH
12578
12579 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
12580 like the SCM_NEWCELL macro counterparts.
12581
12582 (scm_init_storage, scm_init_gc): Moved initialization of
12583 scm_tc16_allocated from scm_init_gc to scm_init_storage.
12584
12585 (scm_init_storage): Moved initialization of scm_undefineds and
12586 scm_listofnull to eval.c, initializion of scm_nullstr to
12587 strings.c, initializion of scm_nullvect to vectors.c.
12588
12589 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
12590 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
12591
12592 * init.c (scm_init_guile_1): Reordered some initializations and
12593 added dependcy information comments.
12594
12595 * load.c (scm_init_load): Use scm_nullstr.
12596
12597 * strings.c (scm_init_strings): Initialize scm_nullstr.
12598
12599 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
12600
11bbab47
MV
126012001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
12602
12603 * values.c (print_values): Print as a unreadable object, not as
9a5fa6e9 12604 multiple lines. Thanks to Matthias Köppe!
11bbab47 12605
5cd06d5e
DH
126062001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
12607
12608 * deprecation.c: Fixed copyright date.
12609
12610 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
12611 DEPRECATION_H to SCM_DEPRECATION_H.
12612
32bac999
TTN
126132001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
12614
12615 * guile-doc-snarf.in: Update copyright.
12616 Fix relative path bug. Thanks to Sergey Poznyakoff.
12617
c9dcc5ae
MV
126182001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12619
12620 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
12621 accept open ports. Thanks to Quetzalcoatl Bradley!
12622
7c582ec9
MG
126232001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12624
12625 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
12626 has 779 primitives on startup.
12627
284ab601
MV
126282001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
12629
12630 * eval.c (scm_i_eval): Copy expression before passing it to
12631 SCM_XEVAL. The copy operation was removed unintendedly during my
12632 change on 2001-03-25.
12633
910d1e40
ML
126342001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12635
9a5fa6e9 12636 from Matthias Köppe (thanks!):
910d1e40
ML
12637
12638 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12639 portable.
12640
12641 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12642 docstring.
12643
56e55ac7
DH
126442001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12645
12646 * gc.c (scm_init_gc): Added FIXME comment.
12647
12648 * hooks.c: Since hooks don't have a name any more, it is not
12649 necessary to include objprop.h.
12650
12651 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12652
12653 (symbol_name, scm_make_hook_with_name): Removed.
12654
12655 (scm_create_hook): Don't set the hook's name property.
12656
12657 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12658
12659 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12660
12661 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12662
12663 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12664 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12665 FLOBUFLEN and define it unconditionally.
12666
d204b24c
MV
126672001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12668
438201b4
MV
12669 * gh_data.c (gh_lookup): Call gh_module_lookup with
12670 `scm_current_module ()', not `#f'.
12671 (gh_module_lookup): Expect a module instead of an obarray as first
12672 argument and do lookup in that module.
56e55ac7 12673
d204b24c
MV
12674 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12675 arrays. The length of array is already determined differently and
12676 scm_uniform_vector_length does not work on arrays.
12677
26c1d549
MV
126782001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12679
fe7c2f88
MV
12680 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12681 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12682
26c1d549
MV
12683 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12684 they are not used. Changed `wrong type' error into `wrong num
12685 args' error. Changed all callers.
56e55ac7 12686
26c1d549
MV
12687 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12688 arguments are supplied.
12689
1c938eb8
TTN
126902001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12691
12692 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12693 describe `regexp/notbol' and `regexp/noteol' execution flags.
12694
3a6379f7
TTN
12695 * strop.c (scm_substring_move_x): Doc fix; nfc.
12696
c10ecc4c
MV
126972001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12698
12699 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12700 (scm_set_object_procedure_x): Use it to check argument. Fix
12701 docstring.
12702
12703 * evalext.c (scm_definedp): Fix docstring.
12704
a57a0b1e
GH
127052001-05-05 Gary Houston <ghouston@arglist.com>
12706
12707 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12708 support.
12709
7a095584
NJ
127102001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12711
12712 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12713 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12714 Change R4RS references to R5RS.
12715
12716 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12717 docstring source are correctly reproduced in the output (ii)
12718 we don't anymore get occasional trailing quotes. Also reorganized
12719 and commented the code a little.
12720
12721 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12722 fixes.
12723
dd2a6f3a
MG
127242001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12725
12726 * strop.c (scm_string_split): New procedure.
12727
12728 * strop.h (scm_string_split): Added prototype.
12729
00120130
GH
127302001-05-04 Gary Houston <ghouston@arglist.com>
12731
12732 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12733 Dale P. Smith.
12734
b65e6bfe
MV
127352001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12736
12737 * rw.c: Include "modules.h" and "strports.h".
12738
12739 * net_db.h (scm_gethost): Added prototype.
12740
12741 * deprecation.h, deprecation.c: New.
12742 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12743 (DOT_X_FILES): Added "deprecation.x".
12744 (modinclude_HEADERS): Added "deprecation.h".
12745
12746 * init.c: Include "deprecation.h".
12747 (scm_init_guile_1): Call scm_init_deprecation.
1c938eb8 12748
b65e6bfe
MV
127492001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12750
12751 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12752 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12753 New.
12754
b0e5fd8c
GH
127552001-04-29 Gary Houston <ghouston@arglist.com>
12756
12757 * rw.c: new file, implementing C part of module (ice-9 rw).
12758 (scm_read_string_x_partial): moved from ioext.c
12759 (scm_init_rw): new proc.
12760 * rw.h: new file.
12761 init.c: include rw.h and call scm_init_rw.
12762 Makefile.am: include rw.c and rw.h.
12763
0b2da99c
RB
127642001-04-28 Rob Browning <rlb@cs.utexas.edu>
12765
12766 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12767 know what's supposed to happen to it.
12768
12769 * list.h (scm_list_star): deprecation expired - removed.
12770
12771 * numbers.h (scm_dblproc): deprecation expired - removed.
12772 (SCM_UNEGFIXABLE): deprecation expired - removed.
12773 (SCM_FLOBUFLEN): deprecation expired - removed.
12774 (SCM_INEXP): deprecation expired - removed.
12775 (SCM_CPLXP): deprecation expired - removed.
12776 (SCM_REAL): deprecation expired - removed.
12777 (SCM_IMAG): deprecation expired - removed.
12778 (SCM_REALPART): deprecation expired - removed.
12779 (scm_makdbl): deprecation expired - removed.
12780 (SCM_SINGP): deprecation expired - removed.
12781 (SCM_NUM2DBL): deprecation expired - removed.
12782 (SCM_NO_BIGDIG): deprecation expired - removed.
12783
12784 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12785 (scm_tc_dblr): deprecation expired - removed.
12786 (scm_tc_dblc): deprecation expired - removed.
12787 (scm_tc16_flo): deprecation expired - removed.
12788 (scm_tc_flo): deprecation expired - removed.
12789
12790 * tag.h (scm_tag): deprecation expired - removed.
12791
12792 * tag.c: (scm_tag): deprecation expired - removed.
12793
12794 * ioext.c: (scm_fseek): deprecation expired - removed.
12795
12796 * ioext.h (scm_fseek): deprecation expired - removed.
12797
12798 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12799
12800 * gh.h (gh_int2scmb): deprecation expired - removed.
12801
e3334972
NJ
128022001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12803
12804 * stacks.c (scm_make_stack): Fix typo in docstring.
12805
a0f979ac
RB
128062001-04-27 Rob Browning <rlb@cs.utexas.edu>
12807
12808 * error.c (scm_sysmissing): deprecation expired - removed.
12809
12810 * error.h (scm_sysmissing): deprecation expired - removed.
12811
12812 * gc.c
12813 (scm_init_gc): gc-thunk deprecation expired - removed.
12814 (scm_gc_vcell): deprecation expired - removed.
12815 (gc_async_thunk): scm_gc_vcell related code removed.
12816
12817 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12818
12819 * strings.h
12820 (SCM_NSTRINGP): deprecation expired - removed.
12821 (SCM_NRWSTRINGP): deprecation expired - removed.
12822
12823 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12824
12825 * chars.h
12826 (SCM_ICHRP): deprecation expired - removed.
12827 (SCM_ICHR): deprecation expired - removed.
12828 (SCM_MAKICHR): deprecation expired - removed.
12829
12830 * ports.h
12831 (SCM_INPORTP): deprecation expired - removed.
12832 (SCM_OUTPORTP): deprecation expired - removed.
12833
253081cf
MV
128342001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12835
12836 * modules.c (scm_module_type): New.
12837 (scm_post_boot_init_modules): Initialize from Scheme value.
12838 (the_module, scm_current_module, scm_init_modules): the_module is
12839 now a C only fluid.
12840 (scm_current_module): Export to Scheme.
12841 (scm_set_current_module): Do not call out to Scheme, do all the
12842 work in C. Export procedure to Scheme. Only accept modules, `#f'
12843 is no longer valid as the current module. Only set
12844 scm_top_level_lookup_closure_var and scm_system_transformer when
12845 they are not deprecated.
12846 (scm_module_transformer, scm_current_module_transformer): New.
12847
12848 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12849 scm_current_module_transformer, scm_module_transformer): New.
1c938eb8 12850
253081cf
MV
12851 * gh_data.c: Removed FIXME comment about gh_lookup returning
12852 SCM_UNDEFINED. That's the right thing to do.
12853
12854 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12855 into the conditionally compiled sections.
12856 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12857 scm_current_module_transformer instead of scm_system_transformer.
12858 * init.c (start_stack): Move initialization of
12859 scm_system_transformer to the deprecated section.
1c938eb8 12860
1f7f9ed4
NJ
128612001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12862
12863 * throw.c (scm_throw): Correct docstring.
12864
66c73b76
GH
128652001-04-22 Gary Houston <ghouston@arglist.com>
12866
eefae538
GH
12867 * socket.c: attempted to improve the docstrings slightly.
12868
66c73b76
GH
12869 * net_db.c: remove bogus "close" declaration.
12870 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12871 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12872 moved to socket.c.
12873 * net_db.h: declarations moved too.
12874
12875 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12876 long.
12877 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12878 (VALIDATE_INET6): new macro.
12879 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12880 inet-pton and inet-ntop.
12881 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12882 (scm_addr_vector): use ipv6_net_to_num.
1c938eb8 12883
7a7f7c53
DH
128842001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12885
12886 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12887 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12888
12889 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12890 when compiled in debug mode.
12891
12892 (scm_gc_sweep): Only call smob's free function if it is defined.
12893
12894 * print.c (scm_iprin1): No need to check for validity of smob
12895 type or existence of print function.
12896
12897 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12898 Resizing will not work well with preemptive threading.
12899
12900 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12901
12902 (scm_make_smob_type): Extracted initialization of smob
12903 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12904 of the critical section.
12905
12906 (scm_smob_prehistory): Initialize all smob descriptors. By
12907 default, don't assign a smob free function: Most smob types don't
12908 need one.
12909
12910 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12911
e1368a8d
GH
129122001-04-21 Gary Houston <ghouston@arglist.com>
12913
12914 * socket.c (FLIP_NET_HOST_128): new macro.
12915 (scm_fill_sockaddr): use new macro.
12916 (scm_addr_vector): completed IPv6 address support. added const
12917 to the address parameter.
12918
5a525b84
GH
129192001-04-20 Gary Houston <ghouston@arglist.com>
12920
12921 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12922 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12923 is defined.
12924 (scm_addr_vector): use a switch instead of multiple if statements.
12925 Add support for IPv6 (incomplete) .
e1368a8d 12926 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5a525b84 12927
1a551638
DH
129282001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12929
12930 * struct.c (scm_free_structs): Only pairs may be accessed with
12931 SCM_C[AD]R.
12932
c07b3fef
MD
129332001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12934
a9d861e3
MD
12935 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12936
c07b3fef
MD
12937 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12938 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12939 parentheses in order to get the correct associativity.
12940
af7546eb
DH
129412001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12942
12943 * unif.c (scm_array_to_list): Added missing handling of arrays of
12944 bytes. Thanks to Masao Uebayashi for the bug report.
12945
4daecfee
DH
129462001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12947
12948 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12949 consistently.
12950
726d810a
DH
129512001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12952
12953 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12954
12955 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12956 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
1c938eb8 12957 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
726d810a
DH
12958 SCM_CLOSURE_FORMALS.
12959
12960 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12961 (scm_i_procedure_arity): Prefer stronger predicates like
12962 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12963
12964 * macros.c (macro_print): Extracted macro printing code from
12965 print.c and simplified it.
12966
12967 (scm_macro_type): Use SCM_MACRO_TYPE;
12968
12969 (scm_init_macros): Use macro_print for printing macros.
12970
12971 * print.c (scm_print_opts): Improved option documentation.
12972
12973 (scm_iprin1): Extracted printing of macros to macros.c.
12974 Simplified printing of ordinary closures.
12975
12976 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12977 Martin Grabmueller for the bug report.
12978
e038c042
DH
129792001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12980
12981 This patch eliminates some further applications of SCM_C[AD]R to
12982 non pair cells.
12983
12984 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12985 never been applied to real pairs.
12986
12987 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12988
12989 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
12990
12991 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
12992 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
12993 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
12994
12995 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
12996 Added.
12997
12998 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
12999 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
13000
13001 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
13002 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
13003 SCM_SET{AND,OR}_CAR.
13004
3453619b
GH
130052001-04-17 Gary Houston <ghouston@arglist.com>
13006
13007 * some initial support for IPv6:
1c938eb8 13008
3453619b
GH
13009 * socket.c (scm_fill_sockaddr): improve the argument validation.
13010 don't allocate memory until all args are checked. instead of
13011 unconditional memset of soka, try setting sin_len to 0 if
13012 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
13013 (scm_socket, scm_connect): extend docstrings for IPv6.
13014 (scm_init_socket): intern AF_INET6 and PF_INET6.
13015
216eedfc
DH
130162001-04-17 Niibe Yutaka <gniibe@m17n.org>
13017
13018 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
13019 matches SCM_DEFER_INTS at the beginning of the function.
13020
13021 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
13022
13023 * gc.c (scm_igc): Unconditionally call
13024 SCM_CRITICAL_SECTION_START/END.
13025
13026 * fluids.c (next_fluid_num): Unconditionally call
13027 SCM_CRITICAL_SECTION_START/END.
13028 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
13029
13030 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
13031 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
13032 Removed.
13033
13034 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
13035 Defined as nothing for the case of !defined(USE_THREADS).
13036 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
13037 Removed.
13038 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
13039 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
13040 LINE.
13041 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
13042 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
13043 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
13044 SCM_CRITICAL_SECTION_START/END.
13045 (SCM_REALLOW_INTS: Bug fix. Don't call
13046 SCM_THREAD_SWITCHING_CODE.
13047 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
13048 SCM_THREAD_SWITCHING_CODE directly.
13049 (SCM_ENTER_A_SECTION): Unconditionally use
13050 SCM_CRITICAL_SECTION_START/END. (was:
13051 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
13052
130532001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13054
13055 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
13056 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
13057 allowed to explicitly set this macro via the CFLAGS variable
13058 during make.
13059
13060 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
13061 (SCM_THREAD_CRITICAL_SECTION_START,
13062 SCM_THREAD_CRITICAL_SECTION_END): Renamed
13063 SCM_THREAD_CRITICAL_SECTION_START/END to
13064 SCM_CRITICAL_SECTION_START/END.
13065
f22ed5a0
KN
130662001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
13067
13068 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
13069 instead of bzero.
1c938eb8 13070
f22ed5a0 13071 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
1c938eb8 13072 (MISSING_BZERO_DECL): Remove the declaration.
f22ed5a0
KN
13073
13074 Thanks to NIIBE Yutaka.
13075
508ded1c
MD
130762001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13077
a087ba81
MD
13078 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
13079 goops module should be registered in order to work for an
13080 application which uses libguile statically linked.)
508ded1c 13081
e4b265d8
DH
130822001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
13083
13084 * numbers.[ch] (scm_num2long, scm_num2long_long,
13085 scm_num2ulong_long, scm_num2ulong): Argument position is an
13086 unsigned integer.
13087
13088 * environments.c (eval_environment_folder,
13089 import_environment_folder), gh_data.c (gh_scm2longs,
13090 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
13091 for integers and pointers, respectively.
13092
13093 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
13094 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
13095 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
13096 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
13097
13098 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
13099 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
13100 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
13101 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
13102 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
13103 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
13104
89d04205
NJ
131052001-04-09 Neil Jerram <neil@ossau.uklinux.net>
13106
13107 * strings.c (scm_read_only_string_p): Update docstring to reflect
13108 current (non-)usage of "read only" strings.
40f83c3e
NJ
13109 (scm_make_shared_substring): Clarify docstring by changing
13110 "semantics" to "arguments".
89d04205 13111
4d66be54
MG
131122001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13113
13114 * hooks.c (scm_make_hook, scm_make_hook_with_name),
13115 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
13116 improvements.
13117
1e6808ea
MG
131182001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13119
13120 The following changes make the documentation more consistent.
1c938eb8 13121
1e6808ea
MG
13122 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
13123 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
13124 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
13125 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
13126 ... @end lisp.
13127
13128 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
13129 (scm_array_dimensions, scm_make_shared_array),
13130 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
13131 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
13132 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
13133 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
13134 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
13135 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
13136 macros.c (scm_makmmacro), list.c (scm_append), environments.c
13137 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
13138 @example ... @end example to @lisp ... @end lisp.
13139
13140 * weaks.c (scm_weak_vector): Corrected docstring.
13141
13142 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
13143 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
13144 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
13145 (scm_hashx_set_x, scm_hashx_get_handle),
13146 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
13147 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
13148 vectors.c (scm_vector_fill_x), strings.c
13149 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
13150 objprop.c (scm_set_object_properties_x):
13151 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
13152 strports.c (scm_call_with_input_string), ports.c
13153 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
13154 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
13155 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
13156 (scm_make_weak_vector,scm_weak_vector_p),
13157 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
13158 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
13159 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13160 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
13161 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
13162 Made parameter names match documentation by renaming parameters
13163 and/or fixing docstrings.
1c938eb8 13164
1e6808ea
MG
13165 * numbers.c (scm_ash): Corrected Texinfo markup.
13166
13167 * strop.c (scm_string_index, scm_string_rindex),
13168 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
13169
13170 * vports.c (scm_make_soft_port), unif.c
13171 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
13172 (scm_dimensions_to_uniform_array, scm_transpose_array),
13173 (scm_array_in_bounds_p, scm_uniform_vector_ref),
13174 (scm_bit_count, scm_bit_position, scm_bit_count_star),
13175 (scm_array_to_list, scm_list_to_uniform_array),
13176 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
13177 (scm_open_input_string, scm_open_output_string),
13178 (scm_get_output_string), strop.c (scm_string_copy),
13179 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
13180 (scm_get_internal_real_time, scm_times),
13181 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
13182 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
13183 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
13184 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
13185 simpos.c (scm_system), random.c (scm_random_uniform),
13186 (scm_random_normal, scm_random_exp), ramap.c
13187 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
13188 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
13189 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
13190 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
13191 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
13192 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
13193 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
13194 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
13195 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
13196 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
13197 (scm_logand, scm_logior, scm_logxor, scm_lognot),
13198 (scm_integer_expt, scm_bit_extract, scm_logcount),
13199 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
13200 net_db.c (scm_inet_netof, scm_lnaof), modules.c
13201 (scm_interaction_environment), macros.c (scm_makacro),
13202 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
13203 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
13204 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
13205 (scm_fluid_ref), filesys.c (scm_open_fdes),
13206 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
13207 Docstring correction: `Returns' -> `Return'
13208
1c938eb8
TTN
13209 * gc.c (scm_set_debug_cell_accesses_x):
13210 (s_scm_gc_set_debug_check_freelist_x):
1e6808ea
MG
13211 * fluids.c (scm_fluid_p): Added texinfo markup.
13212
13213 * error.c (scm_strerror): Made docstring more precise.
13214
13215 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
13216 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
13217 (scm_symbol_p, scm_symbol_to_string), strorder.c
13218 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
13219 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
13220 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
13221 (scm_string_ci_geq_p), strop.c (scm_string_copy),
13222 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
13223
9a6976cd
DH
132242001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
13225
13226 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
13227 mode, as suggested by Michael Livshin.
13228
463b2219
ML
132292001-03-31 Michael Livshin <mlivshin@bigfoot.com>
13230
13231 * backtrace.c (display_backtrace_body): since the `print_state'
13232 variable is not used (instead its data field is used directly as
13233 `pstate'), protect it from the hungry compiler optimizations.
13234 thanks to Bill Schottstaedt for the report.
13235
61045190
DH
132362001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13237
13238 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
13239 It is only defined and used if guile is compiled with
13240 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
13241 let cells with a free_cell type tag be visible outside of the
13242 garbage collector when in debug mode.
13243
13244 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
13245
13246 (scm_assert_cell_valid): Use a local static variable to avoid
13247 recursion.
13248
13249 (MARK): Only check for rogue cell pointers in debug mode. Use
13250 scm_cellp for this purpose and place all checks for rogue pointers
13251 into that function. Further, since due to conservative scanning
13252 we may encounter free cells during marking, don't use the standard
13253 cell type accessor macro to determine the cell type.
13254
13255 (scm_cellp): Check if the cell pointer actually points into a
13256 card header.
13257
13258 (scm_init_gc): Initalize scm_tc16_allocated.
13259
13260 * gc.h (GCH): Renamed to SCM_GC_H.
13261
13262 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
13263 might be unnecessary, but I feel better this way :-)
13264
13265 (SCM_GC_CELL_TYPE): New macro.
13266
13267 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
13268 in guile, and it is unlikely that they will be applied to real
13269 pairs anyway.
13270
13271 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
13272
13273 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
13274 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
13275
13276 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
13277 make sure that in debug mode no free cell will ever be visible
13278 outside of the garbage collector.
13279
85d6df6a
DH
132802001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13281
13282 * async.c (scm_asyncs_pending): Don't use != to compare SCM
13283 values.
13284
13285 * async.c (scm_system_async), variable.c (scm_make_variable,
13286 scm_make_undefined_variable): Use scm_cons to create a pair.
13287
13288 * debug.c (scm_reverse_lookup): Perform proper type checking.
13289 Remove suspicious use of SCM_SLOPPY_CONSP.
13290
13291 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
13292 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
13293 the corresponding optimization.
13294
13295 * eval.c (iqq): Use proper type check.
13296
13297 (scm_m_expand_body): Remove redundant type checks.
13298
13299 (promise_print): Don't access promise cells as pairs.
13300
13301 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
13302 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
13303 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
13304 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
13305 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
13306
13307 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
13308 (scm_iprin1): Use new macro predicate and accessors.
13309
13310 * eval.h (scm_tc16_macro): Removed declaration. It is declared
13311 in macros.h.
13312
13313 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
13314 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
13315 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
13316 SCM_VARIABLE_H. Even the macros that are used to inhibit
13317 including a header file twice should be in the SCM_ namespace.
13318
13319 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
13320 properties.c (scm_primitive_property_ref,
13321 scm_primitive_property_del_x): Prefer stronger predicates like
13322 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13323
13324 * gc.c (MARK): Use proper macros to access procedure-with-setter
13325 cell elements and closure cell elements.
13326
13327 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
13328 access free cells as pairs.
13329
13330 (scm_unprotect_object): scm_hashq_get_handle returns #f if
13331 no hashtab entry is found.
13332
13333 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
13334 SCM_CLR_PORT_OPEN_FLAG.
13335
13336 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
13337 use SCM_SET_C[AD]R for uninitialized cells.
13338
13339 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
13340 If the hashtable has no slots, return #f instead of '(). This
13341 unifies the return value with most assoc-functions.
13342
13343 (scm_hash_fn_ref): Use proper type check.
13344
13345 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
13346 Removed references to non-existing functions from documentation.
13347
13348 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
13349 access keyword cell elements.
13350
13351 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
13352 macros.
13353
13354 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
13355
13356 * print.c (scm_iprlist): Added comment. Improved loop
13357 conditions.
13358
13359 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
13360 pairs.
13361
13362 * smob.c (scm_markcdr): Don't access smob cells as pairs.
13363
13364 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
13365
13366 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
13367 cells as pairs.
13368
13369 * variable.c (variable_print, variable_equalp, scm_variable_ref,
13370 scm_variable_set_x): Use proper macros to access variable cell
13371 elements.
13372
13373 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
13374
13375 * variable.h (SCM_VARVCELL): Don't access variable cells as
13376 pairs.
13377
13378 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
13379 added FIXME comment, removed register specifier.
13380
1b27e91a
KN
133812001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
13382
13383 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
13384 * init.c (scm_init_guile_1): Don't init goopscore module.
13385
16c634ec
MV
133862001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13387
13388 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
13389
91344ceb
MG
133902001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13391
13392 * strop.c (scm_string_to_list): Fixed docstring markup.
13393 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
13394 (scm_string_downcase, scm_string_capitalize_x),
13395 (scm_string_capitalize): Rewrote and corrected docstrings.
13396 (scm_string_ci_to_symbol): Made docstring more explicit.
13397
07576812
MV
133982001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13399
13400 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
13401 eval.c can use it.
13402 (scm_call_with_values): Removed.
13403 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
13404 so that it can be exported.
13405 (scm_call_with_values): Removed.
1c938eb8 13406
07576812
MV
13407 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
13408 * eval.c: Include "libguile/values.h"
13409 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
13410 New.
13411 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
13412 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
13413 New delcarations to support above change.
13414
13415 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
13416 errors with last change.
1c938eb8 13417
07576812
MV
134182001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
13419
13420 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
13421 scm_i_eval): Moved the application of the system transformer from
13422 scm_i_eval to scm_primitive_eval.
13423
a17bb5fd
NJ
134242001-03-23 Neil Jerram <neil@ossau.uklinux.net>
13425
a6be01a4
NJ
13426 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
13427
a17bb5fd
NJ
13428 * strop.c (scm_string_index): Fix docstring line break
13429 regression.
13430
13431 * list.c (scm_cons_star): Fix docstring typo.
13432
be54b15d
DH
134332001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13434
13435 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
13436 (big2str), ports.c (scm_drain_input), read.c (scm_read,
13437 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
13438 scm_make_string, scm_string_append), strports.c (st_resize_port,
13439 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
13440 scm_makstr with calls to scm_allocate_string.
13441
13442 * strings.[ch] (scm_allocate_string): New function.
13443
13444 * strings.[ch] (scm_makstr): Deprecated.
13445
789ecc05
GH
134462001-03-18 Gary Houston <ghouston@arglist.com>
13447
6d163216
GH
13448 * posix.c (scm_tmpnam): check that return value from tmpnam is not
13449 NULL. rewrote the docstring.
13450 (scm_mkstemp): new procedure implementing "mkstemp!".
13451 * posix.h: declare scm_mkstemp.
13452
789ecc05
GH
13453 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
13454 normally it would be found in netdb.h.
13455
c6c79933
GH
134562001-03-17 Gary Houston <ghouston@arglist.com>
13457
e9e225e5
GH
13458 * sort.c (scm_sort): move sortvec variable to avoid a compiler
13459 warning when HAVE_ARRAYS is not defined. move len too.
13460
13461 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
13462 (EXTRA_DOT_X_FILES): let configure set the value.
13463 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
13464
c6c79933
GH
13465 * gc.c (scm_must_malloc): changed the comment explaining when
13466 scm_must variants of malloc/free etc., should be used, based on
13467 explanation from Dirk Herrmann.
13468 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
13469 string with procedure name. use scm_must_malloc instead of malloc.
13470 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
13471 of malloc/free.
13472 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
13473 scm_ungetc): use scm_must variants of malloc/realloc/free.
13474 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
13475
b3fcac34
DH
134762001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13477
13478 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13479 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
13480 scm_wrong_type_arg instead.
13481
13482 (SCM_WNA): Deprecated.
13483
13484 * error.[ch] (scm_wta): Deprecated.
13485
13486 * numbers.c (s_i_log): Minor comment fix.
13487
13488 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
13489 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
13490 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
13491 wrong-num-args or misc errors.
13492
13493 * unif.c (scm_make_shared_array, scm_transpose_array,
13494 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
13495 Validate the rest argument (note: this is only done when guile is
13496 built with SCM_DEBUG_REST_ARGUMENT=1)
13497
13498 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
13499 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
13500
13501 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
13502 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
13503
68baa7e7
DH
135042001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13505
13506 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
13507 instead of scm_wrong_num_args.
13508
13509 * coop-threads.c: Don't include libguile/strings.h. (Was only
13510 needed for former implementation of SCM_WRONG_NUM_ARGS.)
13511
13512 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
13513 wrong-num-args errors.
13514
9f40cd87
DH
135152001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13516
13517 * error.[ch] (scm_error_num_args_subr): New function.
13518
5352393c
MG
135192001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13520
13521 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
13522 (scm_length, scm_append, scm_reverse, scm_list_ref),
13523 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
13524 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
13525 (scm_delete1_x), gc.c (scm_map_free_list),
13526 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
13527 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
13528 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
13529 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
13530 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
13531 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
13532 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
13533
13534 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
13535 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13536 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
13537 symbols.c (scm_symbol_interned_p), numbers.c
13538 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
13539 markup.
13540
a9205f07
KN
135412001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
13542
13543 * snarf.h (SCM_CONST_LONG): Deprecated.
13544 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
13545
6d583887
MV
135462001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13547
13548 * numbers.c (scm_num2ulong): Check that a bignum is positive
13549 before looking at the magnitude. Correctly check for overflow
13550 during conversion.
13551 (scm_num2long_long): Likewise.
13552 (scm_num2ulong_long): New.
13553 (ULONG_LONG_MAX): Define if not already defined.
13554 * numbers.h: (scm_num2ulong_long): New prototype.
1c938eb8 13555
e87a03fc
MG
135562001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13557
13558 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
13559
13560 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
13561 (SCM_OPOUTSTRPORTP): New predicate macros.
13562 (scm_open_input_string, scm_open_output_string),
13563 (scm_get_output_string): New prototypes.
1c938eb8 13564
e87a03fc
MG
13565 * strports.c (scm_open_input_string, scm_open_output_string),
13566 (scm_get_output_string): New procedures (SRFI-6 compliant).
13567 Made scm_tc16_strport non-static.
13568
160bb34a
DH
135692001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13570
13571 * macros.h (SCM_ASSYNT): Removed unused object argument from
13572 signature.
13573
13574 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
13575 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
13576 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
13577 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
13578 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
13579 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
13580 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
13581 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13582 scm_m_atdispatch): Removed unused object argument from call to
13583 SCM_ASSYNT.
13584
80dee77b
DH
135852001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13586
13587 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
13588 const int* to reflect that the input array of integers remains
13589 unchanged. Thanks to Brett Viren for the hint.
13590
d3dd80ab
MG
135912001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13592
13593 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
13594 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
13595 in various places.
13596 (gh_scm2newstr, gh_symbol2newstr): Change call to
13597 scm_must_malloc() to malloc(), because user-free()able memory is
13598 allocated.
13599
13600 * gc.c: Added declaration of `scm_debug_check_freelist'.
13601
26a3038d
MG
136022001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13603
13604 * ports.c (scm_port_mode): Changed `mode' array size to 4.
13605
1f3908c4
KN
136062001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
13607
13608 * strports.c (scm_object_to_string): New procedure.
13609 (scm_strprint_obj): Deprecated.
13610 * strports.h: Reflect the changes.
13611
e11208ca
DH
136122001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
13613
13614 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
13615
13616 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13617 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
13618 SCM_ASSYNT to check for correct argument types. Either use some
13619 SCM_VALIDATE_* macro or an explicit test.
13620
13621 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
13622 misc-errors.
13623
13624 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
13625 instead of calling scm_wta.
13626
67e8151b
MG
136272001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13628
13629 * load.c (scm_primitive_load, scm_primitive_load_path),
13630 (scm_sys_search_load_path): Corrected docstrings (file ->
13631 filename).
13632
13633 * eval.c (scm_force): Added texinfo markup to docstring.
13634 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13635
13636 * debug-malloc.c: Reinserted #include <stdio.h>.
13637
e0c08f17
KN
136382001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13639
e39c3de4
KN
13640 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13641
e0c08f17
KN
13642 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13643 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13644 Use SCM_LISTn instead of scm_listify.
13645
e6e2e95a
MD
136462001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13647
13648 * _scm.h: Removed #include <errno.h>.
13649
13650 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13651 errno variable (can be a macro on some systems, for example when
13652 using linux libc with threads).
13653
13654 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13655 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13656 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13657 #include <errno.h> in these 20 out of 100 files.
1c938eb8 13658
97d0e20b
GH
136592001-03-10 Gary Houston <ghouston@arglist.com>
13660
13661 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13662 not already defined.
13663
e75341b3
MD
136642001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13665
13666 * coop.c: Inserted #include <stdio.h>.
13667
13668 * iselect.c: Reinserted #include <stdio.h>.
13669
74355186
MV
136702001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13671
13672 * posix.c: Replaced `#define' of __USE_XOPEN right before
13673 including unistd.h with a define of _GNU_SOURCE at the very top of
13674 the file.
13675
783e7774
KN
136762001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13677
13678 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13679 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13680 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13681 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13682 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13683 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13684 print.c, procprop.c, procs.c, properties.c, ramap.c,
13685 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13686 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13687 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
1c938eb8 13688 Remove #include <stdio.h>
783e7774
KN
13689 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13690
13691 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13692
9a677c37
MG
136932001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13694
13695 * posix.c (scm_gethostname): Set initial name length to 256 for
13696 Solaris.
13697
94e6d793
MG
136982001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13699
13700 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13701 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13702 (scm_sethostname, scm_gethostname): New prototypes.
13703
13704 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13705 <sys/file.h>, if present.
13706 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13707 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13708 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13709 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13710 (scm_sethostname, scm_gethostname): New procedures.
13711
650a1cf9
NJ
137122001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13713
13714 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13715 not optional (ii) "recommend" spelling correction.
13716
9636b49c
MD
137172001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13718
5e4a4d09
MD
13719 * ramap.c (racp): Removed optimization which caused array copying
13720 to fail if the two arrays shared storage. Re-inserted the IVDEP
13721 macros removed in the change of 2000-03-09. (Don't really have a
13722 complete grasp of what they are for, but they seem to be necessary
13723 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13724
9636b49c
MD
13725 * hash.c (scm_string_hash): Don't downcase characters.
13726
04a4d666
MD
137272001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13728
9636b49c 13729 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
04a4d666
MD
13730 size from 277 --> 1009.
13731
13732 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13733 function.
13734
13735 * coop-threads.c: Fixed change of 2001-03-06.
1c938eb8 13736
04a4d666
MD
13737 * validate.h: Code formatting.
13738
66418d34
KN
137392001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13740
13741 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13742 (*.doc): Add dependency on guile-snarf.awk.in.
13743
13744 * guile-snarf.awk.in: Neglect spaces at the end of
13745 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13746 middle of docstrings. (To avoid the problem with gcc-2.96.)
13747
2ade72d7
DH
137482001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13749
13750 * coop-threads.c (scm_call_with_new_thread), load.c
13751 (scm_primitive_load, scm_sys_search_load_path), random.c
13752 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13753 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13754 (potentially) issue a scm-misc-error or wrong-num-args error
13755 message.
13756
13757 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13758 about the expected type with the wrong-type-arg error message.
13759
13760 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13761 a C level bug that can't be fixed from scheme anyway.
13762
586d7da2
MD
137632001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13764
13765 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13766 Duplicate bindings are OK in a let* since a let* is semantically
13767 equivalent to a nested set of let:s.
13768
1dd05fd8
MG
137692001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13770
13771 * print.c (scm_print_options): Fixed texinfo in docstring.
13772
13773 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13774 the underlying functions getservent, getprotoent or getnetent
13775 return NULL instead of signalling an error.
13776
439006bf
GH
137772001-03-04 Gary Houston <ghouston@arglist.com>
13778
13779 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13780 taking an unexpectedly large filename for an AF_UNIX socket from
13781 bind/connect/sendto (thanks to Martin Grabmueller).
1c938eb8 13782
439006bf
GH
13783 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13784 former and adjusted the latter.
13785 (scm_socket, scm_socketpair): cosmetic changes.
13786 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13787 size_t as socklen_t substitute. don't restrict args/return values
13788 to INUM: allow full range of int or size_t.
13789 (scm_fill_sockaddr): check arguments before allocating memory, to
13790 avoid leakage. use malloc, not scm_must_malloc.
13791 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13792 substitute. free the sockaddr structure before throwing an error.
13793 (scm_init_add_buffer): procedure removed, together with its static
13794 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13795 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13796 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13797 scm_sendto): use a local buffer instead of scm_addr_buffer.
13798 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13799 not size_t.
13800 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13801 call to detect whether recvfrom could be bothered to set the address.
13802 (scm_init_socket): don't call scm_init_addr_buffer.
13803
276dd677
DH
138042001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13805
13806 * debug.c (scm_procedure_source, scm_procedure_environment),
13807 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13808 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13809 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13810 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13811 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13812 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13813 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13814 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13815 scm_array_to_list, scm_array_prototype), validate.h
13816 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13817 scm_misc_error or scm_wrong_type_arg instead.
13818
13819 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13820
5e03762c
MD
138212001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13822
13823 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13824 (scm_sys_tag_body): Added.
13825
db4b4ca6
DH
138262001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13827
13828 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13829 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13830 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13831 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13832 options.c (scm_options), ports.c (scm_remove_from_port_table),
13833 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13834 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13835 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13836 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13837 instead.
13838
87e7741d
MD
138392001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13840
13841 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13842
d19b0aac
MV
138432001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13844
13845 * eval.c (scm_s_duplicate_bindings): New error message.
13846 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13847
2fd945df
MV
138482001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13849
13850 * eval.h (SCM_EVALIM2): New macro. Use it when a
13851 immediate, literal constant should be evaluated.
13852 * eval.c (scm_s_duplicate_formals): New error message string.
13853 (scm_c_improper_memq): New function.
13854 (scm_m_lambda): Check for duplicate arguments.
13855 (scm_ceval, scm_deval): When executing a body: only cons a new
13856 toplevel environment frame when it is different from the
13857 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13858 check for empty combinations; use SCM_EVALIM2 for the same reason
13859 in the non-toplevel loop.
13860 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13861 New labels with the meaning of their non-"nontoplevel" partners,
13862 but they are used when it is known that the body is not evaluated at
13863 top-level.
13864 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13865 reporting for empty combinations.
13866
9e6fc585
KN
138672001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13868
13869 * Remove dump facilities.
13870 * dump.c, dump.h: Removed.
13871 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13872 * init.c: Remove #include "libguile/dump.h".
13873 (scm_init_guile_1): Remove scm_init_dump.
13874 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13875 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13876 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13877 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13878
13879 * keywords.c: Remove #include "libguile/dump.h".
13880 (keyword_dump, keyword_undump): Removed.
13881 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13882
eae54bf0
MG
138832001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13884
13885 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13886 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13887 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13888 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13889 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13890 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13891 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13892 to @code{} as the texinfo manual recommends, converted the
13893 examples to use a @lisp{}-environment.
13894
13895 * strports.c (scm_eval_string): Cleaned up the docstring.
13896
13897 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13898 markup.
13899
13900 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13901 (scm_number_to_string, scm_string_to_number, scm_number_p)
13902 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13903 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13904 (scm_ash): Added texinfo markup and removed obsolete @refill.
13905 (scm_gr_p): Corrected comment.
13906 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13907 docstring) comments.
13908 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13909 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13910 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13911 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13912 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13913 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13914 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13915 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13916
23deee81
DH
139172001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13918
13919 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13920 (Obviously nobody compiles with SCM_RECKLESS defined...)
13921
13922 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13923
6fe692e9
MD
139242001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13925
13926 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13927
13928 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13929
27c37006
NJ
139302001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13931
13932 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13933 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13934 since use of `z' suggests that the arguments may be complex.
13935
13936 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13937 typos.
13938
2069af38
NJ
139392001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13940
13941 * dump.c (scm_binary_write, scm_binary_read), eval.c
13942 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13943 scm_guardian_greedy_p, scm_make_guardian), fports.c
13944 (scm_file_port_p): Minor docstring fixes.
13945
b42ff180
MV
139462001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13947
2069af38 13948 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
97ea55f8
MV
13949
13950 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13951 scm_i_eval.
13952 (make_class_from_template): Do not bother to set the current
13953 module around the call to DEFVAR, scm_eval takes care of that.
13954 (scm_init_goops): Make scm_module_goops and
13955 scm_goops_lookup_closure permanent objects.
1c938eb8 13956
97ea55f8
MV
13957 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13958 top level, create a fresh top-level environment for each
13959 expression instead of mutating the exisint frame. This is
13960 important when that frame is closed over.
13961
b42ff180
MV
13962 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13963 SCM_DIGSPERLONG instead of DIGSPERLONG.
13964
09f2ab1e
MV
139652001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13966
13967 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13968 before applying arrow procedure in `cond' and before applying
13969 receiver procedure in call-with-current-continuation.
13970 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13971 macro. The argument is expanded more than one time.
13972
13973 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13974 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13975
139762001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13977
13978 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13979 notice and license.
13980
7090240c
MG
139812001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13982
13983 * variable.c (scm_make_variable, scm_make_undefined_variable)
13984 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13985 (scm_variable_bound_p), values.c (scm_values)
13986 (scm_call_with_values), unif.c (scm_bit_count)
13987 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13988 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13989 (scm_read_only_string_p, scm_string_length, scm_string_ref)
13990 (scm_string_set_x, scm_substring, scm_string_append), stime.c
13991 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
13992 (scm_copy_random_state, scm_random), print.c (scm_newline)
13993 (scm_write_char, scm_simple_format), debug-malloc.c
13994 (scm_malloc_stats), environments.c (scm_environment_p)
13995 (scm_environment_bound_p, scm_environment_ref)
13996 (scm_environment_fold, scm_environment_define)
13997 (scm_environment_undefine, scm_environment_set_x)
13998 (scm_environment_cell, scm_environment_observe)
13999 (scm_environment_observe_weak, scm_environment_unobserve)
14000 (scm_make_eval_environment, scm_eval_environment_p)
14001 (scm_eval_environment_set_local_x, scm_eval_environment_local)
14002 (scm_eval_environment_imported)
14003 (scm_eval_environment_set_imported_x, scm_make_import_environment)
14004 (scm_import_environment_p, scm_import_environment_imports)
14005 (scm_import_environment_set_imports_x, scm_make_export_environment)
14006 (scm_export_environment_p, scm_export_environment_private)
14007 (scm_export_environment_set_private_x)
14008 (scm_export_environment_signature)
14009 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
14010 Added texinfo markup.
14011
14012 * ports.c (scm_drain_input): Lowercased argument to @var.
14013 (scm_current_input_port, scm_current_output_port): Filled in
14014 missing explanation.
14015 (scm_current_load_port, scm_set_current_output_port)
14016 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
14017 Added texinfo markup.
14018
14019 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
14020 (scm_release_arbiter): Added texinfo markup to docstrings.
14021 Changed `Returns' to `Return'.
14022 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
14023
25703850
NJ
140242001-02-16 Neil Jerram <neil@ossau.uklinux.net>
14025
14026 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
14027 by doubling them to `@@'.
14028
73c0fdce
MG
140292001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14030
14031 * numbers.c (scm_lognot), random.c (scm_random,
14032 scm_random_normal, scm_random_solid_sphere_x,
14033 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
14034 scm_random_exp), dynwind.c
14035 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
1c938eb8 14036
73c0fdce
MG
14037 * goops.c (scm_sys_initialize_object, scm_instance_p,
14038 scm_class_name, scm_class_precedence_list, scm_class_slots,
14039 scm_class_environment, scm_generic_function_name,
14040 scm_generic_function_methods, scm_method_generic_function,
14041 scm_method_specializers, scm_method_procedure, scm_make_unbound,
14042 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
14043 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
14044 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
14045 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
14046 scm_class_direct_supers, scm_class_direct_slots,
14047 scm_class_direct_subclasses, scm_class_direct_methods,
14048 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
14049 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
14050 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
14051 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
14052 scm_memoized_environment, scm_procedure_name,
14053 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
14054 objects.c
14055 (scm_class_of, scm_entity_p, scm_operator_p,
14056 scm_set_object_procedure_x, scm_object_procedure,
14057 scm_make_class_object), hooks.c (scm_make_hook_with_name,
14058 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
14059 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
14060 scm_hook_to_list), lang.c
14061 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
14062 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
14063 (scm_print_options, scm_port_with_print_state,
14064 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
14065 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
14066 scm_make_procedure_with_setter, scm_procedure), throw.c
14067 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
14068 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
14069 scm_stack_ref, scm_stack_length, scm_frame_p,
14070 scm_last_stack_frame, scm_frame_number, scm_frame_source,
14071 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
14072 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
14073 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
14074 (scm_dirname, scm_basename), dynwind.c
14075 (scm_wind_chain), read.c (scm_read_options, scm_read,
14076 scm_read_hash_extend), gc.c
14077 (scm_unhash_name), eval.c (scm_eval_options_interface,
14078 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
14079 (scm_display_error, scm_set_print_params_x,
14080 scm_display_application, scm_display_backtrace, scm_backtrace),
14081 async.c (scm_async, scm_system_async, scm_async_mark,
14082 scm_system_async_mark, scm_run_asyncs, scm_noop,
14083 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
14084 scm_mask_signals): Added docstrings.
14085
e228a203
KN
140862001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
14087
14088 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
14089 address of car/cdr. (Thanks to Dirk Herrmann)
14090 Use scm_sizet to obtain the length of strings.
14091 (Thanks to Matthias Koeppe)
14092
1552a59d
MV
140932001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
14094
14095 * symbols.c (scm_mem2symbol): Put a empty statement after the
14096 next_symbol label. This is mandated by ANSI, appearantly.
14097
3178f751
MV
140982001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14099
14100 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
14101 sense to compile for a specific kernel version. Do not include
14102 <asm/signal.h> while defining __KERNEL__. This hack should no
14103 longer be needed and caused problems.
14104
7af4defe
MV
141052001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
14106
14107 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
14108 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
14109 can not deal with immediates.
14110
5d6bb349
KN
141112001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
14112
14113 * list.c (scm_list_copy): Validate the first argument.
14114
ec9709f0
MV
141152001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
14116
14117 Fix evaluator so that top-level expressions are correctly
14118 evaluated with respect to the module system.
1c938eb8 14119
ec9709f0
MV
14120 * modules.h. modules.c (scm_current_module_lookup_closure): New
14121 function.
14122
14123 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
14124 prototypes.
14125 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
14126 names to better reflect their meaning.
14127
14128 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
14129 evaluated at top-level and synronize lookup closure before
14130 executing every subform.
14131 (scm_primitve_eval_x, scm_primitive_eval): New functions.
14132 (scm_eval_x, scm_eval): Reimplement in terms of
14133 scm_primitive_eval_x and scm_primitive_eval, respectively.
1c938eb8 14134
ec9709f0
MV
141352001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
14136
14137 * macros.c (scm_macro_name, scm_macro_transformer): Use
14138 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
14139 Thanks!
14140
42417394
KN
141412001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
14142
14143 * dump.c (scm_store_bytes): Store data size before data.
14144 (scm_restore_bytes): Restore data size. Takes a pointer to size.
14145 * dump.h (scm_restore_bytes): Updated.
14146
bf942687
KN
141472001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
14148
14149 * dump.c: Use double cells for update schedule.
14150
1be4270a
KN
141512001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
14152
14153 * ports.c (scm_unread_char): Take an optional argument.
14154
548728ea
MV
141552001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14156
14157 * modules.h (scm_selected_module, scm_current_module): Renamed
14158 scm_selected_module to scm_current_module to synchronize Scheme
14159 and C names.
14160 (scm_select_module, scm_set_current_module): Likewise. Changed
14161 all uses.
1c938eb8 14162
548728ea
MV
14163 * ports.c (scm_port_for_each): Make a snapshot of the port table
14164 before iterating over it. The table might change while the user
14165 code is running. With the snapshot, the user can depend on the
c5408bc3 14166 fact that each port that existed at the start of the iteration is
548728ea
MV
14167 encountered exactly once. (ice-9 popen) depends on this.
14168
cb0d8be2
DH
141692001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14170
14171 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
14172
14173 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
14174 range checking for the size parameter. Thanks to Martin
14175 Grabmueller for the hint.
14176
14177 (scm_makstr): Reordered string initialization to make interrupt
14178 deferring unnecessary.
14179
14180 * vectors.c (scm_make_vector): Fixed range checking.
14181
e382fdbe
DH
141822001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14183
14184 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
14185
14186 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
14187 checking of the size parameter for type correctness and valid
14188 range. Thanks to Rob Browning for reporting the problem. Instead
14189 of deferring interrupts, scm_remember_upto_here_1 is used.
14190
bf8f0922
KN
141912001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14192
14193 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
14194 (scm_dump_cell_update): Removed.
14195 (scm_dump_update): Renamed from scm_dump_object_update.
14196 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
14197 a pointer instead of returning a value.
14198 * keywords.c (keyword_undump): Updated.
14199
914cceec
KN
142002001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14201
14202 * dump.c, dump.h: Modified a lot.
5f17c66f 14203 (SCM_DUMP_COOKIE): Version 0.1
914cceec
KN
14204 (scm_dump_mark): Removed.
14205 (scm_restore_cell_object, scm_store_cell_object): New functions.
14206
14207 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
14208 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
14209 New slots: dump, undump.
14210 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
14211 Updated.
14212
14213 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
14214 (keyword_undump): Renamed from keyword_alloc.
14215 (scm_init_keywords): Set keyword_dump and keyword_undump.
14216
ecf470a2
ML
142172001-02-03 Michael Livshin <mlivshin@bigfoot.com>
14218
14219 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
14220 the deprecated SCM_DOUBLE_CELLP.
14221
14222 * tags.h (SCM_DOUBLE_CELLP): deprecated.
14223
03416a99
KN
142242001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
14225
14226 * dump.c, dump.h: New files.
14227 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
14228 * init.c: #include "libguile/dump.h".
14229 (scm_init_guile_1): Call scm_init_dump.
14230 * smob.h (scm_smob_descriptor): New slots: dump_mark,
14231 dump_dealloc, dump_store, undump_alloc, undump_restore,
14232 undump_init.
14233 * smob.c (scm_make_smob_type): Init the new slots.
14234 (scm_set_smob_dump, scm_set_smob_undump): New functions.
14235 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
14236
14237 * keywords.c: #include "libguile/dump.h".
14238 (keyword_dealloc, keyword_alloc): New functions.
14239 (scm_init_keywords): Set smob_dump and smob_undump.
14240
00ffa0e7
KN
142412001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
14242
14243 * vectors.c (scm_c_make_vector): New function.
14244 * vectors.h (scm_c_make_vector): Declared.
14245 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
14246 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
14247 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
14248 (scm_make_method_cache, scm_i_vector2list,
14249 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
14250 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
14251 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
14252 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
14253 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
14254 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
14255 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
14256 (scm_vector, scm_make_vector): Use scm_c_make_vector.
14257
14258 * hashtab.c (scm_c_make_hash_table): New function.
14259 * hashtab.h (scm_c_make_hash_table): Declared.
14260 * environments.c (scm_make_leaf_environment,
14261 scm_make_eval_environment), gc.c (scm_init_storage),
14262 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
14263 Use scm_c_make_hash_table.
14264
b8446ce8
MD
142652001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14266
14267 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
14268
e3239868
DH
142692001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14270
14271 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
14272 end of docstring.
14273
14274 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
14275 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
14276 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
14277 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
14278 srcprop.c (scm_source_properties, scm_set_source_properties_x,
14279 scm_source_property, scm_set_source_property_x), sort.c
14280 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
14281 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
14282 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
14283 docstrings.
14284
41ee56dd
MD
142852001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14286
14287 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
14288 really get that arg.
14289
b6311c08
KN
142902001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
14291
14292 * goops.c (s_scm_get_keyword): Bug fix.
14293
a49af0c0
DH
142942001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14295
14296 The following patch was sent by Martin Grabmueller. It makes sure
14297 that in case of parameter errors the correct function name is
14298 shown, and that parameter types are only checked once.
14299
14300 * strop.c (string_copy, string_upcase_x, string_downcase_x,
14301 string_capitalize_x): New functions. Each one performs the core
14302 functionality of the corresponding scm_* function.
14303
14304 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
14305 scm_string_downcase_x, scm_string_downcase,
14306 scm_string_capitalize_x, scm_string_capitalize): Reduced to
14307 parameter checking wrappers of the above functions.
14308
13070bd3
DH
143092001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14310
14311 * continuations.c, dynl.c, keywords.c, load.c: Include
14312 strings.h. Thanks to Bill Schottstaedt for the bug report.
14313
2f2b390c
DH
143142001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14315
14316 * backtrace.c (display_header): Make sure that line and column
14317 information is shown independent of whether the port the code was
14318 read from had an associated filename. Thanks to Martin
14319 Grabmueller for providing this patch.
14320
efa40607
DH
143212001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14322
14323 * fports.[ch] (scm_file_port_p): New primitive.
14324
a98bddfd
DH
143252001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14326
14327 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
14328 These are now defined in fports.c, strports.c and vports.c.
14329
14330 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
14331 vports.c (scm_tc16_sfport): Made variables (were macros defined in
14332 tags.h).
14333
14334 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
14335 (scm_make_sfptob): Made static. These return a type code now.
14336
14337 fports.c (scm_init_fports), strports.c (scm_init_strports),
14338 vports.c (scm_init_vports): Create the corresponding port types.
14339
14340 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
14341 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
14342
14343 * init.c (scm_init_guile_1): Make sure strports are initialized
14344 before gdbint.
14345
14346 * ports.[ch] (scm_make_port_type): Changed the return type to
14347 scm_bits_t.
14348
14349 * ports.c (scm_ports_prehistory): Don't create any port types
14350 here.
14351
14352 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
14353 against scm_tc16_fport directly.
14354
0419a528
DH
143552001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14356
14357 * srcprop.c (scm_set_source_property_x): Fix to handle
14358 (set-source-property! <obj> 'copy <datum>) correctly.
14359
6d36532c
GH
143602001-01-24 Gary Houston <ghouston@arglist.com>
14361
14362 * filesys.c (scm_link): docstring fix.
14363 * fports.h (scm_setfileno): obsolete declaration removed.
14364 * posix.c: bogus popen declaration removed.
14365
14366 * rdelim.c: new file, split from ioext.c.
14367 * rdelim.h: new file, split from ioext.h
14368 * Makefile.am: add rdelim.c and related files.
14369 * init.c: call scm_init_rdelim. include rdelim.h.
14370
3ba5a6c2
DH
143712001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14372
14373 This patch was sent by Martin Grabmueller and makes sure that
14374 parameter errors are reported correctly by the lexicographic
14375 ordering predicates.
14376
14377 * strorder.c (string_less_p, string_ci_less_p): New functions.
14378
14379 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
14380 functionality into string_less_p, string_ci_less_p respectively.
14381 The remaining code is just a wrapper to do the parameter
14382 checking.
14383
14384 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
14385 parameters and call string_less_p instead of scm_string_less_p.
14386
14387 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
14388 Check the parameters and call string_less_ci_p instead of
14389 scm_string_ci_less_p.
14390
e40a4095
DH
143912001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14392
ed6a2db9
DH
14393 This patch modifies scm_display_error to perform parameter
14394 checking. Thanks to Neil Jerram for the bug report.
14395
e40a4095
DH
14396 * backtrace.[ch] (scm_i_display_error): New function.
14397
14398 * backtrace.c (scm_display_error): Added parameter check and
14399 extracted the core functionality into function
14400 scm_i_display_error.
14401
14402 * throw.c (handler_message): Call scm_i_display_error to display
14403 the error message.
14404
f1e06a96
MD
144052001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14406
14407 * eval.c (SCM_APPLY): Added # args check for application of
14408 procedures with arity 3. (Thanks to Anders Holst.)
14409
30ea841d
DH
144102001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14411
14412 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
14413
14414 (SCM_OPDIRP): Deprecated.
14415
14416 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
14417 SCM_OPN.
14418
14419 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
14420 Instead, give an explicit error message in case the directory is
14421 closed.
14422
14423 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
14424 instead of SCM_OPENP and SCM_CLOSEDP.
14425
14426 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
14427
312ae976
DH
144282001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
14429
14430 * eval.c (inner_eval, scm_eval): Move all real functionality into
14431 inner_eval. Avoid to copy the expression twice by inlining some
14432 code from scm_i_eval.
14433
4567ed78
DH
144342001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
14435
14436 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
14437 now has to be the last clause, as required by R5RS. Thanks to
14438 Martin Grabmueller for the patch.
14439
10288a09
GH
144402001-01-18 Gary Houston <ghouston@arglist.com>
14441
14442 * ioext.c: further simplify scm_read_string_x_partial by defining
14443 a macro SCM_EBLOCK.
14444
8f379a8f
DH
144452001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14446
14447 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
14448
5c75b29f
DH
144492001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14450
14451 * __scm.h: Added comment about architecture and compiler
14452 properties that are required by guile.
14453
14454 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14455 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
14456
14457 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
14458
14459 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
14460
14461 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14462 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
14463
ac0c002c
DH
144642001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
14465
14466 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
14467 to the names in limits.h.
14468
14469 * numbers.c (abs_most_negative_fixnum): Added.
14470
14471 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
14472 fixnum-min) special case.
14473
14474 (scm_big_and): Fix for negative first parameter.
14475
14476 (scm_bit_extract): Fix for fixnum paramters.
14477 Thanks to Rob Browning for the bug report.
14478
14479 (scm_init_numbers): Initialize abs_most_negative_fixnum.
14480
debe0dc2
DH
144812001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
14482
14483 * symbols.c (scm_symbol_bound_p): Fixed comment.
14484 Thanks to Chris Cramer.
14485
8a39e3fc
DH
144862001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
14487
14488 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
14489 Thanks to Bill Schottstaedt.
14490
322ec19d
ML
144912001-01-11 Michael Livshin <mlivshin@bigfoot.com>
14492
9a5fa6e9 14493 from Matthias Köppe:
1c938eb8 14494
322ec19d
ML
14495 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
14496 casts its result, so doesn't yield an lvalue per ANSI C.
14497
14498 * goops.c (s_scm_sys_set_object_setter_x): use
14499 SCM_SET_ENTITY_SETTER.
14500 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
14501
14502 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
14503 its result, so doesn't yield an lvalue per ANSI C.
14504 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
14505 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
14506 SCM_GC_SET_CARD_FLAGS.
14507 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
14508
14509 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
14510
60d02d09
GH
145112001-01-08 Gary Houston <ghouston@arglist.com>
14512
14513 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
14514 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
14515 socket.c (scm_recvfrom): use the new macro, plus minor docstring
14516 changes.
14517 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
14518 for fdes. if current input port is used, check that it's a file
14519 port.
14520
c2da2648
GH
145212001-01-06 Gary Houston <ghouston@arglist.com>
14522
14523 * ioext.c (scm_read_string_x_partial): new procedure, implements
14524 read-string!/partial.
14525 * ports.c (scm_take_from_input_buffers): new procedure used by
14526 scm_read_string_x_partial.
14527 (scm_drain_input): use scm_take_from_input_buffers.
14528
4651d663
MV
145292001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
14530
14531 * validate.h (SCM_VALIDATE_NUMBER): New.
14532
c0a5d888
ML
145332001-01-03 Michael Livshin <mlivshin@bigfoot.com>
14534
14535 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
14536 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
14537 SET_DESTROYED): new defines/macros.
14538 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
14539 (add_to_live_list): takes a `guardian_t *' now, not SCM.
14540 (guardian_print): print more info.
14541 (guardian_apply): check if the guardian is destroyed, and throw an
14542 error if so. take one more optional argument `throw_p'.
14543 (scm_guard): depending on the value of `throw_p', return a boolean
14544 result.
14545 (scm_get_one_zombie): remove redundant property test.
14546 (guardian_t): represent the various (currently 3, I hope nothing
14547 more gets added) boolean fields as bit flags.
14548 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
14549 (scm_destroy_guardian_x): new procedure.
14550
14551 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
14552 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
14553
0c6d2191
GH
145542001-01-01 Gary Houston <ghouston@arglist.com>
14555
14556 * fports.c (fport_write): bugfix: handle short writes for
14557 unbuffered ports too. optimize the buffered case by minimizing
14558 the number of write/flush calls.
14559 (write_all): new helper procedure.
14560
a51fe247 14561The ChangeLog continues in the file: "ChangeLog-2000"
d9f71a07
LC
14562
14563;; Local Variables:
14564;; coding: utf-8
14565;; End: