Update `THANKS'.
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
3e28462f
LC
12008-07-04 Ludovic Courtès <ludo@gnu.org>
2
3 * __scm.h (SCM_INTERNAL): Add `extern' so that these symbols are
4 not considered as "common" by GCC 4.3. Reported by Patrick
5 Horgan <phorgan1@gmail.com>.
6
95c6523b
LC
72008-06-28 Ludovic Courtès <ludo@gnu.org>
8
47871d5a
LC
9 * Makefile.am (INCLUDES): Renamed to...
10 (AM_CPPFLAGS): this, to match current Automake conventions.
11 Users updated.
12
95c6523b
LC
13 * tags.h (SCM_UNPACK): Disable type-checking for `__DECC' and
14 `__HP_cc'. Reported by Peter O'Gorman <pogma@thewrittenword.com>.
15
6eadcdab
LC
162008-06-02 Ludovic Courtès <ludo@gnu.org>
17
18 * deprecated.c (maybe_close_port): Rename EXCEPT to EXCEPT_SET
19 to workaround `#define except' on Tru64. Reported by Peter
20 O'Gorman <pogma@thewrittenword.com>.
21
102dbb6f
LC
222008-05-31 Ludovic Courtès <ludo@gnu.org>
23
24 * __scm.h (SCM_INTERNAL): New macro.
25 * *.h: Use it to mark as internal `scm_i_' and `scm_init_'
26 functions that are not used by public macros or inline
27 functions.
28
184af225
JG
292008-05-14 Julian Graham <joolean@gmail.com>
30
31 * threads.c (fat_mutex)[recursive]: New field.
32 (make_fat_mutex): Adjust initialization to reflect changes to
33 mutex lock level semantics.
34 (fat_mutex_lock, fat_mutex_unlock): Add support for unowned
35 mutexes and locking mutexes on behalf of other threads.
36 (scm_lock_mutex, scm_lock_mutex_timed): Update to reflect
37 signature change to fat_mutex_lock.
38 (scm_mutex_owner, scm_mutex_level, scm_mutex_locked_p): New /
39 re-enabled functions.
40 * threads.h (scm_mutex_owner, scm_mutex_level,
41 scm_mutex_locked_p): Prototypes for new functions.
42
e4c1d4cf
NJ
432008-05-12 Neil Jerram <neil@ossau.uklinux.net>
44
45 * discouraged.c: Expand DEFFROM and DEFTO macros, to avoid
46 compiler warnings about excess semicolons. (Reported by Didier
47 Godefroy.)
48
346e4402
NJ
492008-05-08 Neil Jerram <neil@ossau.uklinux.net>
50
51 * throw.c (scm_ithrow): For IA64 add a return statement, to
52 appease GCC.
53
54 * threads.h (scm_i_thread): New IA64 fields:
55 register_backing_store_base and pending_rbs_continuation.
56
57 * threads.c (guilify_self_1): For IA64: cap RBS base address at
58 the current value of scm_ia64_ar_bsp, and store the capped value
59 in thread state.
60 (SCM_MARK_BACKING_STORE): Use thread->register_backing_store_base
61 instead of scm_ia64_register_backing_store_base().
62 (scm_threads_mark_stacks): Add "&" in "&t->regs", so that the code
63 works both for jmp_buf defined as an array, and jmp_buf defined as
64 a struct.
65
66 * continuations.h (scm_t_contregs): Remove `fresh' and `ctx'
67 fields; these are now inside the IA64 definition of `jmp_buf'.
68
69 * continuations.c (scm_make_continuation): Simplify, by moving
70 some of the IA64 code inside the definition of "setjmp", and by
71 some obvious commonizations. For IA64 register backing store
72 (RBS) stack base, use thread->register_backing_store_base instead
73 of scm_ia64_register_backing_store_base().
74 (copy_stack): For IA64, store pointer to continuation being
75 invoked in thread state, so we can restore the continuation's RBS
76 stack just before the next setcontext call.
77 (copy_stack_and_call): Don't restore RBS stack explicitly here.
78 It will be restored, if appropriate, inside the longjmp call.
79 (scm_ia64_longjmp): New function.
80
81 * __scm.h (setjmp, longjmp, jmp_buf): For IA64, implement using
82 getcontext and setcontext.
83
7a35784c
LC
842008-05-07 Ludovic Courtès <ludo@gnu.org>
85
86 * numbers.c (scm_from_complex_double): Mark as `SCM_UNUSED'.
87 This fixes compilation with `-Werror' on FreeBSD 6.2 (i386).
88
6d4e1f62
NJ
892008-05-05 Neil Jerram <neil@ossau.uklinux.net>
90
91 * c-tokenize.lex: #define YY_NO_INPUT.
92
bd22f1c7
LC
932008-04-26 Ludovic Courtès <ludo@gnu.org>
94
95 * read.c (scm_read_sexp): Remove extraneous semi-colon at
96 end-of-line, which broke compilation with GCC 2.7. Reported by
97 Alain Guibert <alguibert+bts@free.fr>.
98
535b3592
LC
992008-04-24 Ludovic Courtès <ludo@gnu.org>
100
101 * Makefile.am (DEFAULT_INCLUDES): New. Fixes compilation on
102 Tru64 where our "random.h" would shadown libc's one.
103 (INCLUDES): Add "-I$(top_buildir)", which is normally in
104 `DEFAULT_INCLUDES'.
105 * gen-scmconfig.c: Include <libguile/gen-scmconfig.h>, not
106 "gen-scmconfig.h" since that file is under `$(builddir)'.
107
f5c2af4b
LC
1082008-04-16 Ludovic Courtès <ludo@gnu.org>
109
110 * ports.c (scm_getc, scm_putc, scm_puts): Moved...
111 * inline.h: ... here. Noticeably improves `read' performance.
112
ef4cbc08
LC
1132008-04-15 Ludovic Courtès <ludo@gnu.org>
114 Julian Graham <joolean@gmail.com>
115
116 * read.c (scm_keyword_postfix): New.
117 (scm_read_opts): Update docstring for `keywords'.
118 (scm_read_mixed_case_symbol): Add support for postfix keywords.
119
07db6fcd
LC
1202008-04-13 Ludovic Courtès <ludo@gnu.org>
121
122 * inline.h (SCM_C_USE_EXTERN_INLINE): New macro. Use it to make
123 sure "extern" declarations are produced when "extern inline" is
9dca8935 124 used. Simplify macrology around inline definitions.
07db6fcd 125
7dc9ae71
LC
1262008-04-10 Ludovic Courtès <ludo@gnu.org>
127
128 * inline.h (SCM_C_EXTERN_INLINE): Special-case Apple's GCC
129 4.0-based compiler, which doesn't support GNU inline semantics
130 at all in C99 mode but doesn't define `__GNUC_STDC_INLINE__'.
131 See http://thread.gmane.org/gmane.network.gnutls.general/1135 .
132
54ee7cdf
AW
1332008-04-10 Andy Wingo <wingo@pobox.com>
134
4650d115
AW
135 * struct.c (scm_struct_ref, scm_struct_set_x): "Light" structs
136 have no hidden words (members of the SCM_STRUCT_DATA(x) array
137 accessed with negative indices). In that case, determine the
138 number of fields from the length of the struct layout
139 descriptor. (Most GOOPS instances are light structs.)
140
4125c767
AW
141 * goops.c (wrap_init): Initialize 'u' slots to 0, not some random
142 SCM value.
143
144 * goops.c (get_slot_value, set_slot_value): In the struct
54ee7cdf
AW
145 allocation case, don't poke the slots array directly -- we should
146 go through struct-ref/struct-set! code so that we get the
147 permissions and allocation ('u' versus 'p') correct.
148
979eade6
LC
1492008-04-03 Ludovic Courtès <ludo@gnu.org>
150
151 * inline.h (SCM_C_EXTERN_INLINE): New macro, addresses the
152 "extern inline" semantic change in C99 mode with GCC 4.3 and
153 later and the warning in C99 mode with GCC 4.2. Use it in the
154 inline function definitions.
155
2a1d0688
NJ
1562008-03-24 Neil Jerram <neil@ossau.uklinux.net>
157
158 Applying patch from Julian Graham, containing minor fixes to his
159 thread enhancements:
160
161 * threads.c (to_timespec): Change 1000000 multiplier to
162 1000000000.
163 (unchecked_unlock_sym, allow_external_unlock_sym,
164 recursive_sym): Use SCM_SYMBOL.
165 (scm_make_mutex_with_flags): When raising unsupported option
166 error, report what the unsupported option was.
167 (fat_mutex_unlock): When raising errors, unlock m->lock first.
168 (fat_cond_timedwait): Removed.
169 (scm_timed_wait_condition_variable): Call fat_mutex_unlock
170 directly instead of via fat_cond_timedwait.
171
c2ad98ad
LC
1722008-03-10 Ludovic Courtès <ludo@gnu.org>
173
174 * eval.c, filesys.c: Enclose `alloca' blob in `#ifndef alloca',
175 as per Gnulib's `alloca'. This should fix compilation on
176 FreeBSD 6.
177
bca69a9f
NJ
1782008-03-09 Neil Jerram <neil@ossau.uklinux.net>
179
180 * numbers.c: Only define scm_from_complex_double if it will
181 actually be used.
182
6180e336
NJ
1832008-03-08 Julian Graham <joolean@gmail.com>
184
241d9cea
NJ
185 * threads.c (scm_join_thread_timed, scm_thread_p,
186 scm_make_mutex_with_flags, scm_lock_mutex_timed,
187 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p): New
6180e336
NJ
188 functions.
189 (thread_mark): Updated to mark new struct field `mutexes'.
241d9cea 190 (do_thread_exit): Notify threads waiting on mutexes locked by exiting
6180e336 191 thread.
241d9cea
NJ
192 (scm_join_thread, scm_make_mutex, scm_make_recursive_mutex,
193 scm_mutex_lock): Reimplement in terms of their newer
6180e336
NJ
194 counterparts.
195 (scm_abandoned_mutex_error_key): New symbol.
196 (fat_mutex)[unchecked_unlock, allow_external_unlock]: New fields.
197 (fat_mutex_lock): Reimplement to support timeouts and abandonment.
198 (fat_mutex_trylock, scm_try_mutex): Remove fat_mutex_trylock and
199 reimplement scm_try_mutex as a lock attempt with a timeout of zero.
200 (fat_mutex_unlock): Allow unlocking from other threads and unchecked
201 unlocking; implement in terms of condition variable wait.
241d9cea 202 (scm_timed_wait_condition_variable): Reimplement in terms of
6180e336
NJ
203 fat_mutex_unlock.
204 * threads.h (scm_i_thread)[mutexes]: New field.
205 (scm_join_thread_timed, scm_thread_p, scm_lock_mutex_timed,
241d9cea 206 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p):
6180e336
NJ
207 Prototypes for new functions.
208
61b6542a
LC
2092008-03-06 Ludovic Courtès <ludo@gnu.org>
210
211 * eval.c (scm_eval): If MODULE_OR_STATE is not a dynamic state,
212 make sure it's a module. Reported by David I. Lehn.
213
3f520967
LC
2142008-03-02 Ludovic Courtès <ludo@gnu.org>
215
216 * pairs.h (scm_is_pair): Moved declaration to `inline.h'.
217 * inline.h: Make sure `extern' declarations are not produced
218 when `inline' is supported but GCC is not used. This
219 fixes "mixed linkage" errors with compilers such as
220 DEC/Compaq/HP CC.
221
fa80e280
NJ
2222008-02-27 Neil Jerram <neil@ossau.uklinux.net>
223
224 * _scm.h (errno): Remove declarations that have been there
225 forever, and are known to conflict on some platforms with that
226 provided by <errno.h>, which we include unconditionally. If
227 <errno.h> doesn't provide a errno declaration, what is the point
228 of it?
229
a2c25234
LC
2302008-02-23 Ludovic Courtès <ludo@gnu.org>
231
232 * numbers.c (scm_make_rectangular): Rename argument to
233 `real_part' and `imaginary_part' to work around Solaris 2.10
234 headers which define `imaginary' as a macro. Patch by Tim
235 Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
236
bfb64eb4
LC
2372008-02-22 Ludovic Courtès <ludo@gnu.org>
238
4fcb27c4
LC
239 * read.c (strncasecmp): Add declaration when
240 `HAVE_DECL_STRNCASECMP' is undefined. Fixes compilation on
241 NetBSD 1.6.
242
bfb64eb4
LC
243 * gc.c (scm_ia64_ar_bsp)[linux]: Don't discard `const' qualifier
244 of OPAQUE.
245
5305df84
LC
2462008-02-21 Ludovic Courtès <ludo@gnu.org>
247
248 Fix bug #22369.
249
250 * goops.c (scm_add_slot): Add `SCM_UNDEFINED' as last argument
a2c25234
LC
251 to `scm_list_n ()'. Thanks to René Köcher
252 <shirk87@googlemail.com>.
5305df84 253
25a640ca
LC
2542008-02-17 Ludovic Courtès <ludo@gnu.org>
255
256 * script.c (scm_compile_shell_switches): Update copyright year.
257
9a6fac59
LC
2582008-02-16 Ludovic Courtès <ludo@gnu.org>
259
260 * gc_os_dep.c: Add NetBSD/alpha support. Patch by Greg Troxel
261 <gdt@ir.bbn.com>.
262
5b5179f8
LC
2632008-02-12 Ludovic Courtès <ludo@gnu.org>
264
265 * guile-snarf.in (tempdir): Honor `$TMPDIR'.
266
4b26c03e
NJ
2672008-02-11 Neil Jerram <neil@ossau.uklinux.net>
268
269 * numbers.c (SCM_COMPLEX_VALUE): Use GUILE_I instead of _Complex_I
270 directly, and only if GUILE_I was defined by the configure step.
271 (scm_log, scm_log10, scm_exp, scm_sqrt): Use SCM_COMPLEX_VALUE
272 code only if SCM_COMPLEX_VALUE is defined.
273
7f74cf9a
LC
2742008-02-07 Ludovic Courtès <ludo@gnu.org>
275
276 Fix bug #21378.
277 Thanks to David Diffenbaugh <davediff@nbcs.rutgers.edu>.
278
279 * read.c (scm_read_quote): Don't use `__FUNCTION__' since it is
280 not supported by Sun CC on Solaris 9.
281 (scm_read_keyword): Likewise.
282 * strings.c (scm_take_locale_stringn): Remove
283 `SCM_C_INLINE_KEYWORD' to allow compilation with Sun CC.
284
86a597f8
NJ
2852008-02-07 Julian Graham <joolean@gmail.com>
286
241d9cea
NJ
287 * threads.c (do_thread_exit, scm_cancel_thread,
288 scm_set_thread_cleanup_x, scm_thread_cleanup): Lock on thread-specific
86a597f8
NJ
289 admin mutex instead of `thread_admin_mutex'.
290 * threads.h (scm_i_thread)[admin_mutex]: New field.
291 * throw.c (make_jmpbuf): Don't enter critical section during thread
292 spawn -- there is a possibility of deadlock if other threads are
293 exiting.
241d9cea 294
4a19ed04
NJ
2952008-02-06 Neil Jerram <neil@ossau.uklinux.net>
296
297 * gc-malloc.c (scm_gc_malloc): Return NULL if requested size is 0.
298 (scm_gc_free): Don't call `free' if mem is NULL.
299
189171c5
LC
3002008-02-06 Ludovic Courtès <ludo@gnu.org>
301
302 * numbers.c (scm_i_mkbig, scm_i_long2big, scm_i_ulong2big,
303 scm_i_clonebig, scm_i_bigcmp, scm_i_dbl2big, scm_i_dbl2num,
304 scm_i_normbig): Remove `SCM_C_INLINE_KEYWORD' since these are
305 declared as `extern' in `numbers.h'. This precluded compilation
306 on Solaris 9 with Sun CC (reported by David Halik
307 <dhalik@nbcs.rutgers.edu>).
308
d05bcb2e
NJ
3092008-02-05 Neil Jerram <neil@ossau.uklinux.net>
310
311 * fports.c (fport_seek): Make dependent on GUILE_USE_64_CALLS.
312
313 * _scm.h: Make definition of CHOOSE_LARGEFILE depend on
314 GUILE_USE_64_CALLS.
315
3ac8359a
NJ
3162008-02-01 Neil Jerram <neil@ossau.uklinux.net>
317
318 * modules.c (the_root_module): Moved before scm_current_module.
319 (scm_current_module): Return the root module if `the-module' fluid
320 gives #f.
321
d3cf93bc
NJ
3222008-01-22 Neil Jerram <neil@ossau.uklinux.net>
323
7df13834
NJ
324 * COPYING: Removed.
325
d3cf93bc
NJ
326 * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL.
327
15bd90ea
NJ
3282008-01-18 Neil Jerram <neil@ossau.uklinux.net>
329
330 * hashtab.c (scm_hash_fn_create_handle_x): If supplied assoc_fn
331 returns neither a pair nor #f, signal a wrong-type-arg error.
332 (Thanks to Gregory Marton for reporting this.)
333
5c004b6d
NJ
3342007-12-29 Neil Jerram <neil@ossau.uklinux.net>
335
336 * gc.c (mark_gc_async): Change "func_data" to "fn_data", to avoid
337 clash with AIX header file.
338 * hooks.c (scm_c_hook_add, scm_c_hook_remove): Same again.
339 * hooks.h (scm_t_c_hook_function, scm_c_hook_add,
340 scm_c_hook_remove): Same again.
341
9cc37597
LC
3422007-12-08 Ludovic Courtès <ludo@gnu.org>
343
344 * __scm.h (SCM_EXPECT, SCM_LIKELY, SCM_UNLIKELY): New macros.
345 (SCM_ASSERT, SCM_ASSERT_TYPE, SCM_ASRTGO, SCM_GASSERT0,
346 SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Use them.
347 * eval.c (ASSERT_SYNTAX, ASSERT_SYNTAX_2): Likewise.
348 * eval.i.c (CEVAL): Use branch prediction hints for syntax
349 errors, wrong number of arguments and similar.
350 * numbers.c (scm_sum): Use `SCM_LIKELY' for the sum of two
351 immediate numbers.
352 (scm_difference, scm_product, scm_i_divide): Likewise.
353 * validate.h (SCM_ASSERT_RANGE): Use `SCM_UNLIKELY'.
354
7d1fc872
LC
3552007-12-04 Ludovic Courtès <ludo@gnu.org>
356
693758d5
LC
357 * ports.c (scm_c_read): Validate PORT as an open input port.
358 (scm_c_write): Validate PORT as an open output port.
359
7d1fc872
LC
360 * socket.c (scm_accept): Leave guile mode using
361 `scm_std_select ()' before calling `accept(2)'. Reported by
362 dskr <dskr@mac.com>.
363
ee834df4
LC
3642007-10-27 Ludovic Courtès <ludo@gnu.org>
365
366 * fports.c (scm_i_evict_port): Expect a port, rather than a pair
367 containing the port. Fixes a bug in the new port table (2007-08-26).
368 (scm_evict_ports): Use `scm_c_port_for_each ()'.
369
acbfb594
NJ
3702007-10-21 Neil Jerram <neil@ossau.uklinux.net>
371
372 * eval.c (unmemoize_delay): Extend the environment before
373 unmemoizing the promise thunk. This fixes a segmentation fault
374 reported by Frank Schwidom.
375
2e77f720
LC
3762007-10-20 Julian Graham <joolean@gmail.com>
377
378 Add support for thread cancellation and user-defined thread
379 cleanup handlers. Small rework by Ludovic Courtès.
380
381 * null-threads.h (scm_i_pthread_cancel,
382 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
383 * pthread-threads.h (scm_i_pthread_cancel,
384 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
385 * scmsigs.c (scm_i_signal_delivery_thread,
386 signal_delivery_thread_mutex): New.
387 (signal_delivery_thread): Leave when `read_without_guile ()'
388 returns zero.
389 (start_signal_delivery_thread): Acquire SIGNAL_DELIVERY_THREAD
390 before spawning the thread. Initialize
391 SCM_I_SIGNAL_DELIVERY_THREAD.
392 (ensure_signal_delivery_thread): Renamed to...
393 (scm_i_ensure_signal_delivery_thread): this.
394 (scm_i_close_signal_pipe): New.
395 * scmsigs.h: Updated.
396 * threads.c (thread_mark): Mark `t->cleanup_handler'.
397 (guilify_self_1): Initialize `t->cleanup_handler' and
398 `t->canceled'.
399 (do_thread_exit): Invoke `t->cleanup_handler'.
400 (on_thread_exit): Call `scm_i_ensure_signal_delivery_thread ()'.
401 Call `scm_i_close_signal_pipe ()' when the next-to-last thread
402 vanishes.
403 (scm_leave_guile_cleanup): New.
241d9cea 404 (scm_i_with_guile_and_parent): Use `scm_i_pthread_cleanup_push ()'
2e77f720
LC
405 and `scm_leave_guile_cleanup ()' to leave guile mode, rather
406 than call `scm_leave_guile ()' after FUNC.
407 (scm_cancel_thread, scm_set_thread_cleanup_x,
408 scm_threads_cleanup): New.
409 (scm_all_threads): Remove SCM_I_SIGNAL_DELIVERY_THREAD from the
410 returned list.
411 * threads.h (scm_i_thread)[cleanup_handler, canceled]: New
412 fields.
413 Add declarations of new functions.
241d9cea 414
d41668fa
LC
4152007-10-17 Ludovic Courtès <ludo@gnu.org>
416
417 * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a
418 regression compared to 1.8.2. Reported by Puneet
419 <schemer@gmail.com>.
420
66302618
LC
4212007-10-10 Ludovic Courtès <ludo@gnu.org>
422
423 * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check
424 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
425 * gen-scmconfig.h.in
426 (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER): New.
427 * gen-scmconfig.c (main): Define
428 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
429
1445e449
LC
4302007-10-04 Ludovic Courtès <ludo@gnu.org>
431
432 * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
433 `leave_locale_section ()' on failure of
434 `enter_locale_section ()' since the mutex is not held and locale
435 settings are unchanged.
436 (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
241d9cea 437 `restore_locale_settings ()' instead of `leave_locale_section ()'
1445e449 438 since the mutex is not held.
241d9cea 439
29776e85
LC
4402007-10-02 Ludovic Courtès <ludo@gnu.org>
441
442 * threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
443 since we're already in non-guile mode. Reported by Greg Toxel
444 for NetBSD.
445
61d3568b
LC
4462007-10-01 Ludovic Courtès <ludo@gnu.org>
447
448 * ports.c (flush_output_port): Expect directly a port instead of
449 a pair. Fixes a bug in the new port table (2007-08-26).
450
68eccd8b
KR
4512007-09-11 Kevin Ryde <user42@zip.com.au>
452
453 * posix.c (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
454 putenv("NAME") as the fallback everywhere else. In particular this is
455 needed for solaris 9. Reported by Frank Storbeck.
241d9cea 456
454866e0
LC
4572007-09-03 Ludovic Courtès <ludo@gnu.org>
458
459 * read.c (flush_ws): Handle SCSH block comments.
460
f43f3620
LC
4612007-09-03 Ludovic Courtès <ludo@gnu.org>
462
463 Fix alignment issues which showed up at least on SPARC.
464
465 * socket.c (scm_t_max_sockaddr, scm_t_getsockopt_result): New.
466 (scm_inet_pton): Change DST to `scm_t_uint32' for correct
467 alignment.
468 (scm_getsockopt): Change OPTVAL to `scm_t_getsockopt_result' for
469 correct alignment.
470 (_scm_from_sockaddr): Change ADDRESS to `scm_t_max_sockaddr *'.
471 (scm_from_sockaddr): Cast ADDRESS to `scm_t_max_sockaddr *'.
472 (MAX_SIZE_UN, MAX_SIZE_IN6): Removed.
473 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
474 Use `scm_t_max_sockaddr' instead of "char max_addr[MAX_ADDR_SIZE]".
475
8d4d5dfc
KR
4762007-09-03 Kevin Ryde <user42@zip.com.au>
477
478 * numbers.c (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
479 before using clog(). It's possible for gcc to provide the "complex
480 double" type, but for the system not to have the complex funcs.
481 (scm_exp): Ditto HAVE_CEXP for cexp().
482 (clog, cexp, carg): Remove fallback definitions. These only
483 duplicated the code within scm_log and scm_exp, and the latter have to
484 exist for the case when there's no "complex double". So better just
485 fix up the conditionals selecting between the complex funcs and plain
486 doubles than worry about fallbacks.
487
1ac5fb45
LC
4882007-09-02 Ludovic Courtès <ludo@gnu.org>
489
490 * socket.c (scm_make_socket_address): Free C_ADDRESS after use.
491 This fixes a memory leak.
492
b87e6d04
HWN
4932007-08-26 Han-Wen Nienhuys <hanwen@lilypond.org>
494
5dbc6c06
HWN
495 * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
496 gc.c: replace port table with weak hash table. This simplifies
497 memory management, and fixes freed cells appearing in
498 port-for-each output.
499
b87e6d04
HWN
500 * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
501 held.
502
2baec6a9
LC
5032007-08-23 Ludovic Courtès <ludo@gnu.org>
504
492faee1 505 * read.c (scm_read_quote): Record position and copy source
8d4d5dfc 506 expression when asked to. Reported by Kevin.
492faee1 507
2baec6a9
LC
508 * stime.c: Define `_REENTRANT' only if not already defined.
509
1f11c61a
KR
5102007-08-21 Kevin Ryde <user42@zip.com.au>
511
512 * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
513 tc16 values so big, real, complex and fraction can be distinguished.
514
515 (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL. NULL
516 was making numbers come out as "type 23" in gc-live-object-stats.
517 Fix tests of the tc16 number types, they were checked under
518 scm_tc7_number, but the values went down the tag>=255 smob case.
519 Put smob case under scm_tc7_smob instead of using tag>=255, per
241d9cea 520 recommendation in comments with scm_tc7_smob to use symbolic values.
1f11c61a
KR
521 Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
522 code. Lose some unnecessary "break" statements.
523
524 (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
525 element returned, rather than two lookups scm_hashq_ref and
526 scm_hashq_set_x.
527
949ec9f9
KR
5282007-08-17 Kevin Ryde <user42@zip.com.au>
529
530 * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
531 solaris 2.6. Reported by anirkko.
532
6caac03c
LC
5332007-07-29 Ludovic Courtès <ludo@gnu.org>
534
535 * Makefile.am (INCLUDES): Added Gnulib includes.
536 (gnulib_library): New.
537 (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
538 `$(gnulib_library)'.
539 (libguile_la_LIBADD): Likewise.
540
541 * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
542 to define it when available.
543 * srfi-14.c: Likewise.
f7439099
LC
544 * i18n.c: Likewise. Include Gnulib's <alloca.h>
545 * eval.c: Include Gnulib's <alloca.h>.
546 * filesys.c: Likewise.
547 * read.c: Don't include <strings.h> and don't provide an
548 `strncasecmp ()' replacement; use Gnulib's <string.h> and
549 `strncasecmp ()' instead.
6caac03c 550
e08f3f7a
LC
5512007-07-25 Ludovic Courtès <ludo@gnu.org>
552
553 * eval.c (macroexp): When `scm_ilength (res) <= 0', return
554 immediately. This used to produce a circular memoized
555 expression, e.g., for `(set (quote x) #t)'.
556
7337d56d
LC
5572007-07-22 Ludovic Courtès <ludo@gnu.org>
558
559 Overhauled the reader, making it faster.
560
561 * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
562 (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
563 of `scm_lreadr ()'.
564
565 * read.c: Overhauled. No longer use a token buffer. Use a
566 on-stack C buffer in the common case and use Scheme strings when
567 larger buffers are needed.
568 * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
569 scm_lreadr, scm_lreadrecparen): Removed.
570 (scm_i_input_error): Marked as `SCM_NORETURN'.
571
df449722
LC
5722007-07-15 Ludovic Courtès <ludo@gnu.org>
573
574 * script.c (scm_compile_shell_switches): Updated copyright year.
575
b1f57ea4
LC
5762007-07-11 Ludovic Courtès <ludo@gnu.org>
577
578 * goops.c (scm_sys_method_more_specific_p): Added docstring.
579 Make sure LEN is greater than or equal to the minimum length of
580 specializers of M1 and M2. This fixes a segfault later on in
581 `more_specificp ()' if TARGS is too small. Reported by Marco
582 Maggi <marco.maggi-ipsu@poste.it>.
583
d3075c52
LC
5842007-06-26 Ludovic Courtès <ludo@gnu.org>
585
586 * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
587 sure to free the previous array after the new one has been
588 installed. This leak is made visible by running
589 "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
590 from the REPL within Valgrind.
591
7a5fb796
LC
5922007-06-12 Ludovic Courtès <ludo@chbouib.org>
593
594 * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
595 as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
596 bus error on SPARC (and possibly others) due to unaligned access.
597
a1ef7406
LC
5982007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
599
600 * posix.c (scm_ttyname): Check whether RESULT is NULL before
601 making a string from it (reported by Dan McMahill). Don't call
602 `scm_from_locale_string ()' before the mutex is released.
603
3dcf3373
LC
6042007-05-26 Ludovic Courtès <ludo@chbouib.org>
605
606 * eval.c (scm_m_define): Updated comment. Changed order for value
607 evaluation and `scm_sym2var ()' call, which is perfectly valid per
608 R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
609
608860a5
LC
6102007-05-05 Ludovic Courtès <ludo@chbouib.org>
611
612 Implemented lazy duplicate binding handling.
613
614 * modules.c (scm_export): Renamed to...
615 (scm_module_export): This. Now public.
616 (module_variable): Removed.
617 (default_duplicate_binding_procedures_var): New variable.
618 (default_duplicate_binding_handlers, resolve_duplicate_binding,
619 module_imported_variable, scm_module_local_variable,
620 scm_module_variable): New functions.
621 (scm_module_import_interface): Rewritten.
622 (scm_module_reverse_lookup): Exported as a Scheme function.
623 * modules.h (scm_module_index_duplicate_handlers,
624 scm_module_index_import_obarray): New macros.
625 (scm_module_variable, scm_module_local_variable,
626 scm_module_export): New declarations.
627
1911e3da
LC
6282007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
629
630 * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
631 `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
632
1d8ce4c0
HWN
6332007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
634
635 * numbers.c (carg): provide carg, cexp, clog in case they are
636 missing.
637
afb49959
LC
6382007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
639
640 * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
641 `FRAC_DIGITS', etc., which are GNU extensions. Reported by
642 Steven Wu.
643
b3aa4626
KR
6442007-03-08 Kevin Ryde <user42@zip.com.au>
645
646 * struct.c, struct.h (scm_make_vtable): New function, providing
647 `make-vtable'.
648 * stacks.c (scm_init_stacks): Use it.
649
6502007-03-06 Kevin Ryde <user42@zip.com.au>
651
652 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
653 allocating a tail array. If there's no such then those tail fields
654 are uninitialized and garbage SCMs there can cause a segv if printed
655 (after fetching with struct-ref).
656
6572007-02-22 Kevin Ryde <user42@zip.com.au>
658
659 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
660 (scm_usleep): Update docstring per manual, cross reference sleep.
661
662 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
663 scm_struct_init is not within that section. scm_struct_init can
664 thrown an error, which within a critical section results in an
665 abort().
666
03291373
NJ
6672007-02-19 Neil Jerram <neil@ossau.uklinux.net>
668
669 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
670 is included in the distribution.
652dbce6 671 (noinst_HEADERS): And the same for eval.i.c.
03291373 672
a2f00b9b
LC
6732007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
674
675 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
676 unconditionally. Include <langinfo.h> and <nl_types.h> when
677 available.
678 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
679 SCM_LIST_OR_INTEGER_P): New macros.
680 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
681 as powers of two instead of `(1 << LC_*)'.
682 (scm_i_locale_free): New function/macro.
683 (scm_global_locale): New global variable.
684 (smob_locale_free): Use `scm_i_locale_free ()'.
685 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
686 (get_current_locale_settings): Return `EINVAL' instead of `errno'
687 when `setlocale' fails.
688 (restore_locale_settings): Likewise.
689 (install_locale_categories): Likewise.
690 (install_locale): Likewise. Stop the locale stack traversal when
691 all categories have been handled.
692 (get_current_locale, category_to_category_mask,
693 category_list_to_category_mask): New function.
694 (scm_make_locale): Use them. Accept both lists of `LC_*' values
695 and single `LC_*' values as the first argument. Handle the case
696 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
697 duplicate C_BASE_LOCALE before using it.
698 (scm_nl_langinfo, define_langinfo_items): New functions.
699 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
700 `nl-langinfo' and invoke `define_langinfo_items ()'.
701 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
702 * posix.c: Include <xlocale.h> when available.
703 (scm_i_locale_mutex): Always define it. Statically initialized.
704 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
705 acquiring the locale mutex.
706 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
707
b3aa4626
KR
7082007-01-27 Kevin Ryde <user42@zip.com.au>
709
710 * ports.c (scm_port_line, scm_set_port_line_x), read.c
711 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
712 port line number type, should be "long" not "int", as per line_number
713 field of scm_t_port. (Makes a difference only on 64-bit systems, and
714 only then for a linenum above 2Gig.)
715
2a8d66b0
HWN
7162007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
717
718 * vector.c: remove comment as per kryde's request.
719
b3aa4626
KR
7202007-01-25 Kevin Ryde <user42@zip.com.au>
721
722 * sort.c (scm_stable_sort): Return empty list for input empty list, as
723 done in guile 1.6 and as always done by plain `sort'. Was falling
724 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
725
cb90e2cb
HWN
7262007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
727
8cb7939c
HWN
728 * vectors.c (s_scm_vector_move_right_x): complain about naming.
729
d00a0704
HWN
730 * srcprop.c: regularize comments.
731
3d178652
HWN
732 * eval.c: remove superfluous ifndef DEVAL.
733
243ebb61
HWN
734 * private-options.h: idem.
735
736 * eval.i.c: copyright nitpicking.
737
0ee05b85
HWN
738 * eval.c: distangle. move duplicate code to eval.i.c and include
739 twice.
740
741 * eval.i.c: new file.
742
22fc179a
HWN
743 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
744 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
745 read.h, stacks.c, symbols.c, throw.c: use private-options.h
746
747 * private-options.h: new file: contain hardcoded option
748 definitions.
749
cb90e2cb
HWN
750 * private-gc.h: add FSF header.
751
62560650
HWN
7522007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
753
72f19c26
HWN
754 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
755 memoize-symbol is set.
756
757 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
758
759 * eval.c (CEVAL): add memoize_symbol trap.
760
03347a97
HWN
761 * options.c (scm_options_try): new function. This allows error
762 reporting before changing options in a critical section.
763
b0763985
HWN
764 * srcprop.c: use double cell for storing source-properties. Put
765 filename in the plist, and share between srcprops if possible.
766 Remove specialized storage.
767
768 * srcprop.h: remove macros without SCM_ prefix from
769 interface. Remove specialized storage/type definitions.
770
62560650
HWN
771 * read.c: idem.
772
773 * print.c: idem.
774
775 * eval.c: terminate option lists with 0.
776
777 * options.c: remove n (for length) from scm_option_X
778 functions. Detect option list length by looking for NULL name.
779
42ddb3cb
LC
7802007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
781
782 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
783 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
784 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
785 added by `make-vtable-vtable'. Reported by Marco Maggi.
241d9cea 786
937038e8
HWN
7872007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
788
789 * throw.c (scm_ithrow): more refined error message: print symbols
790 too.
791
23d72566
KR
7922007-01-16 Kevin Ryde <user42@zip.com.au>
793
794 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
795 implementing `set-program-arguments'.
796
797 * filesys.c (scm_init_filesys): Use scm_from_int rather than
798 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
799 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
800 O_LARGEFILE. These are all int not long, per arg to open().
801 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
802 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
803 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
804 an int arg to fcntl.
805
806 * posix.c (scm_putenv): Correction to "len" variable, was defined only
807 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
808 Move it to where it's used. Reported by Hugh Sasse.
809
810 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
811 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
812 meant #\nul in the input (detected by scm_to_locale_string) and a bad
813 flags arg (detected by scm_to_int) would throw from a critical
814 section, causing an abort().
815
816 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
817 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
818 REG_NOTEOL; they're all ints not longs (per args to regcomp and
819 regexec).
820
a2c40dc7
HWN
8212007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
822
823 * throw.c (scm_ithrow): print out key symbol and string arguments
824 when error happens inside a critical section, and document why.
825
391f57e6
HWN
8262007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
827
828 * read.c (s_scm_read_hash_extend): document #f argument to
829 read-hash-extend.
830
23d72566
KR
8312007-01-04 Kevin Ryde <user42@zip.com.au>
832
833 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
834 scm_minor_version, scm_micro_version, scm_effective_version,
835 scm_version, scm_init_version): Use SCM_API instead of just extern,
836 for the benefit of mingw. Reported by Cesar Strauss.
837
93632e3c
HWN
8382007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
839
840 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
841 too.
842 (gc_update_stats): update scm_gc_cells_allocated_acc too.
843
23d72566
KR
8442006-12-27 Kevin Ryde <user42@zip.com.au>
845
846 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
847 the basic scm_get_stack_base. As advised by Nils Durner.
848
849 * threads.c (get_thread_stack_base): Add a version using
850 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
851 As advised by Heikki Lindholm.
852
853 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
854 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
855 Durner.
856
8572006-12-24 Kevin Ryde <user42@zip.com.au>
858
859 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
860 error if pid is not our own process, instead of silently doing nothing.
861
862 * print.c (scm_write, scm_display, scm_write_char): Disable port close
863 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
864 check in configure.in unintentionally enabled it. Believe that
865 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
866 can leave errno in that state. popen.test "no duplicates" output test
867 provoked that.
868
e2bf3b19
HWN
8692006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
870
871 * numbers.c (scm_i_fraction_reduce): move logic into
872 scm_i_make_ratio(), so fractions are only read.
873 scm_i_fraction_reduce() modifies a fraction when reading it. A
874 race condition might lead to fractions being corrupted by reading
875 them concurrently.
876
877 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
878 comparisons between reduced and unreduced fractions go wrong.
241d9cea 879
e2bf3b19
HWN
880 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
881 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
882 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
883 SCM_FRACTION_REDUCED.
884
23d72566
KR
8852006-12-16 Kevin Ryde <user42@zip.com.au>
886
887 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
888 more direct for a procedure called raise.
889 (kill): Remove mingw fake fallback.
890
8912006-12-15 Kevin Ryde <user42@zip.com.au>
892
893 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
894 _pipe on mingw.
895
8962006-12-14 Kevin Ryde <user42@zip.com.au>
897
898 * threads.c (thread_print): Cope with the case where pthread_t is a
899 struct, as found on mingw. Can't just cast to size_t for printing.
900 Reported by Nils Durner.
901
902 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
903 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
904
9052006-12-13 Kevin Ryde <user42@zip.com.au>
906
907 * eval.c (scm_m_define): Set 'name procedure property on any
908 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
909 procedures with setters as used in srfi-17.
910
911 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
912 linux man page says is a possibility.
913
f30e1bdf
LC
9142006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
915
916 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
42ddb3cb 917 instead of RES (reported by Szavai Gyula). This allows the use of
f30e1bdf
LC
918 negative lower bounds.
919 (scm_i_read_array): Make sure LEN is non-negative (reported by
42ddb3cb 920 Szavai Gyula).
f30e1bdf
LC
921
922 (scm_array_in_bounds_p): Iterate over S instead of always
923 comparing indices with the bounds of S[0]. This fixes
924 `array-in-bounds?' for arrays with a rank greater than one and
925 with different lower bounds for each dimension.
926
23d72566
KR
9272006-12-05 Kevin Ryde <user42@zip.com.au>
928
929 * numbers.c (scm_product): For flonum*inum and complex*inum, return
930 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
931 and as per R5RS section "Exactness".
932
9332006-12-03 Kevin Ryde <user42@zip.com.au>
934
935 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
936 allow $AWK from the environment to override. It had syntax gremlins,
937 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
938 Makefile stopped it having any effect. Use just $(AWK), which can be
939 overridden with "make AWK=xxx" in the usual way if desired.
940
22be72d3
LC
9412006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
942
943 * libguile/vectors.c (scm_vector_to_list): Fixed list
944 construction: elements were not copied when INC is zero (see
945 "shared array" example in `vectors.test'). Reported by
946 Szavai Gyula.
947
b89c4943
LC
9482006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
949
950 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
951 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
952 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
953 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
954 (DOT_X_FILES): Added `gettext.x'.
955 (DOT_DOC_FILES): Likewise.
956 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
957 (modinclude_HEADERS): Added `gettext.h'.
958 (EXTRA_DIST): Added `libgettext.h'.
959
960 * gettext.h: Renamed to...
961 * libgettext.h: New file.
962
963 * i18n.c: Renamed to...
964 * gettext.c: New file.
965
966 * i18n.h: Renamed to...
967 * gettext.h: New file.
968
969 * i18n.c, i18n.h, locale-categories.h: New files.
970
971 * init.c: Include "libguile/gettext.h" instead of
972 "libguile/i18n.h".
973 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
974 `scm_init_i18n ()'.
975
976 * posix.c: Include "libguile/gettext.h" instead of
977 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
978 (USE_GNU_LOCALE_API): New macro.
979 (scm_i_locale_mutex): New variable.
980 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
981
982 * posix.h: Include "libguile/threads.h".
983 (scm_i_locale_mutex): New declaration.
984
f3e3f530
NJ
9852006-11-17 Neil Jerram <neil@ossau.uklinux.net>
986
987 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
988
d9f71a07 9892006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
241d9cea 990
d9f71a07
LC
991 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
992 "sweep_stats" arguments; use them instead of accessing the global
993 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
994
995 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
996 before each iteration of the loop.
997 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
998 (scm_i_get_new_heap_segment): Take an additional argument
999 SWEEP_STATS. Compute MIN_CELLS as a function of it.
1000
1001 * libguile/gc.c (scm_gc_cells_collected,
1002 scm_gc_cells_collected_1): Removed.
1003 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
1004 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
1005 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
1006 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
1007 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
1008 `scm_gc_cells_(collected|swept)'.
1009 (gc_update_stats): New.
1010 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
1011 `scm_i_gc_sweep_stats_1' instead of the former globals.
1012 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
1013 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
1014 would keep allocating new segments instead of re-using collected
1015 cells (because `scm_gc_cells_collected' would remain zero).
1016
1017 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
1018 scm_gc_cell_yield_percentage): Removed.
1019
1020 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
1021 (scm_i_adjust_min_yield): Updated.
1022 (scm_i_get_new_heap_segment): Updated.
1023
dd18d312
NJ
10242006-11-02 Neil Jerram <neil@ossau.uklinux.net>
1025
1026 * modules.c: Correct comment saying that low-level environments
1027 will be used "in the next release".
1028
1029 * init.c: Comment out #include of environments.h.
1030 (scm_i_init_guile): Comment out scm_environments_prehistory() and
1031 scm_init_environments() calls.
1032
1033 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
1034 (DOT_X_FILES): Remove environments.x.
1035 (DOT_DOC_FILES): Remove environments.doc.
1036 (modinclude_HEADERS): Remove environments.h.
1037
9a5fa6e9
NJ
10382006-10-25 Neil Jerram <neil@ossau.uklinux.net>
1039
1040 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
241d9cea 1041
9a5fa6e9
NJ
1042 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
1043 scm_ia64_register_backing_store_base() instead of Linux-specific
1044 implementations.
1045
1046 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
1047 New declarations.
1048
1049 * gc.c (__libc_ia64_register_backing_store_base): Declaration
1050 removed.
1051 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
1052 implementations for Linux and HP-UX.
1053
1054 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
1055 and scm_ia64_register_backing_store_base() instead of
1056 Linux-specific implementations.
1057
1058 * continuations.h (__libc_ia64_register_backing_store_base):
1059 Declaration removed.
1060 (scm_t_contregs): New "fresh" field.
1061
1062 * continuations.c (ia64_getcontext): Removed.
1063 (scm_make_continuation): Use continuation fresh field instead of
1064 interpreting getcontext return values (which isn't portable). Use
1065 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
1066 instead of Linux-specific implementations.
1067 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
1068 instead of Linux-specific implementation.
1069
1070 * _scm.h (__ia64__): Also detect __ia64.
1071
8ab3d8a0
KR
10722006-10-03 Kevin Ryde <user42@zip.com.au>
1073
1074 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
1075 arguments or 3 or more arguments. Previously 0 called proc with
1076 SCM_UNDEFINED, and 3 or more silently used just the first 2.
1077
10782006-09-28 Kevin Ryde <user42@zip.com.au>
1079
1080 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
1081 for chsize fallback, instead of hard-coding mingw. Mingw in fact
1082 supplies ftruncate itself these days.
1083
1084 * ports.c (fcntl.h): Can include this unconditionally, no need for
1085 __MINGW32__.
1086
1087 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
1088 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
1089 "off_t" for parameters, per usual definition of this function, rather
1090 than "char *" and "int". Use ftruncate instead of chsize. Check for
1091 error on final close.
1092
10932006-09-27 Kevin Ryde <user42@zip.com.au>
1094
1095 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
1096 in mingw.
1097
1098 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
1099 const *" for mingw to suppress warnings from gcc (which are errors
1100 under the configure default -Werror). Reported by Nils Durner.
1101
11022006-09-26 Kevin Ryde <user42@zip.com.au>
1103
1104 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
1105 * fports.c (scm_open_file): Use open_or_open64.
1106 (fport_seek_or_seek64): New function, adapting fport_seek.
1107 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
1108 functions.
1109 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
1110 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
1111
1112 * ports.c (scm_truncate_file): Update docstring per manual.
1113
11142006-09-23 Kevin Ryde <user42@zip.com.au>
1115
1116 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
1117 functions.
1118
9a5fa6e9 11192006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
a17d2654
LC
1120
1121 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
1122 (make_predset, define_predset, make_strset, define_strset, false,
1123 true): Removed.
1124 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
1125 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
1126 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
1127 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
1128 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
1129 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
1130 (define_charset, scm_srfi_14_compute_char_sets): New functions.
1131 (scm_init_srfi_14): Use `define_charset ()' instead of
1132 `define_predset ()' and `define_strset ()'.
1133
1134 * srfi-14.h (scm_c_init_srfi_14): Removed.
1135 (scm_srfi_14_compute_char_sets): New declaration.
1136
1137 * posix.h: Include "srfi-14.h".
1138 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
1139 successful `setlocale ()' call.
1140
8ab3d8a0
KR
11412006-09-08 Kevin Ryde <user42@zip.com.au>
1142
1143 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
1144 (scm_recvfrom): Update docstring from manual.
1145
418122ce
RB
11462006-08-31 Rob Browning <rlb@defaultvalue.org>
1147
1148 * ports.c (scm_c_port_for_each): Add a
1149 scm_remember_upto_here_1(ports) at the end of the function to fix
1150 a GC bug.
1151
b5944f66
NJ
11522006-08-28 Neil Jerram <neil@ossau.uklinux.net>
1153
1154 * backtrace.c (scm_display_backtrace_with_highlights): Minor
1155 improvements to docstring.
1156 (scm_backtrace_with_highlights): Analogous improvements.
1157
8ab3d8a0
KR
11582006-08-12 Kevin Ryde <user42@zip.com.au>
1159
1160 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
1161 New, set from configure.
1162 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
1163 to scmconfig.h.
1164 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
1165 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
1166 Reported by Claes Wallin.
1167
b0b0deff
NJ
11682006-08-11 Neil Jerram <neil@ossau.uklinux.net>
1169
1170 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
1171 frame, not a stack).
1172
8ab3d8a0
KR
11732006-07-25 Kevin Ryde <user42@zip.com.au>
1174
1175 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
1176 on pthreads version, since pthread_getattr_np not available on solaris
1177 and macos. Reported by Claes Wallin.
1178
11792006-07-24 Kevin Ryde <user42@zip.com.au>
1180
1181 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
1182 it's a macro on MacOS X. Reported by Claes Wallin.
1183
1184 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
1185 for the benefit of Solaris 10. Reported by Claes Wallin.
1186
1187 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
1188 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
1189
11902006-07-21 Kevin Ryde <user42@zip.com.au>
1191
1192 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
1193 autoconf recommendation. Should fix Solaris 10 reported by Claes
1194 Wallin.
1195
1196 * threads.c: Include <string.h>, needed for memset() which is used by
1197 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
1198
b4912378
RB
11992006-07-18 Rob Browning <rlb@defaultvalue.org>
1200
1201 * continuations.c: Add __attribute__ ((returns_twice)) to the
1202 ia64_getcontext prototype so that gcc will make the right
1203 arrangements and avoid an illegal instruction during
1204 call-with-current-continuation.
1205
9a5fa6e9 12062006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
eaa94eaa
LC
1207
1208 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
1209 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
1210
8ab3d8a0
KR
12112006-07-08 Kevin Ryde <user42@zip.com.au>
1212
1213 * environments.c (core_environments_unobserve): Use if/else rather
1214 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
1215 about them not being rvalues. Reported by Mike Gran.
1216
1217 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
1218 portable and in particular fails on OpenBSD and AIX (see autoconf
1219 manual too). Reported by Mike Gran.
1220
12212006-06-25 Kevin Ryde <user42@zip.com.au>
1222
1223 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
1224 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
1225 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
1226 HAVE_TM_ZONE.
1227 (scm_strptime): Use tm_gmtoff from the strptime result when that field
1228 exists, it's set by glibc strptime "%s".
241d9cea 1229
9a5fa6e9 12302006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
d15ad007
LC
1231
1232 * eq.c: Include "struct.h", "goops.h" and "objects.h".
1233 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
1234 are not GOOPS instances.
1235 * struct.c: Include "eq.h".
1236 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
1237 hand-written code.
1238 (scm_i_struct_equalp): New.
1239 * struct.h (scm_i_struct_equalp): New declaration.
1240
c862d0e0
KR
12412006-06-06 Kevin Ryde <user42@zip.com.au>
1242
1243 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
1244 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
1245 reported by Mattias Holm.
b4912378 1246
c862d0e0
KR
12472006-06-03 Kevin Ryde <user42@zip.com.au>
1248
1249 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
1250 unused variable warning when elisp disabled. Reported by Ryan
1251 VanderBijl.
1252
1253 * throw.c (scm_handle_by_message): Add dummy return value to avoid
1254 compiler warning on cygwin. Reported by Ryan VanderBijl.
241d9cea 1255
c862d0e0
KR
1256 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
1257 duplicate of EXTRA_DOT_DOC_FILES.
1258 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
1259 Add scmconfig.h to dependencies, since these all run cpp. Helps a
1260 parallel "make -j2". Reported by Mattias Holm.
1261
12622006-05-30 Kevin Ryde <user42@zip.com.au>
1263
1264 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
1265 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
1266 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
1267 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
1268 port type descriptor, same as scm_make_port_type return value.
1269
af4f8612
MV
12702006-05-30 Marius Vollmer <mvo@zagadka.de>
1271
1272 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
1273 of the arguments is a array. This allows vectors to be equal to
1274 one-dimensional arrays.
1275
18bffcd0
MV
12762006-05-29 Marius Vollmer <mvo@zagadka.de>
1277
1278 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
1279 that we have a pair before accessing its cdr. Thanks to Bill
1280 Schottstaedt!
1281
c862d0e0
KR
12822006-05-28 Kevin Ryde <user42@zip.com.au>
1283
1284 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
1285 by "The Senator".
1286
12872006-05-27 Marius Vollmer <mvo@zagadka.de>
b0c0a310
MV
1288
1289 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
1290 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
1291
c862d0e0
KR
12922006-05-26 Kevin Ryde <user42@zip.com.au>
1293
1294 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
1295 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
1296 Reported by "The Senator".
1297 For select and ioctl, move fdes into those conditionals, to avoid
1298 unused variable warning when neither of those used.
1299
13002006-05-23 Kevin Ryde <user42@zip.com.au>
1301
1302 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
1303 It's unused and will be in stdio.h anyway (if it's anywhere).
1304
13052006-05-20 Kevin Ryde <user42@zip.com.au>
1306
1307 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
1308 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
1309
1310 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
1311 symlink). Probably can't create symlinks with mknod anyway though.
1312
1313 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
1314 generation.
1315
13162006-05-15 Kevin Ryde <user42@zip.com.au>
1317
1318 * simpos.c, simpos.h (scm_primitive__exit): New function.
1319 (scm_primitive_exit): Update docstring, no longer the best exit after
1320 a fork.
1321
13222006-05-09 Kevin Ryde <user42@zip.com.au>
1323
1324 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
1325 rather than converting to doubles, to avoid inf or nan when the inputs
1326 are too big for a double but the quotient does fit. This affects
1327 conversions exact->inexact of big fractions.
1328
1329 * filesys.c (scm_open_fdes): Use open64.
1330 (scm_init_filesys): Add O_LARGEFILE.
1331
1332 * ports.c (scm_seek): Use lseek64.
1333 (scm_truncate_file): Use ftruncate64.
1334
4a342b19
MV
13352006-05-08 Marius Vollmer <mvo@zagadka.de>
1336
1337 * private-gc.h (CELL_P): Also check that the potential pointer is
1338 correctly aligned for a cell. Thanks to Miroslav Lichvar!
1339
c862d0e0
KR
13402006-04-18 Rob Browning <rlb@defaultvalue.org>
1341
1342 * _scm.h: Add back error if the size of off_t is unknown. The bug
1343 was actually in guile-readline's configuration.
1344
13452006-04-18 Kevin Ryde <user42@zip.com.au>
1346
1347 * posix.c (scm_mkstemp): Update docstring from the manual, in
1348 particular file mode 0600 is not guaranteed.
1349
281ab5e2
KR
13502006-04-17 Kevin Ryde <user42@zip.com.au>
1351
1352 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
1353 size, to help the guile-readline build where off_t is unused.
1354
2b829bbb
KR
13552006-04-16 Kevin Ryde <user42@zip.com.au>
1356
1357 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
1358 (scm_readdir): Use readdir64.
1359 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
1360 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
1361 and ftruncate take off_t not size_t.
1362 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
1363 available.
1364
13652006-04-06 Kevin Ryde <user42@zip.com.au>
1366
1367 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
9a5fa6e9 1368 instead of toggling it. Reported by Ludovic Courtès.
241d9cea 1369
2b829bbb
KR
13702006-03-26 Marius Vollmer <mvo@zagadka.de>
1371
1372 * threads.c (get_thread_stack_base): Use scm_get_stack_base
1373 instead of accessing __libc_stack_end directly, and only do this
1374 when pthread_attr_getstack is known not to work for the main
1375 thread or when not using pthreads at all.
1376
1377 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
1378 unknown instead of returning NULL.
1379
9a5fa6e9 13802006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1381
1382 * numbers.c (scm_i_mem2number): Renamed to
1383 scm_c_locale_stringn_to_number.
1384 * numbers.c, print.c, read.c: Updated callers.
1385 * numbers.h: Update function declaration.
1386
13872006-03-11 Neil Jerram <neil@ossau.uklinux.net>
1388
1389 * unif.c (string_set): Don't return in a void function. (Reported
1390 by Mike Gran.)
1391
1392 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
1393 rather than void*, so we can do pointer arithmetic on it.
1394 (Reported by Mike Gran.)
1395 (s_scm_uniform_vector_write): Ditto.
1396
13972006-03-10 Neil Jerram <neil@ossau.uklinux.net>
1398
1399 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
1400 oldra is not an array. (Reported by Steve Juranich.)
1401
1402 * threads.c (do_unlock): Renamed from "unlock", which is defined
1403 in unistd.h on QNX. (Reported by Matt Kraai.)
1404
14052006-03-04 Kevin Ryde <user42@zip.com.au>
1406
1407 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
1408 not SCM_CRITICAL_SECTION_START.
1409
1410 * eval.c, posix.c: Change comments from C++ to C style. Reported by
1411 Mike Gran.
1412
14132006-02-28 Kevin Ryde <user42@zip.com.au>
1414
1415 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
1416
14172006-02-26 Kevin Ryde <user42@zip.com.au>
1418
1419 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
1420 NAME_MAX is not available, which is so on Solaris 10. Report and help
1421 by Bill Schottstaedt.
1422
1423 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
1424 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
1425 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
1426 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
1427 use "unsigned char", not signed char. This ensures comparisons are
1428 the same as `char<?' etc, and is also the same as guile 1.6 did.
1429 Reported by Sven Hartrumpf.
1430
4a9f83ff
MD
14312006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
1432
1433 * random.c: Test for SCM_HAVE_T_UINT64 instead of
1434 SCM_HAVE_T_INT64.
1435 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
1436 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
1437 scm_t_int32.
1438
29d8c124 14392006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
4c7016dc
HWN
1440
1441 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
1442 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
1443 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
1444 Take into account SEG->SPAN when computing CELLS_SWEPT.
1445 (scm_i_sweep_segment): Take one more argument, similarly.
1446 (scm_i_sweep_all_segments): Likewise.
1447 (scm_i_sweep_some_segments): Likewise.
1448 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
1449 refer to SCM_GC_CELLS_COLLECTED.
1450
1451 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
1452 argument, an `scm_i_sweep_statistics' object.
1453 Change the way DELTA is collected: don't take into account
1454 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
1455
1456 * gc-malloc.c (scm_realloc): Pass an extra argument
1457 to `scm_i_sweep_all_segments ()'.
1458
1459 * gc.c (gc_start_stats): Updated accordingly.
1460 (gc_end_stats): Take an additional SWEEP_STATS argument.
1461 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
1462 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
1463 Decrement SCM_CELLS_ALLOCATED.
1464 (scm_i_gc): Likewise.
1465
1466 * private-gc.h (scm_i_sweep_*): Updated function
1467 prototypes accordingly.
1468 (scm_t_sweep_statistics): New type.
1469 (scm_i_sweep_statistics_init): New macro.
1470 (scm_i_sweep_statistics_sum): New macro
1471
9a5fa6e9 14722006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1473
1474 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
1475 LEN. Without this, too much collectable memory gets unregistered,
1476 which results in an underflow of SCM_MALLOCATED in
1477 `decrease_mtrigger()'.
1478
1479 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
1480 equal to SCM_MALLOCATED.
1481
14822006-02-13 Marius Vollmer <mvo@zagadka.de>
1483
1484 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
1485 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
1486 configured --without-threads.
1487 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
1488
1aaa1c17
MV
14892006-02-12 Marius Vollmer <mvo@zagadka.de>
1490
1491 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
1492 filling when the fill parameter is omitted, as documented, but
1493 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
1494 can not store characters.
1495
d7c6575f
NJ
14962006-02-09 Neil Jerram <neil@ossau.uklinux.net>
1497
1498 * socket.c (scm_c_make_socket_address): Pass address_size pointer
1499 on to scm_fill_sockaddr call.
1500
43e01b1e
NJ
15012006-02-04 Neil Jerram <neil@ossau.uklinux.net>
1502
1503 * throw.h (scm_c_catch, scm_c_with_throw_handler,
1504 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
1505
1506 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
1507 (struct pre_unwind_data): New, replaces struct lazy_catch.
1508 (scm_c_catch): New, replaces scm_internal_catch as the primary
1509 catch API for C code; adds pre-unwind handler support.
1510 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
1511 compatibility.
1512 (tc16_pre_unwind_data, pre_unwind_data_print,
1513 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
1514 "lazy_catch" equivalents.
1515 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
1516 as the primary C API for a "lazy" catch.
1517 (scm_internal_lazy_catch): Now just a wrapper for
1518 scm_c_with_throw_handler, for back compatibility.
1519 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
1520 pre-unwind handler support.
1521 (scm_catch): Now just a wrapper for
1522 scm_catch_with_pre_unwind_handler, for back compatibility.
1523 (scm_with_throw_handler): New.
1524 (scm_lazy_catch): Update comment to say that the handler can
1525 return, and what happens if it does.
1526 (toggle_pre_unwind_running): New.
1527 (scm_ithrow): When identifying the throw target, take running
1528 flags into account. In general, change naming of things from
1529 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
1530 don't unwind the dynamic context first. Add dynwind framing to
1531 manage the running flag of a throw handler. If a lazy catch or
1532 throw handler returns, rethrow the same exception again. Add
1533 pre-unwind support to the normal catch case (SCM_JMPBUFP).
1534
1535 * root.c (scm_internal_cwdr): Add NULL args to
1536 scm_i_with_continuation_barrier call.
1537
1538 * dynwind.c: Change comment mentioning lazy-catch to mention
1539 pre-unwind data and throw handler also.
1540
1541 * continuations.h (scm_i_with_continuation_barrier): Add
1542 pre-unwind handler args.
1543
1544 * continuations.c (scm_i_with_continuation_barrier): Add
1545 pre-unwind handler args, and pass on to scm_c_catch (changed from
1546 scm_internal_catch).
1547 (c_handler): Remove scm_handle_by_message_noexit call.
1548 (scm_c_with_continuation_barrier): Call
1549 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1550 as the pre-unwind handler.
1551 (scm_handler): Remove scm_handle_by_message_noexit call.
1552 (s_scm_with_continuation_barrier): Call
1553 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1554 as the pre-unwind handler.
1555
2b829bbb
KR
15562006-02-04 Kevin Ryde <user42@zip.com.au>
1557
1558 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
1559
72098928
KR
15602006-02-03 Kevin Ryde <user42@zip.com.au>
1561
1562 * list.c, list.h (scm_list): Restore this function for use from C.
1563 It's a complete no-op but in theory might used by someone.
1564
aa092c5d
MV
15652006-01-30 Marius Vollmer <mvo@zagadka.de>
1566
1567 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
1568 so that it gets unlocked in all cases.
1569 (SCM_APPLY, CEVAL): Likewise.
1570
661ae7ab
MV
15712006-01-29 Marius Vollmer <mvo@zagadka.de>
1572
ee51ba31
MV
1573 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
1574 scm_is_typed_array instead.
1575
661ae7ab
MV
1576 Renamed the "frames" that are related to dynamic-wind to "dynamic
1577 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
1578 Updated documentation.
1579
99e370f6
MV
1580 Disabled "futures":
1581
1582 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
1583 * eval.c, init.c: Comment out all 'future' related things.
1584
15ccf10b
MV
15852006-01-28 Marius Vollmer <mvo@zagadka.de>
1586
1587 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
1588 to inline.h to make it inline.
1589
9a5fa6e9 15902005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
fd0a5bbc
HWN
1591
1592 * strings.c (scm_i_take_stringbufn): New.
1593 (scm_i_c_take_symbol): New.
1594 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
1595
1596 * strings.h (scm_i_c_take_symbol): New.
1597 (scm_i_take_stringbufn): New.
1598
1599 * symbols.c (lookup_interned_symbol): New function.
1600 (scm_i_c_mem2symbol): New function.
1601 (scm_i_mem2symbol): Use `lookup_symbol ()'.
1602 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
1603 creating a new Scheme string.
1604 (scm_from_locale_symboln): Likewise.
1605 (scm_take_locale_symbol): New.
1606 (scm_take_locale_symboln): New.
1607
1608 * symbols.h (scm_take_locale_symbol): New.
1609 (scm_take_locale_symboln): New.
1610
2ca2ffe6
HWN
16112006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1612
1613 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
1614 free_count.
1615
c255614e
HWN
16162005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
1617
1618 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
1619 upon error
1620
29295b0c
NJ
16212005-12-29 Neil Jerram <neil@ossau.uklinux.net>
1622
9a5fa6e9 1623 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
29295b0c
NJ
1624 the GC when allocated_fluids_len is zero.
1625
2824f4dc
NJ
16262005-12-14 Neil Jerram <neil@ossau.uklinux.net>
1627
ec3a8ace
NJ
1628 * load.c (the_reader, the_reader_fluid_num): New.
1629 (scm_primitive_load): Support custom reader.
1630 (scm_init_load): Init the_reader and the_reader_fluid_num; export
1631 the_reader as `current-reader'.
1632
2824f4dc
NJ
1633 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
1634 (rather than an uninitialized pointer on the stack).
1635
d9c36d2a
MV
16362005-12-07 Marius Vollmer <mvo@zagadka.de>
1637
6a88895b 1638 Reported by Bruce Korb:
241d9cea 1639
6a88895b
MV
1640 * init.c (invoke_main_func): Don't call exit here. Throws that
1641 are only caught by scm_with_guile will bypass us and would cause
1642 scm_boot_guile to return erroneously.
1643 (scm_boot_guile): Expect scm_with_guile to return and call exit
1644 here, passing it an appropriate exit code.
1645
1646 From Andy Wingo:
241d9cea 1647
d9c36d2a
MV
1648 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1649 unsigned char cast to an int, or -1 for EOS.
241d9cea 1650
b54df254
MV
16512005-12-06 Marius Vollmer <mvo@zagadka.de>
1652
08f489c9
MV
1653 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1654 non-const.
9a5fa6e9 1655 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
241d9cea 1656
b54df254
MV
1657 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1658 scm_enter_guile): Removed from public API. See comment at
1659 scm_without_guile for the rationale.
1660
1661 * scmsigs.c (read_without_guile): New.
1662 (signal_delivery_thread): Use it instead of
1663 scm_leave_guile/read/scm_enter_guile.
1664
9d9ce2b5
MV
1665 From Stephen Compall:
1666
1667 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1668 (CEVAL): Evaluate SRFI 61 cond clauses.
1669
9a5fa6e9 16702005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
9fb5c8f9
NJ
1671
1672 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1673 This was typically hit when running `gc-live-object-stats' right
1674 after starting Guile.
1675
efeac8ae
KR
16762005-11-30 Kevin Ryde <user42@zip.com.au>
1677
1678 * srfi-13.c (scm_string_append_shared): No copying if just one
1679 non-empty string in args.
1680
606183ba
KR
16812005-11-26 Kevin Ryde <user42@zip.com.au>
1682
1683 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
9a5fa6e9 1684 by Ludovic Courtès.
606183ba
KR
1685
1686 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1687 "register".
1688
1689 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1690 scm_malloc returning NULL, it never does that.
1691 * putenv.c (putenv): Likewise.
1692
1693 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1694 much too big to want to inline.
1695
9a5fa6e9 16962005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
dbb5de29
NJ
1697
1698 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1699 the value at its top. This fixes a reference leak.
1700 (PUSH_REF): Perform `pstate->top++' after calling
1701 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1702 effects.
1703
9a5fa6e9 17042005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
3f98874a
NJ
1705
1706 * gc.c (scm_weak_vectors): Removed.
1707
f07d2b20
KR
17082005-11-12 Kevin Ryde <user42@zip.com.au>
1709
1710 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
9a5fa6e9 1711 by Ludovic Courtès.
f07d2b20 1712
bedd3f5f
MV
17132005-11-07 Marius Vollmer <mvo@zagadka.de>
1714
1715 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1716 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1717 section might exit non-locally.
1718
7c9c0169
NJ
17192005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1720
1721 * eval.c (sym_instead): New symbol.
1722 (ENTER_APPLY): Remove optional use of a continuation when making
1723 trap call.
1724 (scm_debug_opts): Change doc for 'cheap option to make clear that
1725 it is now obsolete.
1726 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1727 making trap calls, and implement substitution of eval expressions
1728 and return values using the values that the trap call handlers
1729 return.
1730
1731 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1732
9a5fa6e9 17332005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
64cdbfc7
KR
1734
1735 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1736 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1737 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1738 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1739 scm_c_make_socket_address): New functions.
1740 * socket.h: Add prototypes.
1741
fc9f596c
KR
17422005-10-24 Kevin Ryde <user42@zip.com.au>
1743
1744 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1745 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1746 POSIX spec examples, the latter are not available on for instance
1747 NetBSD.
1748
1749 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1750 posix.texi.
1751
1752 * stime.c (scm_strftime): Update docstring from posix.texi.
1753
0460c6e1
MV
17542005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1755
1756 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
241d9cea 1757
0460c6e1
MV
1758 * null-threads.h, pthread-threads.h
1759 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1760 (scm_i_pthread_mutexattr_recursive): New.
1761
1762 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1763 (scm_i_critical_section_mutex): Do not initialize statically.
1764 (scm_threads_prehistory): Initialize
1765 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1766 here.
241d9cea 1767
0460c6e1
MV
1768 * eval.c (source_mutex): Do not initialiaze statically.
1769 (scm_init_eval): Do it here, using
1770 scm_i_pthread_mutexattr_recursive.
1771
7b4a9e52
MV
17722005-09-05 Marius Vollmer <mvo@zagadka.de>
1773
1774 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1775 New.
1776 (sym_reader): New.
1777 (scm_print_opts): Added "quote-keywordish-symbols" option.
1778 (quote_keywordish_symbol): New, for evaluating the option.
1779 (scm_print_symbol_name): Use it.
1780 (scm_init_print): Initialize new option to sym_reader.
241d9cea 1781
5defc05d
NJ
17822005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1783
1784 * eval.c (eval_letrec_inits): New.
1785 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1786
036482e9
MV
17872005-08-12 Marius Vollmer <mvo@zagadka.de>
1788
1789 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1790 Peter Gavin!
1791
5c347f8c
KR
17922005-08-12 Kevin Ryde <user42@zip.com.au>
1793
1794 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1795
bc721aa2
KR
17962005-08-06 Kevin Ryde <user42@zip.com.au>
1797
1798 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1799 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1800 scm_string_index, scm_string_index_right, scm_string_skip,
1801 scm_string_skip_right, scm_string_count, scm_string_map,
1802 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1803 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1804 procedures called in loops.
1805
126c81db
KR
18062005-08-02 Kevin Ryde <user42@zip.com.au>
1807
1808 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1809 avoid lots of copying where previoulsy growing by only 80 bytes at a
1810 time.
1811
7f278dc6
MV
18122005-08-01 Marius Vollmer <mvo@zagadka.de>
1813
1814 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1815 already have scm_lookup_closure_module, which does the same thing.
241d9cea 1816
cb5c4b07
MV
18172005-08-01 Marius Vollmer <mvo@zagadka.de>
1818
1819 New marking algorithm for weak hashtables that fixes the problem
1820 that references from the non-weak value to the associated weak
1821 key (for example) would prevent the entry from ever being dropped.
1822
1823 Guardians have been changed back to their original semantics and
1824 are no longer greedy and no longer drop cycles.
241d9cea 1825
cb5c4b07
MV
1826 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1827 hashtable and guardian machinery but call the relevant functions
1828 directly.
1829
1830 * guardians.h, guardians.c, deprecated.h,
1831 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1832 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1833 Deprecated and moved into deprecated.[ch].
1834
1835 * guardians.h, guardians.c: Mostly rewritten.
1836 (scm_i_init_guardians_for_gc,
1837 scm_i_identify_inaccessible_guardeds,
1838 scm_i_mark_inaccessible_guardeds): New.
930888e8 1839 (scm_make_guardian): Removed greedy_p argument.
241d9cea 1840
cb5c4b07
MV
1841 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1842 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1843 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1844 (scm_weaks_prehistory): Removed.
1845 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1846 scm_i_mark_weak_vectors_non_weaks,
1847 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1848 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1849 scm_scan_weak_vectors): Removed.
241d9cea 1850
cb5c4b07
MV
1851 * hashtab.h (scm_i_scan_weak_hashtables): New.
1852 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1853 SCM_WVECTF_NOSCAN.
1854 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1855 t->n_items.
1856 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1857 to latter. Do not scan the alists themselves, this is done by the
1858 weak vector code now. Just update the element count.
1859
1860 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1861 to latter. The type is now only part of the cell word.
1862 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1863
1864 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1865
3e2073bd
MD
18662005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1867
1868 Some changes towards making it possible to run Guile on the EM64T
1869 platform.
1870
1871 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1872 mallocating for (unsigned long *bounds).
1873
1874 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1875 scm_t_bits before storing them in the type word.
241d9cea 1876
3e2073bd
MD
1877 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1878 scm_t_bits to int.
1879
e8ac8e75
KR
18802005-07-12 Kevin Ryde <user42@zip.com.au>
1881
1882 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1883 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1884 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1885 than scm_makfrom0str.
1886 Reported by Ken Raeburn.
241d9cea 1887
e8ac8e75
KR
1888 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1889 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1890 returning SCM_GC_CARD_BVEC.
241d9cea 1891
e8ac8e75
KR
1892 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1893 rather than latin-1 acute accent, the latter may not print on all
1894 terminals.
1895
1896 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1897 trailing deletions, so as to return a substring if those are the only
1898 changes.
1899
adc0677d
KR
19002005-07-10 Kevin Ryde <user42@zip.com.au>
1901
1902 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1903 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1904 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1905 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1906
8fecbb19
HWN
19072005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1908
1909 * gc-card.c (scm_i_card_statistics): init tag.
1910
1911 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1912
fc9c5d06
HWN
19132005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1914
8fecbb19
HWN
1915 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1916 string.
fc9c5d06 1917
08fce816
KR
19182005-06-25 Kevin Ryde <user42@zip.com.au>
1919
1920 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1921 last change, use plain copy-on-write substrings, the individual
1922 descriptions in the srfi don't mention shared storage (only the
1923 introduction does).
1924
1925 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1926 null-terminator, rather than mallocing a whole new block.
1927 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1928
fc4abd0e
MV
19292005-06-12 Marius Vollmer <mvo@zagadka.de>
1930
e3da8a30
MV
1931 * ramap.c (scm_array_index_map_x): First test for real arrays,
1932 then check for generalized vectors. This ensures that the
1933 generalized vector case need only work with zero-origin ranges.
12097c77
MV
1934 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1935 to access the target array, making these functions work with all
1936 kinds of arrays, not just bit arrays.
e3da8a30 1937
fc4abd0e
MV
1938 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1939 gh_list.c, gh_predicates.c: Deprecated everything.
1940
1941 * environments.c (environment_default_folder,
1942 environment_default_observer): Do not use gh_call3, gh_call1.
1943
e4da0740
HWN
19442005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1945
1946 * modules.c (s_scm_eval_closure_module): new function. Return the
1947 module inside an eval-closure.
1948
1949 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1950 table. This means that procedure properties are GC'd if the
1951 procedure dies.
1952
27667158
KR
19532005-06-11 Kevin Ryde <user42@zip.com.au>
1954
1955 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1956 charset cases, count chars kept and build a string in a second pass,
1957 rather than using a cons cell for every char kept. Use a shared
1958 substring when nothing removed (such sharing is allowed by the srfi).
1959
8a00ba71
HWN
19602005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1961
1962 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
241d9cea 1963 string, so live object stats can be sorted with string<?.
8a00ba71 1964
a677679f
MV
19652005-06-06 Marius Vollmer <mvo@zagadka.de>
1966
2ff668b0
MV
1967 * print.c (iprin1): When writing a string, collect all characters
1968 that can be printed directly into one call to scm_lfwrite.
1969 Previously, every character was output with its own call to
1970 write(2) on unbuffered ports.
1971
589f22f6
MV
1972 * eval.c (scm_eval_options_interface): Use
1973 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1974 and SCM_CRITICAL_SECTION_END.
1975
a677679f
MV
1976 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1977 check for generalized vectors. This ensures that the generalized
1978 vector case need only work with zero-origin ranges.
1979
f8cda9ee
KR
19802005-06-06 Kevin Ryde <user42@zip.com.au>
1981
1982 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1983 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1984 matched.
1985
cdac1be4
MV
19862005-06-05 Marius Vollmer <mvo@zagadka.de>
1987
6642f7ac
MV
1988 * eval.c: Added comment on how to make case 1.1 of
1989 r5rs_pitfall.test succeed.
1990
cdac1be4
MV
1991 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1992
1993 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
241d9cea 1994
cdac1be4
MV
1995 * socket.c: Remove obsolete comment about socklen_t.
1996 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
241d9cea 1997
cdac1be4 1998 * numbers.h (isnan)[__MINGW32__]: Remove.
241d9cea 1999
cdac1be4
MV
2000 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
2001 DEFAULT_INCLUDES when cross compiling.
241d9cea 2002
cdac1be4
MV
2003 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
2004
a677679f 2005 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
cdac1be4
MV
2006 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
2007 from Jan's patch.)
241d9cea 2008
9e664475
MV
20092005-05-22 Marius Vollmer <mvo@zagadka.de>
2010
188d0c5e
MV
2011 * unif.c (scm_make_shared_array): Add old base to new base since
2012 scm_array_handle_pos does not include the base.
2013 (scm_aind): Likewise.
2014
9e664475
MV
2015 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
2016 output port.
2017
5a6d139b
NJ
20182005-05-12 Neil Jerram <neil@ossau.uklinux.net>
2019
2020 Mac OS X compile warning fixes, reported by Richard Todd.
241d9cea 2021
5a6d139b
NJ
2022 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
2023 that it is signed.
2024
2025 * strports.c (st_resize_port): Add unsigned char cast.
2026 (scm_mkstrport): Make read/write_buf cast unsigned.
2027
2028 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
2029
2030 * rdelim.c (scm_read_line): Initialize slen.
2031
2032 * load.c (scm_search_path): Remove weird >=1, and add
2033 parentheses to clarify conditions.
2034
2035 * hash.c (scm_hasher): Add const unsigned char cast.
2036
2037 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
2038
b01532af
NJ
20392005-05-11 Neil Jerram <neil@ossau.uklinux.net>
2040
9a5fa6e9 2041 Fix C99isms reported by Ludovic Courtès:
241d9cea 2042
b01532af
NJ
2043 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
2044 code.
2045
2046 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
2047 of code.
2048
2049 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
2050 of code.
2051 (scm_i_card_statistics): Add block for declarations of tag_as_scm
2052 and current.
2053
229a0710
NJ
20542005-05-10 Neil Jerram <neil@ossau.uklinux.net>
2055
2056 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
2057 compile warning reported by Werner Scheinast.
2058
645dd3fc
HWN
20592005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
2060
80038021
HWN
2061 * list.h: remove scm_list()
2062
645dd3fc
HWN
2063 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
2064 SCM_DEBUG_CELL_ACCESSES
2065 (FLUID_NEXT_LOC): idem.
2066
9a68a4a8
KR
20672005-04-30 Kevin Ryde <user42@zip.com.au>
2068
2069 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
2070 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
2071 zero when re==0 and im<0. Reported by Jean Crepeau.
2072
0640cdaa
KR
20732005-04-25 Kevin Ryde <user42@zip.com.au>
2074
2075 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
4d54ee35
KR
2076 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
2077 few sensible uses (like filling with a random number generator say),
2078 but has been allowed in the past and so should be kept.
0640cdaa 2079
c0b85e9c
KR
20802005-04-23 Kevin Ryde <user42@zip.com.au>
2081
2082 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
2083 scm_hash_fn_remove_x.
2084
2085 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
2086 the caller when cons* is reached through apply.
2087
2088 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
2089 list is called using apply, under the debugging evaluator.
2090 (scm_list): Remove.
2091
c51682b4
KR
2092 * list.c, list.h (scm_make_list): New code, moving make-list from
2093 boot-9.scm.
8cb2eff8 2094
c0575bde
KR
20952005-04-14 Kevin Ryde <user42@zip.com.au>
2096
2097 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
2098 converted from scheme code in boot-9.scm.
2099
47a298d9
KR
21002005-04-11 Kevin Ryde <user42@zip.com.au>
2101
2102 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
2103 Validate list argument, scm_string_append and scm_string_append_shared
2104 don't do that to their rest argument (in a normal build).
2105
8ea3dc2e
MV
21062005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2107
2108 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
2109 closure can not be stored since it is no longer valid at GC time.
2110 (make_hash_table): Initialize 'hash_fn' field.
2111 (scm_i_rehash): Only store hash_fn in hash table when closre is
2112 NULL.
2113 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
2114 non-NULL. Always use a NULL closure.
2115 (scm_hash_fn_create_handle_x): Also rehash when table contains too
2116 few entries.
241d9cea 2117
08d2020d
MV
21182005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2119
2120 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
2121 argument; always use scm_delq_x. The delete_fn function works on
2122 the handle, not the key, and it therefore makes no sense to make
2123 it configurable. Changed all callers.
2124 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
2125 (scm_hash_clear): Accept plain vectors as hashtables.
2126 (scm_delx_x): Removed.
241d9cea 2127
cb975c21
HWN
21282005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
2129
2130 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
2131 compatibility with gcc -std=c99.
2132
4c908f2c
MD
21332005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2134
2135 * async.h (scm_mask_ints): Removed left over reference to
2136 scm_root.
2137
2138 * threads.c: Removed fprintf debug statements.
241d9cea 2139
d193b04b
NJ
21402005-03-24 Neil Jerram <neil@ossau.uklinux.net>
2141
2142 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
2143
c29748cd
NJ
21442005-03-23 Neil Jerram <neil@ossau.uklinux.net>
2145
2146 * debug.c (scm_make_memoized): Remove unnecessary critical
2147 section, and simplify by using SCM_RETURN_NEWSMOB.
2148
e654b062
MD
21492005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2150
2151 * strings.h (SCM_STRING_UCHARS): Added missing argument.
2152
4bc6f1c6
KR
21532005-03-18 Kevin Ryde <user42@zip.com.au>
2154
2155 * arbiters.c (FETCH_STORE) [generic C]: Should be
9a5fa6e9 2156 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
4bc6f1c6 2157
f1531813
KR
21582005-03-13 Kevin Ryde <user42@zip.com.au>
2159
2160 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
2161 srfi-60.
2162
2163 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
2164 because OR-ing bits into a negative can reduce the value to an inum.
2165
2166 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
2167 casting inum to double since that can lose precision.
2168
a9fae247
MV
21692005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2170
2171 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
2172 (guilify_self_1): Initialize it.
2173
2174 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
2175 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
2176 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
2177 field.
2178 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
2179 recursively.
2180 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
2181 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
2182 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
2183 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
2184 scm_after_gc_c_hook here.
2185 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
2186 scm_after_gc_c_hook when a full GC has in fact been performed.
2187 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
2188
2189 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
2190 scm_gc_heap_lock.
2191
2192 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
2193 scm_gc_running_p while the scm_i_sweep_mutex is locked.
2194
2195 * inline.h (scm_cell, scm_double_cell): Do not check
2196 scm_gc_running_p, allocation during sweeping is OK.
2197
2198 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
2199 not set scm_block_gc.
2200
2201 * init.c (scm_i_init_guile): Do not set scm_block_gc.
2202
2203 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
2204 instead of scm_malloc. The latter can not be used during GC.
2205
d1c38e11
MV
22062005-03-09 Marius Vollmer <mvo@zagadka.de>
2207
2208 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
2209 years.
2210
99ec43c1
MV
22112005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2212
2213 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
2214 scm_gc_running_p. Sweeping can happen in parallel with
2215 allocation.
2216
2217 * inline.h: Updated comments for current threading implementation.
2218
2219 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
2220 (scm_i_thread): Removed unused signal_asyncs field.
2221 (threads_mark): Do not mark it.
2222 (guilify_self_1): Do not initialize it. Do initialize
2223 continuation_root field.
2224 (do_thread_exit): Do not remove thread from all_threads list.
2225 (on_thread_exit): Do it here, after leaving guile mode.
2226 (sleep_level): Removed.
2227 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
2228 returning. Do not support recursive sleeps.
2229 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
2230 entry. Do not support recursive sleeps.
2231
2232 * fluids.c (ensure_state_size, ensure_all_state_sizes,
2233 resize_all_states): Collapsed ensure_state_size and
2234 ensure_all_state_sizes into one function named resize_all_states.
2235 Allocate new vectors outside of single threaded region. Do only
2236 simple things inside that region.
2237 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
2238 while adding to the global lists.
241d9cea 2239
99ec43c1 2240
461f34aa
MV
22412005-03-08 Marius Vollmer <mvo@zagadka.de>
2242
2243 libltdl is no longer distributed. We expect it to be installed
2244 already.
241d9cea 2245
461f34aa
MV
2246 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
2247 (libguile_la_LIBADD): Removed @LIBLTDL@.
2248
4e047c3e
MV
22492005-03-07 Marius Vollmer <mvo@zagadka.de>
2250
2251 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
2252 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
2253 they also block/unblock execution of asyncs and call
2254 scm_async_click which is declared in async.h but threads.h can not
2255 include async.h since async.h already includes threads.h.
2256 (scm_i_critical_section_level): New, for checking mistakes in the
2257 use of the SCM_CRITICAL_SECTION_* macros.
2258 (scm_i_critical_section_mutex): Make it a recursive mutex so that
2259 critical sections can be nested.
2260
2261 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
2262 not zero.
241d9cea 2263
4e047c3e
MV
2264 * threads.h, threads.c (scm_frame_lock_mutex): New.
2265 (scm_frame_critical_section): Take mutex as argument.
2266 (framed_critical_section_mutex): New, used as default for above.
2267 (scm_init_threads): Initialize it.
2268 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
2269 scm_i_critical_section_mutex; both are initialized statically.
241d9cea 2270
4e047c3e
MV
2271 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
2272 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
b9d9ad3a
MV
2273 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
2274 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
4e047c3e
MV
2275
2276 * debug.c (scm_debug_options): Replace
2277 SCM_CRITICAL_SECTION_START/END with a frame and
2278 scm_frame_critical_section.
2279
2280 * continuations.c (scm_make_continuation): No longer a critical
2281 section.
2282 (scm_dynthrow): Abort when scm_i_critical_section_level is
2283 not zero.
241d9cea 2284
d0a45bff
MV
22852005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2286
db6673e5
MV
2287 * threads.c (scm_try_mutex): Renamed argument for consistency.
2288
d0a45bff
MV
2289 * root.c (scm_call_with_dynamic_root): New docstring.
2290
2291 * eval.c: Define _GNU_SOURCE.
2292
9de87eea
MV
22932005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2294
2295 Big merge from the mvo-thread-cleanup branch. The main changes
2296 are:
241d9cea 2297
9de87eea
MV
2298 - The dynamic roots functionality has been split into dynamic
2299 states and continuations barriers. Fluids have been
2300 reimplemented and can now be garbage collected.
241d9cea 2301
9de87eea
MV
2302 - Initialization of Guile now works in a multi-thread friendly
2303 manner. Threads can freely enter and leave guile mode.
2304
2305 - Blocking on mutexes or condition variables or while selecting
2306 can now be reliably interrupted via system asyncs.
2307
2308 - The low-level threading interface has been removed.
2309
2310 - Signals are delivered via a pipe to a dedicated 'signal delivery
2311 thread'.
241d9cea 2312
9de87eea
MV
2313 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
2314
2315 * throw.c (scm_handle_by_message): Exit only the current thread,
2316 not the whole process.
2317 (scm_handle_by_message_noexit): Exit when catching 'quit.
241d9cea 2318
9de87eea
MV
2319 * scmsigs.c (take_signal, signal_delivery_thread,
2320 start_signal_delivery_thread, ensure_signal_delivery_thread,
2321 install_handler): Reimplemented signal delivery as explained in
2322 the comments.
2323
2324 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
2325 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
2326 scm_i_sched_yield, scm_i_pthread_sigmask,
2327 SCM_I_PTHREAD_MUTEX_INITIALIZER,
2328 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
2329 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
2330 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
2331 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
2332 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
2333 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
2334 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
2335 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
2336 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
2337 scm_i_pthread_key_create, scm_i_pthread_setspecific,
2338 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
2339 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
2340 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
2341 when using pthreads.
2342 * null-threads.c, null-threads.h: Provide dummy definitions for
2343 the above symbols when not using pthreads.
241d9cea 2344
9de87eea
MV
2345 * modules.h, modules.c (scm_frame_current_module): New.
2346
2347 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
2348 instead of scm_internal_dynamic_wind.
2349
2350 * init.h, init.c (restart_stack, start_stack): Removed.
2351 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
2352 (scm_boot_guile_1): Removed.
2353 (scm_i_init_mutex): New.
2354 (really_cleanup_for_exit, cleanup_for_exit): New.
2355 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
2356 Moved around some init funcs. Call
2357 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
2358 with atexit.
241d9cea 2359
9de87eea
MV
2360 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
2361 Use "!scm_is_eq" instead of "!=".
2362
2363 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
2364 SCM_USE_COOP_THREADS): Removed.
2365
2366 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
2367 maintained. Unlock scm_i_sweep_mutex before running
2368 scm_after_gc_c_hook.
2369 (scm_permanent_object): Allocate outside of critical section.
2370 (cleanup): Removed.
241d9cea 2371
9de87eea
MV
2372 * fluids.h, fluids.c: Reimplemented completely.
2373 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
2374 SCM_FAST_FLUID_SET): Reimplemented as functions.
2375 (scm_is_fluid): New.
2376 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
2377 (scm_make_dynamic_state, scm_dynamic_state_p,
2378 scm_is_dynamic_state, scm_current_dynamic_state,
2379 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
2380 scm_c_with_dynamic_state, scm_with_dynamic_state,
2381 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
241d9cea 2382
9de87eea
MV
2383 * feature.c (progargs_fluid): New.
2384 (scm_program_arguments, scm_set_program_arguments): Use it instead
2385 of scm_progargs.
2386 (scm_init_feature): Allocate it. Also, only add "threads" feature
2387 when SCM_USE_PTHREAD_THREADS is true.
241d9cea 2388
9de87eea
MV
2389 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
2390 scm_make_rec_mutex, with all the consequences.
2391 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
2392 scm_internal_dynamic_wind. Handle dynamic states as second
2393 argument.
241d9cea 2394
9de87eea
MV
2395 * threads.h, threads.c (scm_internal_select): Renamed to
2396 scm_std_select and discouraged old name.
2397 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
2398 and scm_std_usleep.
2399 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
2400 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
2401 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
2402 SCM_THREAD_DATA): Removed.
2403 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
2404 (scm_i_thread): New.
2405 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2406 Use scm_assert_smob_type.
2407 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
2408 scm_thread_self, scm_thread_yield, scm_mutex_init,
2409 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
2410 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
2411 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
2412 scm_cond_init, scm_cond_destroy, scm_cond_wait,
2413 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
2414 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
2415 scm_thread_select): Removed. Replaced with scm_i_pthread
2416 functions as appropriate.
2417 (scm_in_guile, scm_outside_guile): Removed.
2418 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
2419 take a ticket.
2420 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
2421 New.
2422 (scm_i_frame_single_threaded): New.
2423 (scm_init_threads_default_dynamic_state): New.
2424 (scm_i_create_thread): Removed.
2425 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
2426 (scm_make_recursive_mutex): New.
2427 (scm_frame_critical_section): New.
2428 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
2429 latter, changed all uses.
2430 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
2431 scm_i_set_last_debug_frame): New, use them instead of scm_root
2432 stuff.
2433 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
2434 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
2435 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
2436 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
2437 (remqueue): Allow the removal of already removed cells. Indicate
2438 whether a real removal has happened.
2439 (scm_thread): Removed, replaced with scm_i_thread.
2440 (make_thread, init_thread_creatant): Removed.
2441 (cur_thread): Removed.
2442 (block_self, unblock_from_queue): New.
2443 (block, timed_block, unblock): Removed.
2444 (guilify_self_1, guilify_self_2, do_thread_exit,
2445 init_thread_key_once, init_thread_key,
2446 scm_i_init_thread_for_guile, get_thread_stack_base,
2447 scm_init_guile): New initialisation method.
2448 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
2449 thread creation.
2450 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
2451 "fair" to fat and implemented new semantics, including reliable
2452 interruption.
2453 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
2454 (scm_threads_mark_stacks): Explicitly mark handle.
2455 (scm_std_select): Allow interruption by also selecting on the
2456 sleep_pipe.
2457 (scm_i_thread_put_to_sleep): Handle recursive requests for
2458 single-threadedness.
2459 (scm_threads_prehistory, scm_init_threads): Put current thread
2460 into guile mode via guileify_self_1 and guileify_self_2,
2461 respectively.
2462
2463 * fluid.h (SCM_FLUIDP): Deprecated.
241d9cea 2464
9de87eea 2465 * coop-threads.c: Removed.
241d9cea 2466
9de87eea
MV
2467 * continuations.h, continuations.c (scm_with_continuation_barrier,
2468 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
2469 New.
2470
2471 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
2472 (async_mutex): New.
2473 (scm_async_click): Protected with async_mutex. Do not deal with
2474 signal_asyncs, which are gone. Set cdr of handled async cell to
2475 #f.
2476 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
2477 current sleep.
2478 (scm_system_async_mark_for_thread): Do not use scm_current_thread
2479 since that might not work during early initialization.
241d9cea 2480
9de87eea
MV
2481 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
2482 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
2483 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
2484 and SCM_CRITICAL_SECTION_END.
2485 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
2486 SCM_CRITICAL_SECTION_START/END.
241d9cea 2487
9de87eea
MV
2488 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
2489 (libguile_la_SOURCES): Added null-threads.c
2490 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
2491 threads-plugin.c.
2492 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
2493
2494 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
2495 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
2496 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
2497 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
2498 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
2499 scm_make_root): Removed or deprecated. Replaced with references
2500 to the current thread, dynamic state, continuation barrier, or
2501 some fluid, as appropriate.
2502 (root_mark, root_print): Removed.
2503 (scm_internal_cwdr): Reimplemented guts with
2504 scm_frame_current_dynamic_state and
2505 scm_i_with_continuation_barrier.
2506 (scm_dynamic_root): Return current continuation barrier.
241d9cea
NJ
2507
2508
ad3d5a65
MV
25092005-02-28 Marius Vollmer <mvo@zagadka.de>
2510
2511 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
2512 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
2513 cleanliness.
2514 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
2515 IP_DROP_MEMBERSHIP.
2516 Thanks to Greg Troxel!
2517
73a90115
MD
25182005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2519
2520 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
2521 block.
2522
5d2cb3ab
MV
25232005-02-25 Marius Vollmer <mvo@zagadka.de>
2524
2525 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
2526 so that no two weak alist vectors share a spine.
2527 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
2528 during GC before inserting the new alist cell.
2529
838c4126
MV
25302005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2531
2532 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
2533 the hashtable.
2534 (scm_hash_fn_create_handle_x): Likewise.
2535 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
241d9cea 2536
29fed193
MD
25372005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2538
2539 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
2540 the prototypical examples mentioned in the old reference manual.
2541 Instead keep the old semantics of dispatching on type. (Yes, this
2542 is extremely ugly, but the whole point of keeping the deprecated
2543 interface is not to break old code.)
2544
9cc49060
MD
25452005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2546
2547 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
2548 scm_i_array_dims.
2549
8447f463
KR
25502005-01-28 Kevin Ryde <user42@zip.com.au>
2551
2552 * numbers.c (scm_ash): Rewrite using shifts, much faster than
2553 integer-expt and multiply/divide. Inexacts and fractions no longer
2554 supported (they happened to work before for left shifts, but not
2555 right). Don't really need inexacts and fractions, since ash is
2556 documented as a "bitwise operation", and all the rest of those only
2557 take exact integers.
2558
1367aa5e
HWN
25592005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
2560
856fca7e
HWN
2561 * gc-card.c (scm_i_card_statistics): map structs, closures and
2562 subrs to one tag.
2563
1367aa5e 2564 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
856fca7e 2565 (tag_table_to_type_alist): ignore unknown types.
1367aa5e
HWN
2566
2567 * gc-segment.c (scm_i_all_segments_statistics): new function.
2568 (scm_i_heap_segment_statistics): new function
2569
2570 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
2571 statistics on the number of live objects of each type.
2572
2573 * gc-card.c (scm_i_tag_name): new function.
241d9cea 2574 (scm_i_card_statistics): new function.
1367aa5e 2575
333db3b8
KR
25762005-01-24 Kevin Ryde <user42@zip.com.au>
2577
2578 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
2579 POSIX and C99 don't document errno being set. Reported by Bruno
2580 Haible.
2581 (scm_flock): Update docstring from manual.
2582
8447f463
KR
2583 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
2584 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
2585 a 64-bit system.
2586
2587 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
2588 sa_handler, needs to be a long on 64-bit systems where int is only 32
2589 bits.
2590
88f59e53
MV
25912005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2592
0eeb2611
MV
2593 * environments.c (obarray_enter, obarray_replace): Call
2594 SCM_HASHTABLE_INCREMENT when adding a new entry.
2595
88f59e53
MV
2596 * objects.c: Include goops.h for the scm_class_of prototype.
2597
2598 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
2599 sizes to be smaller than the maximum lengths of vectors.
2600
219b2868
MV
26012005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2602
2603 * ports.c, smob.c: Include "libguile/goops.h".
2604
2605 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
2606 scm_class_char, scm_class_pair, scm_class_procedure,
2607 scm_class_string, scm_class_symbol,
2608 scm_class_procedure_with_setter, scm_class_primitive_generic,
2609 scm_class_vector, scm_class_null, scm_class_real,
2610 scm_class_complex, scm_class_integer, scm_class_fraction,
2611 scm_class_unknown, scm_port_class, scm_smob_class,
2612 scm_no_applicable_method, scm_class_of): Moved from objects to
2613 goops since they are only useable once goops has been loaded.
2614 (scm_classes_initialized): Removed.
2615 (scm_class_of): Do not check it.
2616 (create_standard_classes): Do not set it.
241d9cea 2617
009c6b9c
MV
26182005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2619
50472546
MV
2620 * objects.h, objects.c (scm_classes_initialized): New.
2621 (scm_class_of): Signal error when scm_classes_initialized is zero.
2622 * goops.c (create_standard_classes): Set scm_classes_initialized
2623 to one.
241d9cea 2624
009c6b9c
MV
2625 * random.c (scm_random_solid_sphere_x): Use
2626 scm_c_generalized_vector_length instead of
2627 scm_uniform_vector_length.
2628
7719cbe9
MV
26292005-01-16 Marius Vollmer <mvo@zagadka.de>
2630
2631 * script.c (scm_compile_shell_switches): Removed debugging output.
2632
1ec44fed
KR
26332005-01-15 Kevin Ryde <user42@zip.com.au>
2634
2635 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
2636 docstrings from manual.
2637 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
2638
6e4cd850
MV
26392005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2640
0b5a0521
MV
2641 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
2642 its value.
2643
2644 Implement u64 and s64 uniform numeric vectors with bignums when
2645 scm_t_uint64 and scm_t_int64 are not available.
2646
2647 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2648 scm_array_handle_u64_elements,
2649 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2650 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2651 is not available.
2652 (scm_take_s64vector, scm_array_handle_s64_elements,
2653 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2654 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2655 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2656 scm_t_int64/scm_t_uint64 are not available.
2657 (uvec_mark): New, to mark the bignums.
2658 (alloc_uvec): Initialize bignums.
2659 (uvec_fast_ref): Return bignums directly.
2660 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2661 assert_exact_integer): New.
2662 (uvec_fast_set): Use them to validate the bignums.
2663 (scm_init_srfi_4): Set mark function of smob when needed.
2664 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2665 scm_int64_max.
241d9cea 2666
6e4cd850 2667 Recognize 1.4 -e syntax.
241d9cea 2668
6e4cd850
MV
2669 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2670 (scm_compile_shell_switches): Use them to recognize and convert
2671 1.4 "-e" syntax.
241d9cea 2672
3b698afe
MV
26732005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2674
2675 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2676 deprecated features that once were macros but are now functions
2677 back into macros.
2678
d6dc83a9
MV
26792005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2680
49086691
MV
2681 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2682 * deprecation.c (scm_issue_deprecation_warning,
2683 scm_c_issue_deprecation_warning_fmt): Use it.
2684 (mode): Removed.
2685 (print_summary): New.
2686 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2687 mode.
241d9cea 2688
d6dc83a9 2689 Deprecated SCM_ARRAY* macros.
241d9cea 2690
d6dc83a9
MV
2691 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2692 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2693 version. Changed all uses.
2694 (scm_tc16_array, scm_i_tc16_array,
2695 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2696 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2697 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2698 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2699 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2700 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2701 SCM_ARRAY_V, SCM_I_ARRAY_V,
2702 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2703 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2704 scm_t_array, scm_i_t_array): Likewise.
2705 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2706 Moved from unif.h to unif.c.
2707 (scm_c_array_rank): New.
2708 (scm_array_rank): Reimplement using it.
241d9cea 2709
d6dc83a9
MV
2710 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2711 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2712 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
241d9cea 2713
dc91d8de
MV
27142005-01-11 Marius Vollmer <mvo@zagadka.de>
2715
2716 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2717 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2718 scm_c_generalized_vector_ref and scm_cvref, and
2719 scm_c_generalized_vector_set_x, respectively.
2720 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2721 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2722
2723 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2724 former to latter and made public. Changed all uses.
2725 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2726 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2727 (scm_i_shap2ra): New internal version of scm_shap2ra.
2728 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2729 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2730 (scm_ra_set_contp): Deprecated, changed all uses to
2731 scm_i_ra_set_contp.
2732 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
241d9cea 2733
66d33784
MV
27342005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2735
b06f099d
MV
2736 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2737 Trotts!
2738
5d35ad81
MV
2739 * unif.c (scm_list_to_typed_array): Allow the specification of the
2740 upper bound as well. This is needed for empty arrays.
2741 (l2ra): Give needed number of elements in error message.
2742 (scm_i_print_array): Print length information for arrays that need
2743 it.
2744 (scm_i_read_array): Parse it.
241d9cea 2745
66d33784
MV
2746 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2747 scm_i_object_chars, scm_i_object_length): Brought back from the
2748 dead.
2749
d7d7d401
MV
27502005-01-10 Marius Vollmer <mvo@zagadka.de>
2751
74c58fce
MV
2752 * ramap.c: Replaced single-index uses of scm_array_set_x with
2753 scm_c_generalized_vector_set_x.
2754
d7d7d401
MV
2755 * unif.c (scm_array_rank, scm_array_dimensions,
2756 scm_shared_array_offset, scm_shared_array_increments,
2757 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2758 to simplify code and make it more general.
2759 (scm_shared_array_root): Work with all kinds of arrays, including
2760 naked vectors.
2761 (indices_to_pos): New.
74c58fce
MV
2762 (scm_make_shared_array): Use it instead of scm_aind; use handle
2763 for oldra.
2764
4475d3fe
KR
27652005-01-10 Kevin Ryde <user42@zip.com.au>
2766
2767 * posix.c (scm_mkstemp): Update docstring from manual.
2768
d3ddc95e
KR
2769 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2770
8c8491f5
MV
27712005-01-09 Marius Vollmer <mvo@zagadka.de>
2772
b89ecc6f
MV
2773 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2774 scm_i_uniform_vector_set_proc): New.
2775 (u8ref, u8set, s8ref, s8set, etc): New.
2776 (uvec_reffers, uvec_setters): New.
2777 (uvec_to_list): Use generic scm_array_handle_ref instead of
2778 uvec_fast_ref since scm_array_handle_ref should be faster now.
8cb01d9f
MV
2779 (coerce_to_uvec, scm_c_uniform_vector_ref,
2780 scm_c_uniform_vector_set_x): Likewise.
241d9cea 2781
b89ecc6f
MV
2782 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2783 New.
2784 (scm_t_array_handle): Added ref, set, elements and
2785 writable_elements for fast inline operation of
2786 scm_array_handle_ref and scm_array_handle_set.
2787 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2788 and replaced with inline code that simply calls the ref/set
2789 members of the handle.
2790 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2791 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2792 New.
2793 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2794 and memoize_set.
2795 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2796 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2797 scm_bit_invert_x): Correctly multiply index with increment in the
2798 general case.
241d9cea 2799
8c8491f5
MV
2800 * unif.c (scm_array_handle_set): Correctly execute only one
2801 alternative. D'Oh!
2802 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2803 the array; this covers all cases with much simpler code.
241d9cea 2804
8c8491f5
MV
2805 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2806 as well.
2807
cd5d55c7
MV
28082005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2809
2810 * srfi-4.c (uvec_type): New.
2811 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2812 scm_c_uniform_vector_x): Use it to get concrete type.
2813
2814 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2815 fit the docs.
2816
2817 * unif.c (ra2l): Handle zero rank arrays.
2818 (scm_i_print_array): Print zero rank arrays specially.
2819 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2820 (scm_i_read_array): Allow zero rank arrays.
241d9cea 2821
a4aad74e
MV
28222005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2823
2824 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2825 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2826 and SCM_SET_HASHTAB_BUCKET.
2827
2828 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2829 Removed ref_stack field.
2830 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2831 of a print state. Use them everywhere instead of ref_stack.
241d9cea 2832
3a40d5e1 2833 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
241d9cea 2834
a4aad74e
MV
2835 * srfi-4.c: Include deprecation.h.
2836
2837 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2838 deprecated.c, eq.c
2839 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2840 (scm_vector_elements, scm_vector_writable_elements,
2841 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2842 unif.[hc].
2843 (SCM_SIMPLE_VECTOR_LOC): Removed.
2844 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2845 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2846 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2847 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2848 latter. Changed use in eq.c.
241d9cea 2849
f01fe441
MV
28502005-01-07 Marius Vollmer <mvo@zagadka.de>
2851
2852 Make the uniform vector routines also deal with one dimensional
2853 arrays.
241d9cea 2854
f01fe441
MV
2855 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2856 SCM_SMOB_PREDICATE in this file.
2857 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2858 of the right type.
2859 (scm_is_uniform_vector): Likewise.
2860 (uvec_fast_ref): Made BASE param const.
2861 (uvec_writable_elements, uvec_elements): New.
2862 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2863 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2864 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2865 arrays.
2866 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2867 argument convention.
2868 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2869 checking.
2870 (scm_uniform_vector_length): Use uvec_length.
241d9cea 2871
2aaf5726
MV
28722005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2873
2874 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2875 scm_c_uniform_vector_size): Removed.
2876 (scm_array_handle_uniform_element_size): New.
241d9cea 2877
2aaf5726
MV
2878
2879 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2880 type of POS parameter to be signed, positions can be negative.
2881 (scm_array_handle_release): New, changed all uses of
2882 scm_t_array_handle to properly call it.
2883 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2884 Renamed former to latter, changed all uses.
241d9cea 2885
34ae52fc
MV
28862005-01-05 Marius Vollmer <mvo@zagadka.de>
2887
2888 Updated bitvector routines to also use scm_t_array_handles.
241d9cea 2889
34ae52fc
MV
2890 * unif.h (scm_bitvector_elements,
2891 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2892 deliver offset, length and increment to caller. Changed all uses.
2893 (scm_bitvector_release_elements,
2894 scm_frame_bitvector_release_elements,
2895 scm_bitvector_release_writable_elements,
2896 scm_frame_bitvector_release_writable_elements): Removed.
2897 (scm_array_handle_bit_elements,
2898 scm_array_handle_bit_writable_elements,
2899 scm_array_handle_bit_elements_offset): New.
2900 (scm_make_typed_array): The special value for non-initialized
2901 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2902 was a valid value to fill bitvectors with, so it can't really be
2903 specialed out.
241d9cea 2904
c4cb7628
KR
29052005-01-04 Kevin Ryde <user42@zip.com.au>
2906
2907 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2908 Reported by Bill Schottstaedt.
2909
0356881d
MV
29102005-01-02 Marius Vollmer <mvo@zagadka.de>
2911
2912 * sort.c (quicksort): Added INC parameter for non-contigous
2913 vectors.
2914 (quicksort1): New, for contigous vectors. Both functions are
2915 generated from the same code by including "quicksort.i.c".
2916 (scm_restricted_vector_sort_x): Call one of quicksort and
2917 quicksort1, depending on increment of vector.
2918 (scm_sort): Simply call scm_sort_x on a copy of the list or
2919 vector.
2920 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2921 size_t, added inc parameter.
2922 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2923 so that it doesn't leak.
2924 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2925 list or vector.
241d9cea 2926
0356881d
MV
2927 * ramap.c (scm_array_map_x): Do not try to convert fill value
2928 before filling, any necessary conversion is done while storing.
2929
2930 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2931 doing it inline.
2932
2933 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2934 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2935 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2936
2937 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2938 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2939 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2940 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2941 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2942 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2943 vector elements API or simple vector API, as appropriate. Removed
2944 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2945 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
241d9cea 2946
0356881d
MV
2947 * srfi-4.h, srfi-4.c,
2948 srfi-4.i.c (scm_array_handle_uniform_elements,
2949 scm_array_handle_uniform_writable_elements,
2950 scm_uniform_vector_elements,
2951 scm_uniform_vector_writable_elements):
2952 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2953 scm_t_array_handle, deliver length and increment.
2954 (scm_array_handle_<foo>_elements,
2955 scm_array_handle_<foo>_writable_elements): New.
241d9cea 2956
0356881d
MV
2957 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2958 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
241d9cea 2959
0356881d
MV
2960 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2961 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2962 scm_array_handle_set, scm_array_handle_elements
2963 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2964 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2965 scm_dimensions_to_uniform_array): Deprecated for real.
2966 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2967 snarfing wont allow a mismatch between C and Scheme arglists.
2968 (scm_make_shared_array, scm_enclose_array): Correctly use
2969 scm_c_generalized_vector_length instead of
2970 scm_uniform_vector_length.
241d9cea 2971
0356881d
MV
2972 * validate.h (SCM_VALIDATE_VECTOR,
2973 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2974 of SCM_VECTORP.
2975
2976 * weaks.h, weaks.c: Use new internal weak vector API from
2977 vectors.h.
2978
2979 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2980 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2981 'extra' to being regular sources.
2982 (noinst_HEADERS): Added quicksort.i.c.
2983 * quicksort.i.c: New file.
2984
2985 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2986 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2987 and reimplemented. Replaced all uses with scm_vector_elements,
2988 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2989 appropriate.
2990 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2991 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2992 SCM_SIMPLE_VECTOR_LOC): New.
2993 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2994 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2995 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2996 Removed.
2997 (scm_vector_copy): New.
2998 (scm_vector_elements, scm_vector_writable_elements): Use
2999 scm_t_array_handle, deliver length and increment. Moved to
3000 unif.h. Changed all uses.
3001 (scm_vector_release_elements,
3002 scm_vector_release_writable_elements,
3003 (scm_frame_vector_release_elements,
3004 scm_frame_vector_release_writable_elements): Removed.
3005 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
3006 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
3007 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
3008 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
3009 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
3010 weak vectors.
3011
0336d18b
MV
30122004-12-29 Marius Vollmer <mvo@zagadka.de>
3013
3014 No longer use creators to specify the type of an array. Creators
3015 expose the fact that arrays are wrapped around vectors, but that
3016 might change.
241d9cea 3017
0336d18b
MV
3018 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
3019 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
3020 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
3021 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
3022 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
3023 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
3024 uvec_proc_vars): Removed.
3025 (scm_i_generalized_vector_creator): Removed.
3026 (scm_i_generalized_vector_type): New.
3027
3028 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
3029 scm_make_typed_array, scm_array_type, scm_list_to_array,
3030 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
3031 (scm_array_creator): Removed.
3032 (scm_array_p): Deprecated second PROT argument.
3033 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
3034 Deprecated, reimplemented in terms of scm_make_typed_array and
3035 scm_list_to_typed_array.
3036 (scm_i_proc_make_vector, scm_i_proc_make_string,
3037 scm_i_proc_make_bitvector): Removed.
3038 (type_creator_table, init_type_creator_table, type_to_creator,
3039 make_typed_vector): New.
3040 (scm_i_convert_old_prototype): Removed.
3041 (prototype_to_type): New.
3042 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
3043 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
3044 minor added clarity.
3045 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
3046 instead of scm_make_uve.
3047 (tag_creator_table, scm_i_tag_to_creator): Removed.
3048 (tag_to_type): New.
3049 (scm_i_read_array): Use scm_list_to_typed_array instead of
3050 scm_list_to_uniform_array.
241d9cea 3051
277e8472
MV
30522004-12-27 Marius Vollmer <mvo@zagadka.de>
3053
32b26202
MV
3054 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
3055 (scm_bitvector_writable_elements): New.
3056 (scm_bitvector_release, scm_bitvector_release_elements):
3057 Renamed former to latter. Added explicit call to
3058 scm_remember_upto_here_1.
3059 (scm_frame_bitvector_release,
3060 scm_frame_bitvector_release_elements): Renamed former to latter.
3061 (scm_bitvector_release_writable_elements,
3062 scm_bitvector_release_writable_elements): New.
3063 Changed all uses as required by the changes above.
3064
3065 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
3066 scm_u8vector_elements, etc): Made return value "const".
3067 (scm_uniform_vector_writable_elements,
3068 scm_u8vector_writable_elements, etc): New.
3069 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
3070 Renamed former to latter. Added explicit call to
3071 scm_remember_upto_here_1.
3072 (scm_frame_uniform_vector_release,
3073 scm_frame_uniform_vector_release_elements): Renamed former to latter.
3074 (scm_uniform_vector_release_writable_elements,
3075 scm_frame_uniform_vector_release_writable_elements): New. Takes
3076 crown of longest identifier yet.
3077 Changed all uses as required by the changes above.
241d9cea 3078
277e8472
MV
3079 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
3080 void.
3081 (scm_is_vector, scm_vector_p, scm_vector_length,
3082 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
3083 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
3084 scm_vector_move_left_x, scm_vector_move_right_x,
3085 scm_vector_fill_x): handle one-dimensional arrays.
32b26202
MV
3086 (scm_vector_elements, scm_vector_release_elements,
3087 scm_vector_frame_release_elements, scm_vector_writable_elements,
3088 scm_vector_release_writable_elements,
3089 scm_vector_frame_release_writable_elements): New.
3090 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
3091 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
277e8472
MV
3092
3093 * ramap.c (scm_ramapc, scm_raeql): Use
3094 scm_c_generalized_vector_length instead of
3095 scm_uniform_vector_length.
3096 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
3097 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
241d9cea 3098
49c51610
MV
30992004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3100
3101 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
3102 member for relocating debug frames.
3103 (scm_make_continuation): Set it.
3104
3105 * stacks.c (read_frame, read_frames, scm_make_stack,
3106 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
3107 of continuations instead of calculating the offset ourselves.
3108 Relocate 'vect' member of scm_t_debug_frame.
241d9cea 3109
3b2ee265
KR
31102004-12-16 Kevin Ryde <user42@zip.com.au>
3111
3112 * ramap.c (scm_array_map_x): Check for at least one source argument.
3113
e120686a
KR
31142004-12-14 Kevin Ryde <user42@zip.com.au>
3115
3116 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
3117 the C code so for the final call to the predicate procedure is a tail
3118 call, per SRFI-13 spec.
3119
680b5237
KR
31202004-12-10 Kevin Ryde <user42@zip.com.au>
3121
3122 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
3123 recent revision to the reference manual.
3124
3125 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
3126 with "%", C99 says it's well-defined.
3127
3128 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
3129 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
3130 bother trying to fit scm_from_ulong, not really worth the trouble if
3131 addresses are more than 4 bytes usually.
3132
446d320c
KR
31332004-11-30 Kevin Ryde <user42@zip.com.au>
3134
3135 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
3136 arm32. Reported by Greg Troxel.
3137
f2654760
MV
31382004-11-14 mvo <mvo@zagadka.de>
3139
3140 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
3141
3142 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
3143
d550e35f
MV
31442004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3145
3146 Enclosed arrays are now their own smob. This has been done to
3147 make the code more explicit about them and to prepare for the time
f2654760
MV
3148 when generalized vectors include arbitrary one-dimensional
3149 arrays. (Uptonow, enclosed arrays have been recognized by their
3150 use of an array as their storage 'vector'. When all generalized
3151 vectors are allowed as storage, including one-dimensional arrays,
3152 this will no longer work.)
241d9cea 3153
d550e35f
MV
3154 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
3155 New.
3156 (exactly_one_third, singp): Removed.
3157 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
3158 scm_shared_array_offset, scm_shared_array_increments): Handle
3159 enclosed arrays explicitely.
3160 (scm_array_rank): Likewise. Also, do not return zero for
3161 non-arrays, signal an error instead since arrays with rank zero do
3162 exist.
3163 (scm_i_make_ra): New, for specifying the tag of the new array.
3164 (scm_make_enclosed_array): Use it.
3165 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
3166 (scm_make_shared_array): Use scm_c_generalized_vector_length
3167 instead of scm_uniform_vector_length.
3168 (scm_array_in_bounds_p): Rewritten to be much cleaner.
3169 (scm_i_cvref): New, doing the job of scm_cvref.
3170 (scm_cvref): Use scm_i_cvref.
3171 (scm_array_ref): Do not accept non-arrays when no indices are
3172 given. Use scm_i_cvref to do the actual access.
3173 ("uniform-array-set1"): Do not register.
3174 (scm_array_set_x, scm_uniform_array_read_x,
3175 scm_uniform_array_write): Handle enclosed arrays explicitly.
3176 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
3177 handle enclosed arrays.
3178 (scm_array_to_list): Handle enclosed arrays explicitly.
3179 (rapr1): Removed.
3180 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
3181 enclosed arrays.
3182 (scm_i_print_enclosed_array): New.
3183 (tag_proto_table, tag_creator_table): Renamed former to latter.
3184 Added "a" and "b" for strings and bitvectors, resp.
3185 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
3186 latter. Tag "a" is in the table now, no need to handle it as a
3187 legacy tag.
3188 (scm_raprin1): Just call scm_iprin1.
3189 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
3190 explicitly.
3191 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
3192 Use scm_i_print_array as printer for scm_tc16_array.
241d9cea 3193
2ed34885
MV
31942004-11-10 Marius Vollmer <mvo@zagadka.de>
3195
823086c1
MV
3196 * ramap.c (cind): Changed second arg to be pointer to long instead
3197 of uniform vector.
3198 (scm_ramapc): Allocate index vector with scm_malloc and not as
d550e35f 3199 uniform vector. Wrap it in a frame so that it gets properly freed.
823086c1
MV
3200 (scm_array_index_map_x): Likewise.
3201
3202 * unif.c: Changed all uses of scm_array_prototype to
3203 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
3204 prototype is known.
3205 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
3206 in terms of scm_uniform_vector_read_x and
3207 scm_uniform_vector_write, respectively. Strings and
3208 bitvector support has been dropped.
241d9cea 3209
2ed34885
MV
3210 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
3211 needed files directly. Include config.h, <unistd.h> and <io.h>
3212 when available.
3213 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
3214
2c72f253
MV
32152004-11-09 Marius Vollmer <mvo@zagadka.de>
3216
3217 * gh_data.c (gh_uniform_vector_length): Properly use
3218 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
3219
3cc0a296
MV
32202004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3221
3222 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
3223 New.
3224 (scm_i_uniform_vector_creator): Removed.
3225 (scm_i_generalized_vector_creator): New.
3226 (scm_uniform_vector_length, scm_uniform_element_size): Do not
3227 handle generalized vectors, only uniform numeric vectors.
3228 (alloc_uvec): Do length check here...
3229 (make_uvec): ...but not here.
3230 (coerce_to_uvec): Use new generalized vector functions to handle
3231 all kinds of vectors in one go.
241d9cea 3232
3cc0a296
MV
3233 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
3234 remaining scm_tc7_unused tags to get a neatly ordered list.
3235
3236 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
3237 longer handle scm_tc7_bvect bitvectors.
3238
3239 * ramap.c: Use the new generalized vector functions to handle all
3240 vector like things.
3241
3242 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
3243 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
3244 scm_generalized_vector_length, scm_generalized_vector_ref,
3245 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
3246 scm_is_generalized_vector, scm_c_generalized_vector_length,
3247 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
3248 New.
241d9cea 3249
3cc0a296
MV
3250 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
3251 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
3252 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
3253 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
3254 scm_c_bitvector_length, scm_c_bitvector_ref,
3255 scm_c_bitvector_set_x, scm_bitvector_elements,
3256 scm_bitvector_release, scm_frame_bitvector_release,
3257 scm_tc16_bitvector, bitvector_free, bitvector_print,
3258 bitvector_equalp, count_ones, find_first_one): New.
3259 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
3260 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
3261 using the new C API for bitvectors and maybe count_ones or
3262 find_first_one, as appropriate.
3263 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
3264 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
3265 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
3266 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
3267 new functions from above.
3268 (scm_i_proc_make_vector, scm_i_proc_make_string,
3269 scm_i_proc_make_bitvector): Made non-static for use in
3270 scm_i_generalized_vector_creator.
3271 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
3272 (scm_make_uve): Validate that the created object is a generalized
3273 vector.
3274 (scm_i_legacy_tag): Removed.
3275 (scm_i_print_array): Do it here.
3276 (scm_raprin1): Only print enclosed arrays.
3277
3278 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
3279
c24d026b
MV
32802004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3281
1f2328fe
MV
3282 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
3283 added portability.
3284
3285 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
3286 for "space". Thanks to Bruce Korb!
3287
c24d026b
MV
3288 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
3289 only after dest has been set. Thanks to Hyper Division!
3290
3291 * gh_data.c (gh_uniform_vector_length): Use
3292 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
3293
d4ea47c8
MV
32942004-11-03 Marius Vollmer <mvo@zagadka.de>
3295
3296 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
3297 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
3298 SCM_SET_UVECTOR_LENGTH): Removed.
3299
236288e2
MV
33002004-11-02 Marius Vollmer <mvo@zagadka.de>
3301
9a5fa6e9 3302 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
236288e2
MV
3303 Thanks!
3304
3305 * backtrace.c (scm_display_backtrace_with_highlights): Join the
3306 first and the second line of the SCM_DEFINE macro call, since old
3307 preprocessors cannot handle definitions that are split into two
3308 lines.
3309
3310 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
3311 declarations.
3312
3313 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
3314 scm_t_uint32 to fix the mismatch between the function declaration
3315 and definition.
3316
3317 * sort.c (quicksort): Don't use C99 variable declarations.
3318
3319 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
3320 SCM_BOOL_F if no type matches.
3321
3322 * threads.c (thread_print): Cast a pointer to size_t when printing
3323 with scm_uintprint.
3324
3325 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
3326 defined.
3327 (scm_array_prototype): Deprecated.
3328
f738b51d
MV
33292004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3330
5d1015ec
MV
3331 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
3332 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
3333 more efficient access to the u32vector.
241d9cea 3334
034486df
MV
3335 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
3336 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
3337 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
3338
3339 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
3340 instead of the old-style dvectors.
3341
3342 * gh_data.c: Use new-style uniform arrays in place of old-style
3343 ones.
3344
3345 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
3346 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
3347
3348 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
3349 instead of old-sytle uvectors.
241d9cea 3350
034486df
MV
3351 * convert.c, convert.i.c: Rewritten completely, using
3352 scm_any_to_u8vector, etc and other new-style uniform vector
3353 functions.
3354
3355 * random.c (scm_random_solid_sphere_x,
3356 scm_random_hollow_sphere_x): Do not validate vector argument, this
3357 is already done elsewhere.
3358
3359 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
3360 scm_any_to_u8vector, etc): New.
3361 (scm_uniform_element_size, scm_uniform_vector_length): Do no
3362 longer handle old-style uniform vectors.
3363
f738b51d
MV
3364 * read.c (scm_lreadr): Bugfix: include the last bit in the
3365 bit vector.
3366
5e9c05a1
MV
33672004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3368
327114a2
MV
3369 * unif.h, unif.c (scm_array_creator): New.
3370 (scm_i_get_old_prototype): New.
3371 (scm_array_prototype): use it to return old-style prototype, never
3372 return creators.
3373 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
3374 arg of SCM_UNDEFINED. The latter is wrong.
241d9cea 3375
5e9c05a1
MV
3376 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
3377 (make_uve): Removed.
3378 (scm_i_proc_make_vector, scm_i_proc_make_string,
3379 scm_i_proc_make_u1vector): New.
3380 (scm_init_unif): Initialize them.
3381 (scm_i_convert_old_prototype): New.
3382 (scm_make_uve): Use it to get the creator procedure. Removed all
3383 old code that created old-style uniform vectors.
3384 (scm_array_p): Handle generic vectors.
3385 (scm_dimensions_to_uniform_array): Do not fill new array with
3386 prototype when that is a procedure.
3387 (scm_list_to_uniform_array): Also accept a list of lower bounds as
3388 the NDIM argument.
3389 (scm_i_print_array): Print rank for shared or non-zero-origin
3390 vectors.
3391 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
3392 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
3393 which I do not understand yet.
3394 (scm_array_prototype): Explicitely handle generic vectors.
327114a2 3395
5e9c05a1
MV
3396 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
3397 (iflo2str): Use icmplx2str for complex numbers.
3398
3399 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
3400 scm_i_uniform_vector_prototype): Removed.
3401 (scm_i_uniform_vector_creator): New.
3402 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
3403 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
3404 Updated all tables and generic functions to support them.
3405 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
3406 (scm_init_srfi_4): Initialize them.
241d9cea 3407
5e9c05a1
MV
3408 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
3409 sizeof(CTYPE) as explained in the comment.
3410
3411 * read.c (scm_lreadr): Call scm_i_read_array for all characters
50472546 3412 following '#' that can start an array. Explicitely disambiguate
5e9c05a1
MV
3413 'i' and 'e' between introducing numbers and uniform vectors. Do
3414 not call scm_i_read_homogenous_vector, since that is also handled
3415 by scm_i_read_array now.
3416
f984af07
MV
34172004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3418
3419 First cut at integrating uniform vectors from srfi-4 with the rest
3420 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
3421 vector. The plan is to gradually replace one type after the other
3422 until none is left and then to consider general cleanups and
3423 optimizations.
241d9cea 3424
f984af07
MV
3425 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
3426
3427 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
3428 scm_uniform_vector_ref, scm_uniform_vector_set_x,
3429 scm_uniform_vector_to_list, scm_is_uniform_vector,
3430 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
3431 scm_uniform_vector_elements, scm_uniform_vector_element_size,
3432 scm_uniform_vector_release): New.
3433 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
3434 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
3435 from unif.h, unif.c and extended to handle both the old and new
3436 uniform vectors.
3437
3438 * tags.h (scm_tc7_byvect): Commented out.
3439
3440 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
3441 the former to the latter.
3442 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
3443 srfi-4.h, srfi-4.c.
3444 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
3445 (scm_array_p, scm_array_rank, scm_array_dimensions,
3446 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
3447 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
3448 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
3449 vectors. Removed code for scm_tc7_byvect.
3450 (scm_dimensions_to_uniform_array): Fill array with 0 when
3451 prototype is #\nul.
3452 (scm_i_print_array_dimension, scm_i_legacy_tag,
3453 scm_i_print_array): New.
3454 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
3455 for scm_tc7_byvect.
3456
3457 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
3458 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
3459 uniform vectors. Removed code for scm_tc7_byvect
3460
3461 * print.c (iprin1): Removed code for scm_tc7_byvect.
3462 * objects.c (scm_class_of): Likewise.
3463 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
3464 * gc-card.c (scm_i_sweep_card): Likewise.
3465 * evalext.c (scm_self_evaluating_p): Likewise.
3466 * eq.c (scm_equal_p): Likewise.
3467
3468 * gh_data.c (gh_chars2byvect): Reimplemented with
3469 scm_make_s8vector.
3470 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
3471
3472 * srfi-4.c (take_uvec): New.
3473 (alloc_uvec): Use it.
3474 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
3475
3476 * random.c (vector_scale, vector_scale_x): Renamed former to the
3477 latter, since it modifies its argument.
3478 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
3479 Do not use scm_universal_vector_length for non-uniform vectors.
3480 Use scm_f64vector_elements to access innards of uniform vectors.
3481
3482 * convert.i.c: Convert srfi-4 style uniform vectors when
3483 requested.
3484 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
3485 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
241d9cea 3486
79d52182
MV
34872004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3488
3489 * numbers.h, numbers.c (scm_i_print_double): New.
3490
3491 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
3492 ../srfi/ but heavily modified.
3493 * Makefile.am: Add them in all the right places.
3494 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
3495 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
3496 '#u', and '#s'.
3497
3498 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
3499 and made non-static. Changed all uses.
3500
6191ccec
MV
35012004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3502
e64e80b0
MV
3503 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
3504 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
3505 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
3506 scm_uintprint to print unsigned integers, raw heap words, and
3507 adresses, using a cast to scm_t_bits to turn pointers into
3508 integers.
3509
3510 * unif.c: Include "libguile/print.h".
3511
c90ac3a8
MV
3512 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
3513 scm_t_intmax values.
3514 (scm_uint2str): New, for scm_t_uintmax.
3515 (scm_iint2str): Argument type changed to scm_t_intmax,
3516 reimplemented in terms of scm_uint2str.
241d9cea 3517
c90ac3a8
MV
3518 * print.c, print.h (scm_uintprint): New, for printing
3519 scm_t_uintmax values.
3520 (scm_intprint): Argument type changed to scm_t_intmax.
241d9cea 3521
77c2594f
MV
3522 * sort.c (quicksort, scm_merge, scm_merge_list_x,
3523 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
3524 strategic places so that the loops can be interrupted.
3525
6191ccec
MV
3526 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
3527 "-I$(top_srcdir)/libguile-ltdl".
3528 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
3529 "../libguile-ltdl/libguile-ltdl.a".
241d9cea 3530
6191ccec
MV
3531 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
3532 all references to scm_lt_* with just lt_*. Include <ltdl.h>
3533 instead of <libguile-ltdl.h>.
3534
77600f3e
MV
35352004-10-20 Marius Vollmer <mvo@zagadka.de>
3536
3537 * sort.c (quicksort): Copy pivot out of the array while
3538 constructing the partitions; it could get overwritten otherwise.
3539 Because of the ultimate insertion sort, this bug did not cause
3540 quicksort to fail, it just put all the burdon on the insertion
3541 sort and was thus very slow. Thanks to Rolan Orre for reporting
3542 the slowness!
241d9cea 3543
5000379b
MV
35442004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3545
192cd792
MV
3546 * numbers.c (scm_i_range_error): New.
3547 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
241d9cea 3548 scm_out_of_range.
192cd792
MV
3549
3550 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
6191ccec 3551 endpos. State inclusiveness/exclusiveness of bounds in docstring.
192cd792
MV
3552
3553 * unif.c (scm_array_p): When no prototype is given, explicitely
3554 test for allowable types, do not simply return true. Thanks to
3555 Roland Orre for reporting this!
3556
5000379b
MV
3557 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
3558
3559 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
3560 segment to scm_max_segment_size.
3561
497eb0b7
HWN
35622004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
3563
1367aa5e
HWN
3564 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
3565
497eb0b7
HWN
3566 * inline.h (scm_double_cell): abort if GC running.
3567 (scm_cell): idem.
3568
aef0bdb4
MV
35692004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3570
3571 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
3572 pos == 0.
3573
3574 Keywords no longer store a 'dash symbol'. Instead, they store a
3575 symbol with their real name.
241d9cea 3576
aef0bdb4
MV
3577 * keywords.h, keywords.c, deprecated.h, deprecated.c
3578 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
3579 terms of scm_is_keyword and scm_keyword_dash_symbol.
241d9cea 3580
aef0bdb4
MV
3581 * keywords.h, keywords.c, discouraged.h, discouraged.c
3582 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
3583 scm_c_make_keyword): Discouraged.
3584
3585 * keywords.h, keywords.c (scm_symbol_to_keyword,
3586 scm_keyword_to_symbol): Implemented in C.
3587 (scm_is_keyword, scm_from_locale_keyword,
3588 scm_from_locale_keywordn): New.
3589
241d9cea 3590 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
aef0bdb4
MV
3591
3592 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
3593 scm_from_locale_keyword instead of scm_c_make_keyword.
3594
3595 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
3596 better error message.
3597
3598 * deprecated.c: Include discouraged.h and keywords.h.
3599
3600 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
3601 reading '#:' or ':'. See NEWS for consequences.
3602
818deb11
MV
36032004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3604
43c25626
MV
3605 * read.c (scm_lreadr): Revert change from 2004-09-22: string
3606 literals are now read-write again (until SCM_STRING_CHARS is
3607 removed).
3608
3609 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
3610 strings with an error message that blames SCM_STRING_CHARS.
3611
3612 * options.c (change_option_setting): Use scm_car instead of
3613 explicit type check plus SCM_CAR.
3614
3615 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
3616 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
3617 (scm_iprin1): Use them instead of the previoulsy hardcoded
3618 strings.
3619 (scm_init_print): Initialize them.
3620
3621 * backtrace.c (display_frame_expr): Do not remove control
3622 characters from the final string. Print it directly using
3623 scm_display.
3624
818deb11
MV
3625 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
3626 Thanks to Roland Orre!
3627
d748089e
KR
36282004-09-29 Kevin Ryde <user42@zip.com.au>
3629
3630 * regex-posix.c (scm_regexp_exec): Correction to last change, should
3631 be whole original string in match struct, not offsetted substring.
3632
0ff7e3ff
HWN
36332004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
3634
3635 * gc.c (scm_gc_unprotect_object): abort if called during GC.
3636
ad7de4b8
MV
36372004-09-24 Marius Vollmer <mvo@zagadka.de>
3638
2edf319f
MV
3639 * Makefile.am (EXTRA_DIST): Added gettext.h.
3640
d180337b
MV
3641 * smob.c, smob.h (scm_assert_smob_type): New.
3642
05d7cf89 3643 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
ad7de4b8
MV
3644 Include GUILE_CFLAGS.
3645 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3646 now.
3647 (libpath.h): Put GUILE_CFLAGS in the build-info.
241d9cea 3648
c9fedf8a
MV
36492004-09-23 Marius Vollmer <mvo@zagadka.de>
3650
3651 * print.h (scm_print_state): Added highlight_objects.
3652 * print.c (make_print_state, scm_free_print_state): Initialize it
3653 to SCM_EOL.
3654 (scm_iprin1): Wrap output in '{...}' when object is contained in
3655 highlight_objects.
3656
3657 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3658 scm_backtrace_with_highlights): New. Set highlight_objects of
3659 printstate.
241d9cea 3660
c9fedf8a
MV
3661 * error.c (scm_error_scm): Document new meaning of data/rest
3662 argument for out-of-range and wrong-type-arg errors.
3663 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3664 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3665 exception so that it gets highlighted in the backtrace.
3666 Don't talk about "argument" when not giving a position.
241d9cea 3667
c9fedf8a
MV
3668 * throw.c (handler_message): The rest argument is the fourth
3669 argument, not everything after the third. Call
3670 scm_display_backtrace_with_highlights, passing the rest argument
3671 when appropriate.
3672
d5ac9b2a
MV
36732004-09-22 Marius Vollmer <mvo@zagadka.de>
3674
3675 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3676 <bruno@clisp.org>:
3677
3678 * i18n.c: Handle --disable-nls (thanks Bruno).
3679
3680 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3681 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3682
3683 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3684 LC categories.
05d7cf89 3685 * posix.c (scm_setlocale): Use it.
d5ac9b2a
MV
3686
3687 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3688 scm_bind_textdomain_codeset): Make wrappers similar to C function
3689 they wrap.
3690
3691 * i18n.h: New file.
3692 * i18n.c: New file.
3693 * gettext.h: New file, taken from GNU gettext.
3694 * init.c: Include libguile/i18n.h.
3695 (scm_init_guile_1): Add call to scm_init_i18n().
3696 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3697 (DOT_X_FILES): Add i18n.x.
3698 (DOT_DOC_FILES): Add i18n.doc.
3699 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3700 (modinclude_HEADERS): Add i18n.h.
3701
d2e53ed6
MV
37022004-09-22 Marius Vollmer <mvo@zagadka.de>
3703
2cdfe016
MV
3704 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3705
d2e53ed6
MV
3706 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3707 discouraged.h. Replaced all uses with scm_is_pair.
3708 (SCM_I_CONSP): New name for SCM_CONSP.
3709
3710 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3711 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3712 scm_cadr, etc): New.
3713 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3714 uses with scm_is_null.
5dd82006 3715
d2e53ed6
MV
3716 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3717 instead of explicit code.
5dd82006 3718
5dfdf243
MV
37192004-09-22 Marius Vollmer <mvo@zagadka.de>
3720
b50c53e5
MV
3721 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3722 Reworded logic a bit so that #f is returned immediately when s1 is
3723 too short to contain s2.
3724
5dfdf243 3725 * regex-posix.c (scm_regexp_exec): Convert string to
05d7cf89 3726 zero-terminated locale string before matching against it.
5dfdf243
MV
3727
3728 * strings.h, strings.c (scm_substring_read_only,
3729 scm_c_substring_read_only, scm_i_substring_read_only): New.
3730 (RO_STRING_TAG, IS_RO_STRING): New.
241d9cea
NJ
3731 (scm_i_string_writable_chars): Bail on read-only strings.
3732
5dfdf243
MV
3733 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3734 literals, thus making them read-only as specified by R5RS.
3735
22ab5ba3
MV
37362004-09-22 Marius Vollmer <mvo@zagadka.de>
3737
3738 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3739 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3740
2663421c
MV
37412004-09-21 Marius Vollmer <mvo@zagadka.de>
3742
0d83cb90
MV
3743 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3744 numbers.c.
3745 (scm_to_mpz, scm_from_mpz): New.
9a5fa6e9 3746 Thanks to Andreas Vögele!
241d9cea 3747
2663421c
MV
3748 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3749 just on a line of its own.
3750
3751 * srfi-13.c (scm_string_any, scm_string_every,
3752 scm_string_tabulate, string_upcase_x, string_down_case_x,
3753 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3754 size_t instead of int for indices into strings. Make sure that no
9a5fa6e9 3755 over- or underflow occurs. Thanks to Andreas Vögele!
2663421c
MV
3756 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3757 indices, which can also be negative.
241d9cea 3758
b00b73f9
MV
37592004-09-20 Marius Vollmer <mvo@zagadka.de>
3760
3761 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3762
3763 * threads.c (scm_threads_mark_stacks): Call
3764 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3765 only used once.
3766
adba74f3
HWN
37672004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3768
05d7cf89 3769 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
adba74f3
HWN
3770 Bugfix: when subtracting unsigned values, make sure that result
3771 does not wrap.
3772
f6de32c8
KR
37732004-09-09 Kevin Ryde <user42@zip.com.au>
3774
3775 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3776 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
9a5fa6e9 3777 by Andreas Vögele.
f6de32c8 3778
e548be5f
MV
37792004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3780
eb8d0af1
MV
3781 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3782
e548be5f
MV
3783 * eq.c (real_eqv): Pretend that all NaNs are equal.
3784
3785 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3786
e7acba81
MV
37872004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3788
874fbad1
MV
3789 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3790 use size_t for some locals instead of int.
3791
e7acba81
MV
3792 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3793 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3794 (skip_scsh_block_comment): Use scm_input_error instead of
3795 scm_misc_error in case of EOF.
241d9cea 3796
5de12658
KR
37972004-09-07 Kevin Ryde <user42@zip.com.au>
3798
3799 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
3800 Bug report by Bill Schottstaedt.
3801
3802 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3803 column.
3804 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3805
3806 * posix.c (scm_access): Update docstring per manual.
3807
3808 * posix.c (scm_nice): Correction to error detection. Reported by
3809 Matthias Koeppe.
3810
3811 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3812 throw error before unlocking mutex with SCM_ALLOW_INTS.
3813
e227addf
KR
38142004-09-06 Kevin Ryde <user42@zip.com.au>
3815
3816 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3817 available. This also gets around CLK_TCK being absent when
3818 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3819
edea856c
SJ
38202004-09-03 Stefan Jahn <stefan@lkcc.org>
3821
3822 * threads.c (scm_threads_mark_stacks): Fixed local variable
3823 definitions.
3824
e7acba81 3825 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
3826 local variable definitions.
3827
3828 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3829 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
3830 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3831 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
3832 scm_makfrom0str().
3833
874fbad1 3834 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
3835 part.
3836
3837 * numbers.c (scm_init_numbers): Removed check_sanity() call
3838 inside GUILE_DEBUG. The function has been removed somewhen...
3839
3840 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3841 MinGW32 because it conflicts with its pthread headers.
3842
d9eb2d67
MV
38432004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3844
3845 * strings.c (SCM_STRINGP): Accept all strings.
3846 (SCM_STRING_CHARS): Reject shared substrings here.
3847
3848 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3849 the Copyright years.
3850
c495c342
KR
38512004-08-27 Kevin Ryde <user42@zip.com.au>
3852
3853 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3854 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3855 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3856
57aa5515
MV
38572004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3858
3859 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3860 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3861 scm_i_symbol_is_interned, scm_i_mem2symbol,
3862 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3863
ce25760f
MV
38642004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3865
19ff6ffc
MV
3866 * srfi-13.c: First cut at thread-safeness and proper use of
3867 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3868 been inserted. Made sure that no internal string pointer is used
3869 across a SCM_TICK or a possible GC.
241d9cea 3870
ce25760f
MV
3871 * script.c (scm_compile_shell_switches): Use
3872 scm_from_locale_string instead of scm_makfrom0str.
3873
3874 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3875 always been.
3876
c5080b51
MV
38772004-08-25 Marius Vollmer <mvo@zagadka.de>
3878
3879 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3880 strop.c.
3881
3882 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3883 * strop.h, strop.c: Removed, they are now empty.
3884 * Makefile.am: Updated for new and removed files.
241d9cea 3885
c5080b51
MV
3886 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3887 to scm_string_to_symbol.
3888
3889 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3890 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3891 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3892 charset instead of libc functions.
3893
3894 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3895 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3896 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3897 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3898 instead of explicit code.
241d9cea 3899
c5080b51
MV
3900 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3901 "srfi-13.h" instead of "strop.h".
3902
3903 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3904 scm_init_srfi_14. Do not call scm_init_strop.
3905
4b0d27f2
MV
39062004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3907
3908 * numbers.c (scm_inf_p): Synced docstring back from manual.
3909
3ece39d6
MV
39102004-08-22 Marius Vollmer <mvo@zagadka.de>
3911
3912 * strings.c (get_str_buf_start): New helper function.
3913 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3914 scm_i_string_char, scm_i_string_writable_chars): Use it.
3915 (scm_i_substring_copy): Make START argument optional for C
3916 callers, for upcoming SRFI-13 integration.
241d9cea 3917
3ece39d6
MV
39182004-08-21 Marius Vollmer <mvo@zagadka.de>
3919
3920 From Richard Todd, Thanks!
241d9cea 3921
3ece39d6
MV
3922 * script.c (scm_compile_shell_switches): added '-L' switch to add
3923 to the %load-path.
241d9cea 3924
5fa0939c
DH
39252004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3926
3927 * eval.c (unmemoize_exprs): When dropping internal body markers
3928 from the output during unmemoization, also drop those that are not
3929 immediately at the beginning of a body.
3930
2146fdeb
MV
39312004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3932
c1f54b3d
MV
3933 * eval.c (scm_lookupcar1): Report "Variable used before given a
3934 value" insetad of an "Unbound" one for variables that are found
3935 but still contain SCM_UNDEFINED.
2146fdeb
MV
3936
3937 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3938 expects a null-terminated string in the locale encoding, but
3939 scm_i_string_writable_chars doesn't give that. Fixed by letting
3940 mkstemp modify a locale version of the tmpl argument and copying
3941 the result back into tmpl.
241d9cea 3942
2146fdeb
MV
3943 * strop.c (scm_substring_move_x): Store into str2, not str1.
3944
d4f76919
KR
39452004-08-20 Kevin Ryde <user42@zip.com.au>
3946
3947 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3948 to modify the input string.
3949
b5247a6b
MV
39502004-08-19 Marius Vollmer <mvo@zagadka.de>
3951
3952 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3953 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3954 scm_c_symbol_length.
3955
f26b9395
MV
39562004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3957
3958 New string implementation, with copy-on-write strings and
3959 mutation-sharing substrings, and a new internal string API.
3960 Symbols can now share memory with strings.
241d9cea 3961
f26b9395
MV
3962 * tags.h (scm_tc7_stringbuf): New tag.
3963
3964 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3965 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3966 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3967 uses.
3968 (scm_i_make_string, scm_c_make_string): New, to replace
3969 scm_allocate_string. Updated all uses.
3970 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3971 SCM_STRING_LENGTH): Deprecated.
3972 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3973 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3974 Discouraged. Replaced all uses with scm_from_locale_string or
3975 similar, as appropriate.
3976 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3977 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3978 scm_substring_shared, scm_substring_copy): New.
3979
3980 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3981 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3982 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3983 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3984 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3985 Deprecated.
3986 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3987 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3988 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3989 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3990 Updated all uses.
3991 (scm_gensym): Generate only the number suffix in the buffer, just
3992 string-append the prefix.
3993
3994 * error.c (scm_memory_error): Do not try to throw, just abort.
3995 Throwing will not work anyway.
3996
3997 * gh.h, gh-data.c (gh_set_substr): Made src const.
3998
3999 * ports.c (scm_i_mode_bits_n): New, for counted strings.
4000 (scm_mode_bits): Use it.
4001 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
4002 a vector normally and fill that instead of consing a list with a
4003 blocked GC.
4004
4005 * read.c (scm_i_casei_streq): New, for counted strings.
4006
4007 * threads.c (gc_section_count): Removed, thread-sleeping can not
4008 be nested.
4009 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
4010 admin mutex so that we can be put to sleep by other threads while
4011 blocking on that mutex. Lock all the heap mutex of all threads,
4012 including ourselves.
4013 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
4014 call scm_i_enter_guile.
4015 (scm_thread_mark_stacks): Expect all threads to be suspended.
241d9cea 4016
f26b9395
MV
4017 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
4018 scm_gc_mallocated, for now.
4019 (scm_init_storage): Initialize it.
4020 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
241d9cea 4021
f26b9395
MV
4022 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
4023 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
4024 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
4025 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
4026
cd505b38
MV
4027 * strop.c (scm_string_copy): Use scm_c_substring to get a
4028 copy-on-write string.
4029
8a807b26
KR
40302004-08-18 Kevin Ryde <user42@zip.com.au>
4031
4032 * arbiters.c (FETCH_STORE): New macro.
4033 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
4034 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
4035 scm_try_arbiter and scm_release_arbiter.
4036 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
4037 for speed on i386, otherwise using mutex.
4038
4039 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
4040 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
4041 exact and inexact is #f.)
4042
4043 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
4044 to get thread safety of scm_ttyname.
4045
4046 * ports.c (ttyname): Remove prototype, unused.
4047
d6cd4c36 4048 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 4049 Reported by Michael Tuexen.
d6cd4c36 4050
fa0c0a4b
MV
40512004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4052
4053 * load.c (scm_init_load_path): Do not pass NULL to
4054 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
4055 not set. Thanks to Bill Schottstaedt.
4056
70f7ee41
MV
40572004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4058
4059 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
4060 locale strings instead of accessing their internals.
4061 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
4062 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
4063 SCM_STRING_CHARS and SCM_STRING_LENGTH.
241d9cea 4064
70f7ee41
MV
4065 * simpos.c (scm_system): Convert SCM strings to locale strings
4066 instead of accessing their internals.
4067
4068 * script.c (scm_compile_shell_switches): Convert version to locale
4069 string before printing it.
4070
4071 * rdelim.c (scm_read_delimited_x): Avoid
4072 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
4073 of scm_from_long for the returned number of read characters.
4074
4075 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
4076 scm_i_mode_bits to avoid accessing internals of SCM string from C.
4077
4078 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
4079 Use them instead of SCM_SYSCALL when one or two strings need to be
4080 converted into locale strings.
4081 (my_rename): New, gathers platform dependent code for renaming.
4082 (scm_rename): Use it.
4083 (scm_readlink, scm_copy_file): Convert SCM strings to locale
4084 strings instead of accessing their internals.
4085 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
4086 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
4087 SCM_STRING_LENGTH.
241d9cea 4088
70f7ee41
MV
4089 * extensions.c (load_extension): Convert lib and init to locale
4090 strings instead of accessing the internals directly.
4091 (scm_c_load_extension): Use scm_from_locale_string instead of
4092 scm_makfrom0str.
241d9cea 4093
70f7ee41
MV
4094 * fports.h, fports.c (scm_i_fdes_to_port): New, like
4095 scm_fdes_to_port, but take mode bits directly instead of as a C
4096 string.
4097 (scm_i_fdes_to_port): Implement using above.
4098 (scm_open_file): Use scm_i_fdes_to_port together with
4099 scm_i_mode_bits to avoid accessing internals of SCM string from C.
4100 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
4101 with scm_i_mode_bits to avoid accessing internals of SCM string
4102 from C.
4103
4104 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
4105 SCM string as argument.
4106
4107 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
4108 bits directly instead of C string.
4109 (scm_void_port): Implement using above.
4110 (scm_sys_make_void_port): Use scm_i_void_port together with
4111 scm_i_mode_bits to avoid accessing internals of SCM string.
241d9cea 4112
70f7ee41
MV
4113 * strings.h, strings.c (scm_i_get_substring_spec): New.
4114
4115 * socket.c, rw.c, deprecated.h, validate.h
4116 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
4117 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
4118 scm_to_locale_string, etc.
4119 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
4120 above, plus scm_i_get_substring_spec.
241d9cea 4121
70f7ee41
MV
4122 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
4123 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
4124 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
4125 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
4126 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
4127 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
4128 with more explicit scm_remember_upto_here_1, etc, or introduced
4129 them in the first place.
4130
4131 * posix.c (WITH_STRING): New helper macro. Use it where one
4132 locale string is needed for a short piece of code.
4133 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
4134 when one locale string is needed.
4135 (scm_mkstemp): Convert tmpl to a locale string.
4136 (scm_putenv): Rewritten to use only C strings.
4137 (scm_setlocale, scm_crpt): Convert argument strings to locale
4138 strings.
241d9cea 4139
70f7ee41
MV
41402004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4141
4142 * load.c (scm_primitive_load_path): Do not check for absolute
4143 filenames when scm_sys_search_load_path returns false, which will
4144 return absolute filenames unchanged.
4145
bb26cc2d
MV
41462004-08-11 Marius Vollmer <mvo@zagadka.de>
4147
4148 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
4149 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
4150 of an alist. Thanks to Matthias Koeppe!
4151
02573e4c
MV
41522004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4153
4154 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
4155 Moved from string.h to deprecated.h.
4156
4157 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
4158
f9751e86 4159 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
4160 SCM_I_MAKE_STRING_TAG, changed all uses.
4161 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
4162 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
4163 respectively. For a short time, the old names are still there as
4164 aliases. Not all uses have been changed yet, but the ones in
4165 strings.c have.
4166 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
4167 SCM_T_BITS_MAX.
4168 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
4169 scm_take_locale_string, scm_take_locale_stringn,
4170 scm_to_locale_string, scm_to_locale_stringn,
4171 scm_to_locale_stringbuf): New.
4172 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
4173 deprecated.[hc]. Implemented in terms of the new functions above.
4174 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
4175 scm_makfrom0str): Reimplemented in terms of the new functions from
4176 above. They will be discouraged shortly.
4177 (scm_substring): Do not use scm_mem2string.
4178 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
4179 to replace similar code from posix.c, simpos.c, and dynl.c.
4180 (scm_string_append): Use memcpy instead of explicit loop. Do not
4181 use register keyword. Use plain 'char' instead of 'unsigned
4182 char'.
241d9cea 4183
02573e4c
MV
4184 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
4185 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
4186
4187 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
4188 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4189 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
4190 not as a pointer. Use scm_remember_upto_here_1 to protect it.
4191
4192 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
4193 string. This avoids a conversion round-trip.
4194
4195 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
4196 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4197 SCM_I_STRING_LENGTH, respectively.
4198 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
241d9cea 4199
02573e4c
MV
4200 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
4201 of a string, call scm_display on the string itself.
4202
4203 * dynwind.c, dynwind.h (scm_frame_free): New.
4204
4205 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
4206 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
4207 Replaced uses of SCM_STRING_CHARS with proper uses of
4208 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
4209 Replaced scm_mem2string with scm_from_locale_string.
4210
4211 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
4212 Removed, replaced all uses with scm_i_allocate_string_pointers.
4213
4214 * load.h, load.c (scm_internal_parse_path): Removed.
4215 (scm_parse_path): Use scm_string_split to do the work.
4216 (scm_init_load_path): Use scm_parse_path instead of
4217 scm_internal_parse_path.
4218 (scm_search_path): Rewritten string handling part of the code in
4219 terms of scm_to_locale_stringbuf and so that it is thread safe.
4220
4221 * error.c (scm_error_scm): Throw directly instead of calling
4222 scm_error, this avoids the back and forth conversion of SUBR and
4223 MESSAGE and also plugs a memory leak.
4224 (scm_error): Call scm_error_scm.
241d9cea 4225
02573e4c
MV
4226 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
4227 (display_header): Print FNAME when it is true, not
4228 merely when it is a string.
4229
4230 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
4231 unceremoniously. They were unused by Guile itself, and external
4232 use should stop immediately.
241d9cea 4233
02573e4c 4234
409eb4e5
MV
42352004-08-10 Marius Vollmer <mvo@zagadka.de>
4236
4237 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
4238 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
4239 deprecated versions installed in deprecated.h and deprecated.c.
4240 Changed all uses.
241d9cea 4241
a00eaf19
RB
42422004-08-06 Rob Browning <rlb@defaultvalue.org>
4243
4244 * net_db.c (scm_resolv_error): don't cause an exception while
4245 trying to throw an exception -- call scm_misc_error with correct
4246 arguments. The previous arguments needed a format escape that
4247 wasn't in any of the format strings.
4248
bcb88c93
KR
42492004-08-06 Kevin Ryde <user42@zip.com.au>
4250
8f094b97
KR
4251 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
4252 so as not to depend on signedness of plain char. For byvect range
4253 check, throw out-of-range rather than wrong-type-arg.
4254
bcb88c93
KR
4255 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
4256 signed byte range checks by using scm_to_schar and scm_from_schar,
4257 don't want to depend on signedness of C char.
4258
29e61124
KR
42592004-08-05 Kevin Ryde <user42@zip.com.au>
4260
4261 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
4262 SCM_DEFER_INTS.
4263 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
4264 guaranteed if multiple threads compete to unlock.
4265 Update docstrings per doc/ref/api-scheduling.texi.
4266
99de794f
KR
4267 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
4268 stat on the filename, to be certain a file rename can't mean we get
4269 info on one filesystem object but open another. This fstat usage is
4270 similar to Emacs copy-file.
241d9cea 4271
29e61124
KR
4272 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
4273
4274 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
4275 SIGINT and SIGQUIT, since those values are ints.
4276
759aa8f9
MV
42772004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4278
7241f213
MV
4279 * num2integral.i.c, num2float.i.c: Removed.
4280 * Makefile.am (noinst_HEADERS): Updated.
4281
f9656a9f
MV
4282 * numbers.h. numbers.c (scm_make_ratio): Renamed to
4283 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
4284 (scm_complex_p): New, export as "complex?" to Scheme.
4285 (scm_number_p): Export as "number?" to Scheme.
4286 (scm_is_complex, scm_is_number): New.
4287 (scm_c_make_rectangular, scm_c_make_polar): New.
4288 (scm_make_rectangular, scm_make_polar): Use above.
4289 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
4290 New.
4291 (scm_make_complex): Discouraged by moving to discouraged.h and
4292 discouraged.c. Replaced all uses with scm_c_make_rectangular.
241d9cea 4293
759aa8f9
MV
4294 * discouraged.h, discouraged.c, numbers.c, numbers.h
4295 (scm_is_rational): New.
4296 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
4297 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
4298 Removed prototypes.
4299 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
4300 Discouraged by moving to discouraged.h and discouraged.c.
4301 Replaced all uses with scm_from_double.
4302 (scm_num2float, scm_num2double): Discouraged by moving prototype
4303 to discouraged.h and rewriting in terms of scm_to_double.
4304 Replaced all uses with scm_to_double.
4305 (scm_to_double): Do not implement in terms of scm_num2dbl, use
4306 explicit code.
4307 (scm_from_double): Do not implement in terms of scm_make_real, use
4308 explicit code.
241d9cea 4309
531bf3e6
MV
43102004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4311
759aa8f9
MV
4312 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
4313
531bf3e6
MV
4314 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
4315 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
4316
4317 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
4318 Renamed to SCM_I_* in order to avoid collisions with the versions
4319 defined in deprecated.h.
4320
4321 * discouraged.h, discouraged.c: New files.
4322
4323 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
4324 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
4325 deprecated to being discouraged by moving to discouraged.h.
4326
4327 * numbers.h, numbers.c, discouraged.h, discouraged.c
4328 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
4329 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
4330 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
4331 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
4332 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
4333 scm_num2ulong_long): Discouraged by moving to discouraged.h and
4334 discouraged.c and reimplementing in terms of scm_from_* and
4335 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
4336 functions.
4337
4338 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
4339 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
4340 scm_i_size2big, scm_i_ptrdiff2big): Removed.
241d9cea 4341 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
531bf3e6
MV
4342 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
4343 explicit code.
4344
5ec82e96
KR
43452004-08-02 Kevin Ryde <user42@zip.com.au>
4346
4347 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
4348 and current usage and migration.
4349
58f28989
KR
43502004-07-31 Kevin Ryde <user42@zip.com.au>
4351
4352 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
4353 it's not thread safe.
4354 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
4355 advantage of this.
4356 * fports.c (scm_open_file): Use scm_strerror likewise.
4357 * filesys.c (scm_stat, scm_lstat): Ditto.
4358
4359 * filesys.c (scm_copy_file): Avoid fd leak when destination file
4360 cannot be opened.
4361
4362 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
4363 update, for thread safety.
4364 (gensym_counter): Move into scm_gensym which is its only user.
4365 (scm_init_symbols): No need to explicitly initialize gensym_counter.
4366
03696aab
MV
43672004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4368
51fdb325
MV
4369 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
4370 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
4371 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
4372 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
4373 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
4374 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
4375 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
4376 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
4377 defined in terms of scm_to_signed_integer, etc, but in terms of
4378 scm_to_int8, etc.
4379
4380 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
4381
03696aab
MV
4382 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
4383 no longer used.
4384
4385 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
4386 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
4387
4388 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
4389 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
4390 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
4391 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
4392 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
4393 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
4394 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
241d9cea 4395
03696aab
MV
4396 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
4397 the functions below.
4398
4399 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
4400 conv-uinteger.i.c.
4401
4402 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
4403 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
4404 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
4405 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
4406 scm_from_uint64): Turned from macros into proper functions.
4407 (scm_to_signed_integer, scm_to_unsigned_integer,
4408 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
4409 conv-integer.i.c and conv-uinteger.i.c, as well.
241d9cea 4410
03696aab
MV
4411 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
4412 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
4413 the limits. Those are always defined.
241d9cea 4414
1f15779e
KR
44152004-07-29 Kevin Ryde <user42@zip.com.au>
4416
4417 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
4418
48360eb3
KR
44192004-07-28 Kevin Ryde <user42@zip.com.au>
4420
4421 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
4422 safety.
4423
c3f3c841
KR
4424 * unif.c (scm_array_set_x): For svect, use scm_num2short for
4425 consistency with other vector types and to get arg and func name into
4426 error message.
4427
c82f8ed6
MV
44282004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4429
4430 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
4431 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
4432 scm_from_bool, respectively.
4433 (SCM_NINUMP): Added.
241d9cea 4434
c82f8ed6
MV
4435 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
4436 deprecated.h. Replaced all uses with scm_is_eq.
4437
317b4c4a
KR
44382004-07-24 Kevin Ryde <user42@zip.com.au>
4439
4440 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
4441 * posix.c (scm_crypt): Use it to protect static data in crypt().
4442
e11e83f3
MV
44432004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4444
4445 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 4446 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
4447 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
4448 versions to deprecated.h and deprecated.c. Changed all uses to
4449 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
4450 scm_from_*, as appropriate.
4451
4452 * dynwind.c (scm_i_dowinds): Removed unused code that would call
4453 the unexisting scm_cross_dynwind_binding_scope for inums on the
4454 windlist.
241d9cea 4455
a55c2b68
MV
44562004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4457
4458 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 4459 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
4460 byte-wise address to a SCM integer. Changed all uses.
4461 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
4462 scm_to_ipv6 and added type and range checking, for converting from
4463 an IPv& byte-wise address to a SCM integer. Changed all uses.
4464 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
4465 is now done by scm_to_ipv6.
241d9cea 4466
a55c2b68
MV
4467 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
4468 not accept inexact integers.
4469
4470 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
4471 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
4472 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
4473 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
4474 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
4475 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
4476 fixnum/bignum distinction visible. Changed all uses to
4477 scm_to_size_t or similar.
4478
44792004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4480
4481 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
4482
48a06bd5
KR
44832004-07-10 Kevin Ryde <user42@zip.com.au>
4484
4485 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
4486 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
4487 such a size causes divide-by-zeros in scm_hasher.
4488
052fbfd9
KR
4489 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
4490 leak.
4491
43240c9c
MV
44922004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4493
4494 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
4495 Rewritten using the same logic as scm_to_signed_integer and
4496 scm_to_unsigned_integer, respectively, which is better(tm). Also,
4497 use CHAR_BIT instead of hardcoding 8.
4498 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
4499 SCM_I_LLONG_MIN etc. instead.
241d9cea 4500
43240c9c
MV
4501 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
4502 SCM_I_MAKINUM and changed all uses.
4503 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
4504
a3de8e7b
MV
4505 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
4506 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
4507 them by assuming twos-complement.
4508
c9eb03bb
MV
45092004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4510
4511 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
4512 configure now produces.
4513 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
4514 definitions, giving the limits of the integer types defined by
4515 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
4516 LLONG_MIN or LONG_LONG_MIN is hard to get at.
4517
4518 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
4519 SHORT_MIN.
4520 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
4521 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
4522 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
4523 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
4524 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
4525 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
4526 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
4527 scm_from_uintmax): New.
241d9cea 4528
7888309b
MV
45292004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4530
4531 * tags.h (scm_is_eq): New.
4532
4533 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
4534 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
4535 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
4536 scm_from_bool, and scm_is_bool, respectively.
4537
4538 * boolean.h (scm_is_bool): Fix bug in prototype.
4539 (scm_from_bool): The argument is "x" not "f", stupid.
4540
4541 * boolean.c (scm_is_bool): Fix typo.
4542
4543 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
4544 scm_is_unsigned_integer, scm_to_signed_integer,
4545 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
4546 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
4547 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
4548 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
4549 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
4550 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
4551 New.
241d9cea 4552
800570a6
MV
45532004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4554
4555 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
4556 scm_to_bool): New.
4557
9fcf3cbb
DH
45582004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4559
4560 * backtrace.c (display_expression, display_frame): Call
4561 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
4562 single memoized expression.
4563
4564 * debug.c (memoized_print): Don't try to unmemoize the memoized
4565 object, since we can't know whether it holds a single expression
4566 or a body.
4567
4568 (scm_mem_to_proc): Removed check for lambda expression, since it
4569 was moot anyway. Whoever uses these functions for debugging
4570 purposes should know what they do: Creating invalid memoized code
4571 will cause crashes, independent of whether this check is present
4572 or not.
4573
4574 (scm_proc_to_mem): Take the closure's code as it is and don't
4575 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
4576 memoized code should not be modified.
4577
4578 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
4579 scm_unmemoize from public use, but made scm_i_unmemoize_expr
4580 available as a guile internal function instead. However,
4581 scm_i_unmemoize_expr will only work on memoized objects that hold
4582 a single memoized expression. It won't work with bodies.
4583
4584 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
4585 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
4586 i. e. a list of expressions.
4587
4588 * eval.c (unmemoize_exprs): Drop internal body markers from the
4589 output during unmemoization.
4590
4591 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
4592 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
4593 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
4594 as guile internal functions instead. scm_i_unmemoize_expr will
4595 only work on a single memoized expression, while
4596 scm_i_unmemocopy_body will only work on bodies.
4597
90df793f
DH
45982004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4599
4600 * eval.c (unmemoize_exprs): Handle semi-memoized code.
4601
4602 (scm_cons_source, scm_primitive_eval): Prefer higher level
4603 predicate SCM_FALSEP over SCM_IMP.
4604
8048c00b
RB
46052004-06-15 Rob Browning <rlb@defaultvalue.org>
4606
4607 * script.c (scm_shell_usage): minor phrasing change.
4608
4609 * gc_os_dep.c: update ifdefery for macosx.
4610 (scm_get_stack_base): separate result initialization from
4611 declaration to slience warnings with macosx and hp-ux using gcc
9a5fa6e9 4612 3.3. Thanks to Andreas Vögele.
8048c00b 4613
d93294d4
HWN
46142004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
4615
4616 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
4617
212e58ed
DH
46182004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4619
4620 * list.[ch] (scm_i_finite_list_copy): New internal function to
4621 copy lists that are known to be finite (though not necessarily
4622 proper).
4623
4624 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
4625 a closure's argument list like an expression of a body.
4626
4627 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
4628 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
4629 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
4630 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
4631 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
241d9cea 4632 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
212e58ed
DH
4633 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
4634 unmemoize_builtin_macro): New static functions and symbols.
4635
4636 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
4637 now has a slightly different meaning: The memoized form that is
4638 receives as its argument is now interpreted as a sequence of
4639 expressions from a body.
4640
4641 (unmemocar, scm_unmemocar): Since the whole functionality of
4642 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4643 has its old content back and is deprecated, while unmemocar has
4644 been removed.
4645
4646 (SCM_BIT7): Removed.
4647
4648 (CEVAL): For unmemoizing a single expression, call
4649 unmemoize_expression instead of scm_unmemocopy, which now expects
4650 a sequence of body expressions. Eliminated unnecessary empty
4651 environment frame when executing let* forms. Eliminated
4652 unmemoization step from evaluator.
4653
9ccea370
MV
46542004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4655
4656 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4657 macroexp and made static. Added new version of scm_macroexp that
4658 emits a deprecation warning and then calls macroexp.
4659 (scm_m_undefine): Issue deprecation warning.
241d9cea 4660
57d23e25
DH
46612004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4662
4663 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4664 Modified to make set! work on symbols that represent syntactic
4665 keywords.
4666
141521ad
HWN
46672004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4668
4669 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4670 compound expression as lvalue errors.
4671
7c2f56a4
MV
46722004-05-24 Marius Vollmer <mvo@zagadka.de>
4673
4674 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4675 WINDER_DATA to a SCM.
4676
366ecaec
DH
46772004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4678
4679 * goops.c (compute_getters_n_setters, create_standard_classes,
4680 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4681 lambda expression rather than creating them with scm_closure.
4682
26ecfa39
DH
46832004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4684
4685 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4686 misplaced syntactic keywords. This will not work unless guile's
4687 defmacro feature is deprecated.
4688
4689 (scm_m_case): Fixed a bug that caused the list of labels to grow
4690 with every case form.
4691
f865229a
KR
46922004-05-19 Kevin Ryde <user42@zip.com.au>
4693
4694 * numbers.c (scm_round_number): For inum and big, just return x. For
4695 real, use scm_round for 2^54-1 etc problems covered there.
4696
4697 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4698 doesn't provide trunc. This was for when `truncate' was done as a
4699 scm_tc7_dsubr, no longer required.
4700
4701 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4702 to stack marking call, two parameters and no cast on t->base.
4703
63947c7a
MV
47042004-05-18 Marius Vollmer <mvo@zagadka.de>
4705
4706 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4707 processed hashtables back into the weak_hashtables list. Thanks
4708 to Bill Schottstaedt!
4709
e7313a9d
DH
47102004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4711
4712 * eval.c (unmemoize_quote): New static function.
4713
4714 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4715 representation of 'quote' and '@slot-ref' to an improper list.
4716 This reduces execution time, the number of cells used to hold the
4717 memoized code, and thus also reduces garbage collection time.
4718
4719 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4720
4721 (SCM_CEVAL): Changed macro handling to also work with macros that
4722 return improper lists. Added an assertion, that the code returned
4723 by a macro transformer will not lead to cycles in the memoized
4724 code.
4725
e5156567
DH
47262004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4727
4728 No functional change, just rearrangements of functions within the
4729 file.
4730
4731 * eval.c (scm_ilookup, scm_unbound_variable_key,
4732 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4733 the definitions used for execution, since that's where they will
4734 belong to later.
4735
651f07f8
DH
47362004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4737
4738 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4739 throughout guile, has not been part of an official release yet,
4740 and the concept of sloppy predicates has never been a good idea.
4741
4742 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4743 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4744 Simplified.
4745
770e048f
DH
47462004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4747
4748 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4749 to make explicit what happens.
4750
2ff08405
DH
47512004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4752
4753 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4754 explicit what happens.
4755
4756 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4757 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4758
89afb9cd
MV
47592004-05-11 Marius Vollmer <mvo@zagadka.de>
4760
4761 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4762 is indeed a procedure when it isn't a number.
4763
3d5ebfa9
MV
47642004-05-10 Marius Vollmer <mvo@zagadka.de>
4765
4766 Convert floating point numbers into strings with an arbitrary
4767 radix. Thanks to Richard Todd!
241d9cea 4768
3d5ebfa9
MV
4769 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4770 fit.
4771 (fx): Removed.
4772 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4773 number_chars): New, to support variable radices.
4774 (idbl2str): Use above instead of the old base-10 only tables.
4775 (iflo2str): Pass on new RADIX argument to idbl2str.
4776 (scm_number_to_string): Pass radix to iflo2str.
4777 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4778 iflo2str.
4779 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4780 possible radices.
4781
3ae69bb4
KR
47822004-05-10 Kevin Ryde <user42@zip.com.au>
4783
4784 * numbers.c (scm_logbit_p): Correction to test above the end of an
4785 inum. Reported by Jan Konecny.
4786
27968825
MV
47872004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4788
4789 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4790 scm_t_bits. Updated all users.
4791 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4792 duplicating the code.
4793 (SCM_CELL_OBJECT_LOC): New.
4794 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4795 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4796
4797 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4798 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4799 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4800 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4801 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4802 SCM_SMOB_OBJECT_3_LOC): New.
4803 * smob.c (scm_i_set_smob_flags): New function.
4804
4805 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4806 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4807 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4808 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4809 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4810 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4811
4812 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4813 taking the address of SCM_CELL_WORD_1, the latter being no longer
4814 an lvalue.
4815
4816 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4817 of casting SCM_CELL_WORD_LOC.
4818
3cf17ef0
KR
48192004-05-02 Kevin Ryde <user42@zip.com.au>
4820
37026925 4821 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
9a5fa6e9 4822 --disable-deprecated. Reported by Andreas Vögele.
37026925 4823
3cf17ef0 4824 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
9a5fa6e9 4825 particular on HP-UX). Reported by Andreas Vögele.
3cf17ef0 4826
c5854598
KR
4827 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4828 code has support for. Fixes building with AIX cc, which is ansi but
4829 doesn't define __STDC__. Reported by Keith Crane.
4830 (var_start): Remove macro, this variation no longer required.
4831 (scm_list_n): Use va_start directly.
4832
f26c1a32
KR
48332004-05-01 Kevin Ryde <user42@zip.com.au>
4834
4835 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
9a5fa6e9 4836 is now gone. Reported by Andreas Vögele.
f26c1a32 4837
dfa6017e
KR
48382004-04-28 Kevin Ryde <user42@zip.com.au>
4839
4840 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4841 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4842 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
9a5fa6e9 4843 subscript. Reported by Andreas Vögele.
dfa6017e
KR
4844 Also cast through unsigned char to avoid passing negatives to those
4845 macros if input contains 8-bit values.
4846
4847 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4848 corrections to range check for signed numbers. Remove
4849 scm_remember_upto_here_1(num) from these checks, since num is used
4850 subsequently anyway.
4851
4852 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4853 avoid warning from gcc 3.4. Reported by Hyperdivision.
241d9cea 4854
dfa6017e
KR
4855 * numbers.c (scm_bit_extract): Use min instead of MIN.
4856 (MIN): Remove, this conflicts with similar macro defined by limits.h
9a5fa6e9 4857 on HP-UX. Reported by Andreas Vögele.
dfa6017e
KR
4858
4859 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
9a5fa6e9 4860 particular on HP-UX). Reported by Andreas Vögele.
dfa6017e 4861
a0d06a00 4862 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
9a5fa6e9 4863 Reported by Andreas Vögele.
a0d06a00 4864
dfa6017e
KR
4865 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4866 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
9a5fa6e9 4867 by Andreas Vögele.
dfa6017e 4868
36245b66
DH
48692004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4870
4871 * eval.c (s_macro_keyword): New static identifier.
4872
4873 (scm_m_define): Change order to first create binding and
4874 evaluating the expression afterwards.
4875
4876 (scm_m_set_x): Memoize complete set! expression. Only leave
4877 symbols if no binding exists at memoization time. Throw error if
4878 assigning to a syntactic keyword.
4879
4880 (lazy_memoize_variable): New function.
4881
4882 (CEVAL): When execution set!, perform lazy memoization if
4883 unmemoized symbol is detected.
4884
4885 * modules.c (module_variable): Return variables with unbound
4886 value.
4887
4888 * tags.h: Fix comment.
4889
4d81111e
KR
48902004-04-25 Kevin Ryde <user42@zip.com.au>
4891
da8bcb2f
KR
4892 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4893 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4894 in 8-bit locales, and ensures consistency with char-upper-case? and
4895 char-lower-case? which already use ctype.h.
4896 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4897 Remove.
4898 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4899
4d81111e
KR
4900 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4901 call. Reported by Hyperdivision.
4902
4903 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4904 Reported by Hyperdivision.
4905
4906 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4907 Hyperdivision.
4908
7e6e6b37
DH
49092004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4910
4911 Hide the implementation of ilocs and isyms in eval.c.
4912
4913 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4914 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4915 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4916 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4917 eval.h to eval.c.
4918
4919 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4920 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4921 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4922 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4923 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4924 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4925 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4926 renamed to ISYMNUM.
4927
4928 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4929 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4930 Extracted printing of ilocs and isyms to guile internal functions
4931 scm_i_print_iloc, scm_i_print_isym of eval.c.
4932
caab294f
KR
49332004-04-22 Kevin Ryde <user42@zip.com.au>
4934
7aaf4758
KR
4935 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4936
caab294f
KR
4937 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4938 rounding in x+0.5 when x is a big value already an integer. In
4939 certain hardware rounding cases x+0.5 can give an adjacent integer,
4940 leading to that as the result, when we really just wanted x itself.
241d9cea 4941
b1cb24ff
DH
49422004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4943
4944 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4945
4946 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4947 added const qualifiers, cast intentionally unused expressions to
4948 void for emphasis, improved comment.
4949
5065b40d
DH
49502004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4951
4952 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4953 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4954 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4955 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4956 Defined the tc8-tag for flags to be 0x04, which will mean that
4957 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4958 to the reduced number of bits and the simpler bit pattern for
4959 SCM_BOOL_F, certain machines may be able to use more efficient
4960 processor instructions to deal with SCM_BOOL_F.
4961
4962 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4963 never been defined in a released version, thus no need to
4964 deprecate them.
4965
4966 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4967 instead of tc9 tags.
4968
4969 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4970 of tc9 tags.
4971
4972 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4973 could have used this definition.
4974
4975 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4976 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4977 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4978 as isyms, as special isyms don't exist any more.
4979
9fa6c119
KR
49802004-04-18 Kevin Ryde <user42@zip.com.au>
4981
e08d2eee
KR
4982 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4983 safety.
4984
9fa6c119
KR
4985 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4986 explicit swapping code.
4987
c9cdd396
KR
49882004-04-15 Kevin Ryde <user42@zip.com.au>
4989
4990 * cpp_sig_symbols.in: Add SIGSYS.
241d9cea 4991
c9cdd396
KR
4992 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4993 recursion.
4994
4995 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4996 frac/big and frac/frac, use scm_less_p for exact comparison.
4997
83ac9c59
KR
4998 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4999 with big/inum.
5000
84a4be9a
KR
5001 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
5002
84fad130
HWN
50032004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
5004
6b69393d
HWN
5005 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
5006
84fad130 5007 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
241d9cea 5008 scm_c_{up,down}case.
84fad130 5009 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
241d9cea 5010 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
84fad130 5011
c3110a30
KR
50122004-04-06 Kevin Ryde <user42@zip.com.au>
5013
0b288f36
KR
5014 * numbers.c (scm_ash): Remove stray "}" in docstring.
5015
ea2508c8
KR
5016 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
5017 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
5018 calling mpz_cmp_ui in most cases.
5019
c3110a30
KR
5020 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
5021 for big == abs(most-negative-fixnum) special case.
5022 (abs_most_negative_fixnum): Remove, no longer used.
5023
5024 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
5025 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
5026 calling (sigaction NSIG).
5027
5028 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
5029 and fork error cases to do this.
5030
dec40cd2
DH
50312004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5032
5033 * eval.c (CEVAL): Don't distinguish between short and long
5034 instructions when dispatching - just always dispatch on the
5035 instruction code, which is common for short and long instructions.
5036 Further, removed unnecessary goto statements and added comment.
5037
0e7bb795
DH
50382004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5039
5040 * eval.c (scm_unmemocopy): Don't distinguish between short and
5041 long instructions when dispatching - just always dispatch on the
5042 instruction code, which is common for short and long instructions.
5043 Further, removed unnecessary goto statements, fixed indentation
5044 and replaced SCM_IMP predicates by SCM_NULLP.
5045
f9986767
DH
50462004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5047
5048 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
5049 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
5050 'checkmacro'.
5051
fbc42231
KR
50522004-03-31 Kevin Ryde <user42@zip.com.au>
5053
5054 * simpos.c: Include <signal.h> for SIG_IGN and friends.
5055
434f2f7a
DH
50562004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5057
5058 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
5059 SCM_DEBUGGINGP:
5060
5061 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
5062 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
5063 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
5064 single interface that also matches the naming conventions.
5065 Probably scm_debug_mode_p should be part of the private interface
5066 anyway.
5067
5068 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
5069 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
5070 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
5071 to scm_debug_mode_p.
5072
5073
5074 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
5075
5076 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
5077 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
5078 from debug.h to eval.h.
5079
5080 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
5081 more, just leave it with setting scm_debug_mode_p, which is
5082 equivalent for practical purposes.
5083
5084 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
5085 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
5086
5087 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
5088
5089 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
5090 static and renamed it to ceval throughout. Provide a new exported
5091 but deprecated function scm_ceval as a wrapper for backwards
5092 compatibility. The same is done for the deval/scm_deval pair of
5093 functions.
5094
5095 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
5096 throughout. Defined CEVAL to ceval or deval, based on compilation
5097 phase.
5098
5099 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
5100 to ceval and deval instead of calling *scm_ceval_ptr.
5101
5102 * eval.c (dispatching_eval): New deprecated static function.
5103
5104 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
5105 to emulate its old behaviour as closely as possible.
5106
5107
5108 Change the evaluator such that only expressions for which pair? is
5109 true are passed to CEVAL, and such that all other expressions are
5110 evaluated outside of CEVAL:
5111
5112 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
5113 expression that is assumed to be memoized already. All but
5114 expressions of the form '(<form> <form> ...)' are evaluated inline
5115 without calling an evaluator.
5116
5117 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
5118 expressions of the form '(<form> <form> ...)' inline without
5119 calling an evaluator.
5120
5121 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
5122 the special case of unmemoized symbols passed on the top level.
5123
5124 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
5125 is known that the expression passed to CEVAL is of the form
5126 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
5127 now it is known that the input expression of CEVAL is a pair.
5128
51292004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5fb64383
DH
5130
5131 * eval.c (is_self_quoting_p): New static function.
5132
5133 (scm_m_quote): Use is_self_quoting_p.
5134
5135 (copy_tree): Corrected typo in comment.
5136
702551e6
HWN
51372004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
5138
bfefbf18
HWN
5139 * eval.c (s_scm_copy_tree): idem.
5140
5141 * list.c (s_scm_filter): remove "pointer" from doc string.
5142
702551e6
HWN
5143 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
5144
5145 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
5146
5147 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
5148 (display_frame): idem.
5149 (display_backtrace_file_and_line): idem.
5150
5151 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
5152 arguments.
5153
3cd23214
KR
51542004-03-26 Kevin Ryde <user42@zip.com.au>
5155
88a7ae1f
KR
5156 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
5157
3cd23214
KR
5158 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
5159 big==0 since that never occurs.
5160
5161 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
5162 scm_modular_expt, matching scheme level name `modulo-expt'.
5163
5164 * numbers.c (scm_modular_expt): Return a negative remainder for a
5165 negative divisor, the same as `modulo' does.
5166
51672004-03-26 Eric Hanchrow <offby1@blarg.net>
5168
5169 * numbers.c, numbers.h (scm_modular_expt): New function.
5170
2926035a
KR
51712004-03-25 Kevin Ryde <user42@zip.com.au>
5172
5173 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
5174 return inexact as required by r5rs.
5175
62360b89
DH
51762004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5177
5178 * eval.c: Separated some definitions relevant for execution from
5179 the memoization part of the file.
5180
5181 (copy_tree): New static function
5182
5183 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
5184 structures are detected now and will lead to an exception instead
5185 of forcing guile to run in an endless loop, using up all the
5186 system's memory. Second, arrays in the cdr of an improper list
5187 are now copied. See the new test cases in eval.test.
5188
51892004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
b28f5b3c
DH
5190
5191 * posix.c (scm_gethostname): Make sure len is initialised before
5192 it is used. Restructured to (hopefully) represent possible
5193 configurations more clearly in the code. Added unwind handler.
5194
3bd3bae8
KR
51952004-03-23 Kevin Ryde <user42@zip.com.au>
5196
5197 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
5198 MAXHOSTNAMELEN when available.
5199
254bf78d
MV
52002004-03-21 Marius Vollmer <mvo@zagadka.de>
5201
5202 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
5203 terminator. Rewritten the logic as a state machine, I must have
5204 been doing too much VHDL lately...
5205
5206 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
5207 themselves. Thanks to Han-Wen Nienhuys!
5208
5209 * list.c: Changed docstrings so that they no longer talk about
5210 returning 'pointers' to something.
5211
009c34a2
HWN
52122004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5213
5214 * gc.c: remove set_debug_cell_accesses! when
5215 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
5216 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
5217 debugging conditionally.
241d9cea 5218
54733c95
KR
52192004-03-21 Kevin Ryde <user42@zip.com.au>
5220
5221 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
5222
bbaf8747
KR
52232004-03-20 Kevin Ryde <user42@zip.com.au>
5224
5225 * posix.c (scm_gethostname): Preserve errno across free() call.
5226
726f82e7
HWN
52272004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
5228
5229 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
5230 free cells.
5231
e1350d6a
KR
52322004-03-14 Kevin Ryde <user42@zip.com.au>
5233
5234 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
5235 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
5236
62055253
KR
52372004-03-07 Kevin Ryde <user42@zip.com.au>
5238
5239 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
5240 than "GMT" always.
5241 (filltime): Make zname parameter "const".
5242
92e64b87
MD
52432004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
5244
5245 * threads.c, threads.h (scm_c_scm2thread): New function.
5246
004ad931
KR
52472004-02-29 Kevin Ryde <user42@zip.com.au>
5248
5249 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
5250 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
5251 particular don't assume "defined (__alpha__) && ! defined (linux)"
5252 means OSF. Remove "SCO" code, which was not really SCO specific and
5253 which John W. Eaton advises should be long past being needed.
5254
5255 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
5256 error throw.
5257
72ea45ac
KR
52582004-02-24 Kevin Ryde <user42@zip.com.au>
5259
5260 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
5261
2af0602e
KR
52622004-02-22 Kevin Ryde <user42@zip.com.au>
5263
5264 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
5265 complex, same as for two args. (Handle only inum, big, real, frac).
5266
b114eafe
KR
52672004-02-21 Kevin Ryde <user42@zip.com.au>
5268
5269 * posix.c (scm_crypt): Use new HAVE_CRYPT.
5270 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 5271 Reported by Andreas Voegele.
b114eafe 5272
1e55d288
NJ
52732004-02-20 Neil Jerram <neil@ossau.uklinux.net>
5274
5275 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
5276 validation.
5277
5278 * read.c (scm_lreadparen): Removed.
5279 (scm_lreadparen1): Renamed scm_i_lreadparen.
5280
eb741d98
HWN
52812004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5282
5283 * list.c (scm_list_n): validate non-immediate arguments;
5284 this will catch forgotten a SCM_UNDEFINED.
5285
4e28ba5e
MV
52862004-02-18 Marius Vollmer <mvo@zagadka.de>
5287
5288 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
5289 Thanks to Bill Schottstaedt!
241d9cea 5290
4e28ba5e
MV
5291 * socket.h (scm_gethost): Removed prototype it is already in
5292 "net_db.h". Thanks to Bill Schottstaedt!
241d9cea 5293
ef861ead
KR
52942004-02-18 Kevin Ryde <user42@zip.com.au>
5295
5296 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
5297 order parameter to mpz_import, in fact with just one word there's no
5298 order to worry about at all.
5299
5300 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
5301 and frac==complex, make an exact comparison rather than converting
5302 with fraction2double.
5303
5304 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
5305 shared library, since environ is not directly available there.
5306
5307 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
5308 standard.
5309
5310 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
5311 errno EINVAL in case localtime and gmtime don't set it.
5312 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
5313 SCM_SYSERROR, since mktime and strptime generally don't set errno.
5314
ae43d08e 53152004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 5316
c9ea6462
KR
5317 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
5318 which were permitted in the past for these.
5319
292dfa7f
KR
5320 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
5321 previous change to numbers.c.
5322
ae43d08e
KR
5323 * script.c (scm_shell_usage): Print bug-guile email address, as per
5324 GNU standard. Reported by Han-Wen Nienhuys.
5325
711a9fd7
MD
53262004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5327
5328 * unif.c (scm_make_uve): Removed local variable and simplified
5329 code in order to avoid compiler used uninitialized warnings.
5330
5331 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
5332 scm_hash_map.
5333 (scm_hash_fold): Use scm_call_3 directly in the call to
5334 scm_internal_hash_fold instead of going via fold_proc (which is
5335 now removed).
5336 (scm_hash_for_each): Use a trampoline +
5337 scm_internal_hash_for_each_handle.
5338 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
5339 functions.
5340
3da7f6b2
KR
53412004-02-12 Kevin Ryde <user42@zip.com.au>
5342
344a212f
KR
5343 * ports.c (scm_port_line): In docstring, note first line is 0.
5344 (scm_set_port_line_x): In docstring, note first line is 0.
5345 (scm_port_column): In docstring, there's no default to current input
5346 port, and remove shared port-line @defun.
5347 (scm_set_port_column_x): In docstring, there's no default to current
5348 input port, note first column is 0, remove shared set-port-line!
5349 @defun.
5350
3da7f6b2
KR
5351 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
5352 convert args the same way that array-set! does.
5353
5354 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
5355 for dvect.
5356 (scm_array_p): Add missing "break"s in switch, fix llvect test look
5357 for "l" not "s", fix dvect to be false for singp(prot) since such a
5358 value is for fvect.
5359 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
5360 (exactly_one_third): New variable.
5361 (scm_init_unif): Initialize it.
3da7f6b2 5362
cd21f5eb
NJ
53632004-02-10 Neil Jerram <neil@ossau.uklinux.net>
5364
5365 * read.c (scm_read_opts): Change `escaped-parens' to
5366 `elisp-strings'.
5367
16353acc
NJ
53682004-02-08 Neil Jerram <neil@ossau.uklinux.net>
5369
5370 * read.c (scm_read_opts): New opts `elisp-vectors' and
5371 `escaped-parens'.
5372 (s_vector): New.
5373 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
5374 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
5375 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
5376 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
5377 `escaped-parens' option set.
5378 (scm_read_token): If elisp vector syntax active, disallow [ and ]
5379 in tokens.
5380 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
5381 (scm_lreadparen1): New.
5382
5383 * read.h: Remove conditionally compiled last arg to
5384 scm_lreadparen.
5385 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
241d9cea 5386
f62b9dff
HWN
53872004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
5388
5389 * eval.c (m_expand_body): remove stray variable new_body.
5390
ef5b6b61
MV
53912004-01-22 Marius Vollmer <mvo@zagadka.de>
5392
5393 * eval.c (m_expand_body): Rewrite the expression in place (by
5394 overwriting FORMS) also when a letrec is constructed, not only
5395 when no definitions are found. Do not return rewritten expression
5396 to emphasize the in-place rewriting. Changed all users.
5397
7eec4c37
HWN
53982004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
5399
5400 * gc.c: add protected_object_count, a number that is dumped from
5401 gc_stats()
5402
25ffbdac
MV
54032004-01-11 Marius Vollmer <mvo@zagadka.de>
5404
5405 * dynwind.h, dynwind.c (scm_frame_unwind,
5406 scm_frame_unwind_handler): Renamed and changed all uses.
5407 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
241d9cea 5408
08568c95
KR
54092004-01-11 Kevin Ryde <user42@zip.com.au>
5410
5411 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
5412 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
5413 changes made to scheme-compound.texi.
5414
5565749c
MV
54152004-01-10 Marius Vollmer <mvo@zagadka.de>
5416
25ffbdac
MV
5417 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
5418 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
5419
5420 * guile-snarf.in: Use mkdir to create a unique temporary directory
5421 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 5422
fc6bb283
MV
54232004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5424
7ebccde8
MV
5425 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
5426 argument since it is always zero now. Changed all callers.
5427 Removed code for handling fluids.
96e3b2f8
MV
5428
5429 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
5430 the wind chain explicitely. Use scm_c_with_fluid for the common
5431 case of only one fluid.
5432 (scm_with_fluid): New.
5433 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
241d9cea 5434
fc6bb283 5435 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
5436 (scm_with_fluid): New.
5437 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
5438
5439 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
5440 do the unwinding directly. It is simple enough.
241d9cea 5441
fc6bb283
MV
5442 * dynwind.h, dynwind.c: Did the following renamings:
5443 scm_begin_frame -> scm_frame_begin,
5444 scm_end_frame -> scm_frame_end,
5445 scm_on_unwind -> scm_frame_unwind,
5446 scm_on_rewind -> scm_frame_rewind,
5447 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
5448 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
5449 Changed all uses.
5450
5451 * aync.h, async.c: Did the follwing renamings:
5452 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
5453 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
5454 Changed all uses.
241d9cea 5455
fc6bb283
MV
5456 * ports.h, ports.c: Did the follwing renamings:
5457 scm_with_current_input_port -> scm_frame_current_input_port,
5458 scm_with_current_output_port -> scm_frame_current_output_port,
5459 scm_with_current_error_port -> scm_frame_current_error_port.
5460 Changed all uses.
5461
298ab996
KR
54622004-01-07 Kevin Ryde <user42@zip.com.au>
5463
5464 * numbers.c (s_bignum): Remove, not used since gmp bignums.
5465 Reported by Richard Todd.
5466
ba40113e
KR
5467 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
5468 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
5469
298ab996
KR
5470 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
5471 traversing the args list, fixes segv if an improper list is given.
5472 Reported by Rouben Rostamian.
5473
aacff585
MV
54742004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5475
5476 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
5477 swap_data on stack, use a 'malloc obj'.
5478
5479 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
5480 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
5481 scm_i_... since they are internal. Changed all uses.
5482
5483 * dynwind.c (frame_print): Removed, use the default printer.
5484 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
5485 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
5486 to protect SCM values.
241d9cea 5487
aacff585
MV
5488 * dynwind.h (SCM_F_WIND_EXPLICITELY,
5489 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
5490 Changed all uses.
5491 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
241d9cea 5492
49c00ecc
MV
54932004-01-05 Marius Vollmer <mvo@zagadka.de>
5494
5495 * ports.h, ports.c (scm_with_current_input_port,
5496 scm_with_current_output_port, scm_with_current_error_port): New.
5497
5498 * async.h, async.c (scm_with_blocked_asyncs,
5499 scm_with_unblocked_asyncs): New.
5500
dab514a8
MV
55012004-01-03 Marius Vollmer <mvo@zagadka.de>
5502
5503 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
5504 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
5505 New.
5506 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
5507 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
5508 function when the outermost wind point has been reached. The
5509 latter is used to copy a continuation stack at the right time.
5510 scm_dowinds remains available.
5511 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
5512 tc16_guard, guards_print): Removed.
5513 (scm_internal_dynamic_wind): Reimplemented using frames.
5514
5515 * continuations.c (copy_stack): New, do only the stack copying
5516 part of copy_stack_and_call.
5517 (copy_stack_and_call): Copy the stack after unwinding and before
5518 rewinding.
5519 (scm_dynthrow): Do not call scm_dowinds, this is now done by
5520 copy_stack_and_call.
241d9cea 5521
441a25d9
KR
55222004-01-04 Kevin Ryde <user42@zip.com.au>
5523
5524 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 5525 can give bad results due to rounding.
241d9cea 5526
e0499207
KR
5527 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
5528 setzone/restorezone protection for DOS.
5529
89fcf1b4
MV
55302003-12-26 Marius Vollmer <mvo@zagadka.de>
5531
5532 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
5533 and scm_t_uintmax to be defined in scmconfig.h
5534
caff34d4
KR
55352003-12-03 Kevin Ryde <user42@zip.com.au>
5536
5537 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
5538
5539 * numbers.c (scm_make_ratio): Check for numerator equal to
5540 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
5541 giving integer -1.
5542
5543 * numbers.c (scm_real_part): Return fraction unchanged rather than
5544 converting to flonum.
5545
2d0b85ac
DH
55462003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5547
5548 * modules.c (module_variable): Fixed (and thus simplified) the
5549 definition of SCM_BOUND_THING_P to reflect the fact that since
5550 after the 1.4 series of guile, obarrays only hold variable
5551 objects.
5552
2297981d
MV
55532003-11-30 Marius Vollmer <mvo@zagadka.de>
5554
5555 * numbers.c (scm_logand): It's "#b...", not "#\b...".
5556
5557 From Paul Jarc:
5558
5559 * read.c (scm_lreadr): Signal an error for invalid escape
5560 sequences in strings. Code cleanups too.
5561
5562 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
5563 writing control characters in strings.
5564
55652003-11-21 Marius Vollmer <mvo@zagadka.de>
5566
5567 * ports.c (scm_drain_input): Bug fix: only access the port after
5568 checking that it indeed is one.
5569
5c264007
DH
55702003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5571
5572 * eval.c (s_bad_define): New static identifier.
5573
5574 (m_body): Fixed comment.
5575
5576 (scm_m_define): Don't generate memoized code for definitions that
5577 are not on the top level. As a consequence, no memoized code at
5578 all is generated for definitions any more: Top level definitions
5579 are executed immediately during memoization and internal
5580 definitions are handled separately in m_expand_body.
5581
5582 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
5583 definitions. Consequently, there is no unmemoizing code any more
5584 that might modify the environment. Thus, the old scm_unmemocopy
5585 is removed and the old unmemocopy is renamed to scm_unmemocopy.
5586
5587 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
5588 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
5589 over SCM_NIMP in places, where the argument is known to be part of
5590 a proper list.
5591
018d4730
KR
55922003-11-21 Kevin Ryde <user42@zip.com.au>
5593
5594 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
5595 for bignums.
5596
5597 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
5598 to share some shifting.
5599
5600 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
5601 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
5602 since gc does this.
5603
4bca30d8
MV
56042003-11-19 Marius Vollmer <mvo@zagadka.de>
5605
fb16d26e
MV
5606 * numbers.c (scm_make_ratio): Rewritten to have a simpler
5607 structure. Previously, not all cases with a negative denominator
5608 were covered.
5609
4bca30d8
MV
5610 * numbers.c (mem2decimal_from_point): use scm_divide instead of
5611 scm_divide2real when forming the fractional part. This allows
5612 "#e1.2" to yield 6/5.
5613
5614 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
5615 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
5616 fractions were equal to each other regardless of value. Ooops.
5617
5618 * numbers.c (scm_rationalize): Return an inexact result when given
5619 inexact arguments.
5620
5621 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
5622 non-numbers.
5623
bdf26b60
MV
56242003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5625
5626 Support for exact fractions from Bill Schottstaedt! Thanks!
241d9cea 5627
bdf26b60
MV
5628 * print.c (scm_iprin1): Handle fractions.
5629
5630 * objects.h (scm_class_fraction): New.
241d9cea 5631 * objects.c (scm_class_fraction): New.
bdf26b60 5632 (scm_class_of): Handle fractions.
241d9cea 5633
bdf26b60
MV
5634 * hash.c (scm_hasher): Handle fractions.
5635
5636 * numbers.c: New code for handling fraction all over the place.
5637 (scm_odd_p, scm_even_p): Handle inexact integers.
5638 (scm_rational_p): New function, same as scm_real_p.
5639 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
5640 New exact functions that replace the inexact 'dsubr'
5641 implementations.
5642 (scm_numerator, scm_denominator): New.
5643
5644 * numbers.h (SCM_NUMP): Recognize fractions.
5645 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5646 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5647 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5648 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5649 SCM_FRACTION_REDUCED): New.
5650 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5651 New prototypes.
5652 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5653 scm_rational_p): New prototypes.
5654 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5655 scm_i_print_fraction): New prototypes.
241d9cea 5656
bdf26b60
MV
5657 * goops.c (create_standard_classes): Create "<fraction>" class.
5658
5659 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5660
5661 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5662 case in the switch, but do nothing for now.
5663
5664 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5665 to doubles when calling 'dsubr' functions.
5666
5667 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5668
28fda544
RB
56692003-11-18 Rob Browning <rlb@defaultvalue.org>
5670
5671 * gen-scmconfig.c (main): remove public definition of
5672 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5673 direct typedef of long_long and ulong_long inside deprecated block
5674 when appropriate.
5675
5676 * deprecated.h: move long_long and ulong_long definitions to
5677 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5678 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5679
b58e7420
MV
56802003-11-17 Marius Vollmer <mvo@zagadka.de>
5681
9a1d7d7c
MV
5682 * hash.c (scm_string_hash): New hashing algorithm that takes the
5683 complete string into account.
5684
b58e7420
MV
5685 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5686 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
5687 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5688 SCM_ASSYNT.
b58e7420
MV
5689
5690 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5691 the "-e" option instead of scm_str2symbol. This allows things
5692 like (@ ...) to be specified for the entry point.
5693
461bffb1
DH
56942003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5695
5696 * eval.c (scm_m_letstar): Create memoized code in place to
5697 minimize consing.
5698
6f81708a
DH
56992003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5700
5701 * eval.c (s_splicing): Commented and reformulated.
5702
5703 (lookup_global_symbol, lookup_symbol): New static functions.
5704
5705 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5706
5707 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5708 creating a temporary pair for scm_lookupcar.
5709
5710 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5711 created deprecated wrapper function scm_unmemocar.
5712
5713 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5714 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5715 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5716 undefineds, sym_three_question_marks): Moved around without
5717 modifications.
5718
5719 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5720
910b5125
DH
57212003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5722
5723 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5724 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5725 No further modifications.
5726
c86c440b
DH
57272003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5728
5729 * eval.c (s_mixed_body_forms): New static identifier.
5730
5731 (canonicalize_define, scm_m_define): The check for a bad
5732 expression is performed in canonicalize_define now.
5733
5734 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5735 static helper functions for m_expand_body.
5736
5737 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5738 expand user defined macros. Fixed handling of the definition/
5739 expression boundary. Fixed handling of definitions grouped with
5740 'begin. Use canonicalize_define to expand definitions.
5741
3890131a
MV
57422003-11-13 Marius Vollmer <mvo@zagadka.de>
5743
b58e7420
MV
5744 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5745 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5746
5df36eac
MV
5747 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5748 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5749 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5750 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5751 New macros from Paul Jarc. Thanks!
5752
3890131a
MV
5753 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5754 return NULL when the machine type is unknown. Previously,
5755 gc_os_dep.c would refuse to compile.
5756
430b8401
DH
57572003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5758
5759 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5760 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5761 scm_m_body to m_body.
5762
328dc9a3
DH
57632003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5764
5765 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5766 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5767 scm_m_expand_body to m_expand_body and made it static. Added
5768 deprecated wrapper scm_m_expand_body.
5769
5770 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5771 of scm_m_expand_body.
5772
c2337a61
KR
57732003-11-09 Kevin Ryde <user42@zip.com.au>
5774
5775 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5776 argument. Reported by Mike Gran.
5777
ced8edb0
DH
57782003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5779
5780 * eval.c (s_missing_body_expression): New static identifier.
5781
5782 (s_body): Removed.
5783
5784 (scm_m_expand_body): Fixed core dump when passing a body with
5785 defines, but without expressions (see additions to syntax.test).
5786 Use ASSERT_SYNTAX to signal syntax errors.
5787
0f572ba7
DH
57882003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5789
5790 * eval.c (canonicalize_define): New static helper function.
5791
5792 (memoize_define, canonicalize_define): Extract handling of
5793 function currying to canonicalize_define.
5794
2510c810
DH
57952003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5796
5797 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5798 Make sure that error checking in debug mode is not worse than in
5799 standard mode.
5800
34adf7ea
DH
58012003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5802
5803 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5804 handled in scm_m_body any more, but rather in scm_m_lambda.
5805
5806 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5807 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5808 calling functions of scm_m_body.
5809
5810 (scm_m_lambda): Avoid unnecessary consing when creating the
5811 memoized code.
5812
89bff2fc
DH
58132003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5814
5815 * eval.c (s_expression): Added comment.
5816
5817 (s_empty_combination, error_unbound_variable): New static
5818 identifiers.
5819
5820 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5821 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5822 signal syntax errors.
5823
5824 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5825 scheme objects.
5826
60a49842
DH
58272003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5828
5829 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5830 Grouped together with unmemocopy, without modifications.
5831
5832 (build_binding_list, unmemocopy): Renamed names of list arguments
5833 and variables to reflect the actual order of the list elements.
5834
70c1c108
DH
58352003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5836
5837 * eval.c (s_defun): New static identifier.
5838
5839 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5840 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5841 when creating the memoized code.
5842
0ee39677
KR
58432003-10-19 Kevin Ryde <user42@zip.com.au>
5844
5845 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5846
5847 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5848 in accordance with R5RS, which just mpz_get_d doesn't really give.
5849
9a848baf
DH
58502003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5851
5852 * eval.c (s_bad_slot_number): New static identifier.
5853
5854 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5855 signal syntax errors. Avoid unnecessary consing when creating the
5856 memoized code.
5857
da48db62
DH
58582003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5859
5860 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5861 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5862 errors. Avoid unnecessary consing when creating the memoized
5863 code.
5864
5865 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5866 standard case. Make sure line and file information are copied to
5867 every created expression.
5868
82b3e2c6
DH
58692003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5870
5871 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5872 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5873 when creating the memoized code.
5874
5875 (scm_m_atbind): Reversed the order, in which the init expressions
5876 are stored and executed. The order of execution is now equal to
5877 the order in which the initializers of the let-forms are executed.
5878 Use check_bindings and transform_bindings.
5879
5880 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5881 !SCM_NULLP. Added some comments.
5882
21628685
DH
58832003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5884
5885 * eval.c: Sorted include files alphabetically.
5886
5887 (scm_m_begin): Added comment.
5888
5889 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5890 unnecessary consing when creating the memoized code.
5891
5892 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5893 syntax errors. Be more specific about the kind of error that was
5894 detected.
5895
5896 (scm_m_quote, unmemocopy): As an optimization, vector constants
5897 are now inserted unquoted into the memoized code. During
5898 unmemoization the quotes are added again to provide syntactically
5899 correct code.
5900
d6754c23
DH
59012003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5902
5903 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5904 scm_m_expand_body, check_bindings): Extracted syntax checking of
5905 bindings to new static function check_bindings.
5906
5907 (scm_m_let, memoize_named_let): Extracted handling of named let to
5908 new static function memoize_named_let.
5909
5910 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5911 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5912 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5913 unnecessary consing when creating the memoized code.
5914
03a3e941
DH
59152003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5916
5917 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5918 static identifiers.
5919
5920 (s_clauses, s_formals, s_duplicate_formals): Removed.
5921
5922 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5923 specific about the kind of error that was detected. Prepare for
5924 easier integration of changes for separated memoization.
5925
da48db62 59262003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
5927
5928 * eval.c (s_duplicate_binding): New static identifier.
5929
5930 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5931
5932 (scm_m_define): Added comment about how we check for duplicate
5933 formals.
5934
5935 (scm_m_do): Added check for duplicate bindings.
5936
5937 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5938 unnecessary consing when creating the memoized code.
5939
5940 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5941 scm_c_improper_memq to c_improper_memq, since it is not exported.
5942
5943 (transform_bindings): Call scm_c_memq rather than
5944 scm_c_improper_memq.
5945
5946 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5947
da48db62 59482003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
5949
5950 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5951 static identifiers.
5952
5953 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5954 specific about the kind of error that was detected. Avoid use of
5955 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5956 code, this way also making sure that file name, line number
5957 information etc. remain available.
5958
da48db62 59592003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
5960
5961 * eval.c (memoize_as_thunk_prototype): New static function.
5962
5963 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5964 Avoid unnecessary consing when creating the memoized code.
5965
9b9a35b6
KR
59662003-10-12 Kevin Ryde <user42@zip.com.au>
5967
5968 * list.c (scm_append): Track argument number and use in error.
5969
cc56ba80
DH
59702003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5971
5972 * eval.c (s_missing_expression, s_bad_variable): New static
5973 identifiers.
5974
5975 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5976 R5RS terminology for the naming of variables. Be more specific
5977 about the kind of error that was detected. Make sure file name,
5978 line number etc. are added to all freshly created expressions.
5979 Avoid unnecessary consing when creating the memoized code.
5980
609a8b86
DH
59812003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5982
5983 * eval.c (s_extra_expression, s_misplaced_else_clause,
5984 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5985
5986 (s_extra_case_clause): Removed.
5987
5988 (scm_m_case, scm_m_cond): If a clause appears after an else
5989 clause, report a misplaced else clause.
5990
5991 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5992 specific about the kind of error that was detected. Handle bound
5993 'else and '=>. Avoid unnecessary consing when creating the
5994 memoized code.
5995
5996 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5997 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5998 syntactic keyword '=>.
5999
58a2510b
DH
60002003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6001
6002 * eval.c (scm_m_case): Allow empty lists of case labels.
6003
2a6f7afe
DH
60042003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6005
6006 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
6007
6008 * print.c (scm_isymnames): Add names for the new memoizer codes.
6009
6010 * eval.c (s_missing_clauses, s_bad_case_clause,
6011 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
6012 literal_p): New static identifiers.
6013
6014 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
6015 specific about the kind of error that was detected. Check for
6016 duplicate case labels. Handle bound 'else. Avoid unnecessary
6017 consing when creating the memoized code.
6018
6019 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
6020 the syntactic keyword 'else.
6021
e6729603
DH
60222003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
6023
6024 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
6025 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
6026
6027 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
6028 unnecessary consing when creating the memoized code.
6029
9ddeb776
KR
60302003-10-09 Kevin Ryde <user42@zip.com.au>
6031
6032 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
6033 cast gives for values bigger than a long, or for nan or inf.
6034
df5af69a
DH
60352003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
6036
6037 * smob.h (scm_make_smob_type): Made the declaration match the
6038 definition.
6039
da0e6c2b
MV
60402003-10-07 Marius Vollmer <mvo@zagadka.de>
6041
6042 * goops.c, objects.h, smob.c, smob.h: Make type names char
6043 const * instead of char *. Thanks to Paul Jarc!
6044
591924eb
KR
60452003-10-02 Kevin Ryde <user42@zip.com.au>
6046
ff6ea7b9 6047 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
6048 rather than scm_strport_to_string, so as to guard against the port
6049 having been closed by the called procedure. Reported by Nic Ferrier.
6050
f03314f9
DH
60512003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6052
6053 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
6054
6055 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
6056 tags.h to deprecated.h.
6057
534c55a9
DH
60582003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6059
6060 This set of patches introduces a new tc7 code scm_tc7_number for
6061 numbers. Bignums, reals and complex numbers are turned from smobs
6062 into subtypes of scm_tc7_number.
6063
6064 * tags.h (scm_tc7_number): New.
6065
6066 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
6067 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
6068 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
6069 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
6070 (scm_class_of), print.c (scm_iprin1), smob.c
6071 (scm_smob_prehistory): Don't handle bignums, reals and complex
6072 numbers as subtypes of scm_tc7_smob any more.
6073
6074 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
6075 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
6076
29c4382a
DH
60772003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6078
6079 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
6080 sizeof (scm_t_complex) to determine the memory size of the
6081 malloc'd area for complex numbers.
6082
47ae1f0e
DH
60832003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6084
6085 * numbers.c (scm_bigequal): Fixed.
6086
859b6b2f
MV
60872003-09-16 Marius Vollmer <mvo@zagadka.de>
6088
6089 * stime.c (scm_current_time): 'time' does not set errno so don't
6090 use SCM_SYSERROR for reporting errors.
6091
e17d318f
DH
60922003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
6093
6094 This set of patches eliminates the dependency between the
6095 implementation of evaluator specific memoization codes and special
6096 constants like #f, '() etc. ('flags'), which are not evaluator
6097 specific. The goal is to remove definitions of evaluator
6098 memoization codes completely from the public interface. This will
6099 make it possible to experiment more freely with optimizations of
6100 guile's internal representation of memoized code.
6101
6102 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
6103
6104 * print.c (iflagnames): New array, holding the printed names of
6105 guile's special constants ('flags').
6106
6107 (scm_isymnames): Now holds only the printed names of the
6108 memoization codes.
6109
6110 (scm_iprin1): Separate the handling of memoization codes and
6111 guile's special constants.
6112
6113 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
6114 SCM_IFLAGNUM): new
6115
6116 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
6117 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
6118 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
6119 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
6120 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
6121 values.
6122
6123 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
6124
6125 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
6126 tc9 macros and scm_tc9_flag.
6127
eecac806
MV
61282003-09-15 Marius Vollmer <mvo@zagadka.de>
6129
6130 * posix.c (scm_setgroups): Check that the gid list is not too
6131 long. Thanks to Paul Jarc!
6132
22f2cf2d
DH
61332003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
6134
6135 * tags.h: Reduced the number of short instructions from 14 to 13.
6136 The typecode of the former 14th short instruction is now used to
6137 represent long instructions. Changed some comments to reflect
6138 this fact.
6139
6140 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
6141 previously used by SCM_IM_DEFINE.
6142
6143 (SCM_IM_DEFINE): Turned into a long instruction.
6144
6145 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
6146 instruction.
6147
6148 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
6149 code that is separate from all instructions, one level of dispatch
6150 for long instructions can be eliminated.
6151
6152 * print.c (scm_isymnames): Removed some commented code.
6153
62f548e1
MV
61542003-09-12 Marius Vollmer <mvo@zagadka.de>
6155
97a61c5f
MV
6156 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
6157 compiler on IA64.
6158
50e0ba57
MV
6159 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
6160
6161 * modules.c (scm_module_reverse_lookup): Check that the obarray
6162 really is a hashtable and do nothing if not.
6163
62f548e1
MV
6164 * inline.h: Use "extern inline" only with GCC. Use "static
6165 inline" else.
6166
0d5e3480
DH
61672003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6168
6169 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
6170 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6171
6172 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
6173 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
6174 deprecated.h.
6175
6b412e91
DH
61762003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6177
6178 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
6179 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6180
6181 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
6182 0.0==some_expression to some_expression==0.0. The latter is
6183 better readable. The former is preferred by some people, since it
6184 leads to a compiler error when confusing == with =. However, when
6185 using gcc, a warning will be issued if in an if-statement an
6186 assigment appears. Since many Guile developers are using gcc,
6187 such errors will not remain unnoticed anyway. We can therefore
6188 focus on better readability.
6189
7e3b25bf
DH
61902003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6191
6192 * tags.h: Added description of Guile's type system. Removed some
6193 old and misleading comments.
6194
3ea39242
DH
61952003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6196
6197 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
6198 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6199
5d7d39ff
DH
62002003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6201
6202 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
6203
6204 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
6205 respective SLOPPY macro.
6206
baa84a20
DH
62072003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6208
6209 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
6210 type string, not SCM_TYP7S.
6211
ba15f500
KR
62122003-09-03 Kevin Ryde <user42@zip.com.au>
6213
6214 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
6215 2s-complement.
6216
53bb8782
KR
6217 * stime.c (scm_strptime): Add comment about glibc strptime %s and
6218 current timezone requiring SCM_DEFER_INTS.
6219
defdc4b4
NJ
62202003-08-30 Neil Jerram <neil@ossau.uklinux.net>
6221
6222 * script.c (scm_compile_shell_switches): Make -s switch optional
6223 if file to be loaded does not begin with a `-'. (Thanks to Aaron
6224 VanDevender for the patch!)
6225
0f008a15
KR
62262003-08-30 Kevin Ryde <user42@zip.com.au>
6227
6228 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
6229 and to have non-integer types rejected as per other logical funcs.
241d9cea 6230
438a3ba1
KR
62312003-08-28 Kevin Ryde <user42@zip.com.au>
6232
6233 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
6234
98dceb37
KR
62352003-08-23 Kevin Ryde <user42@zip.com.au>
6236
6237 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
6238 thread safe, and could take a long time too.
6239
1fa79a38
KR
62402003-08-22 Kevin Ryde <user42@zip.com.au>
6241
6242 * numbers.c (scm_difference): Correction to bignum - negative inum.
6243
d97f9b42
KR
62442003-08-14 Kevin Ryde <user42@zip.com.au>
6245
6246 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
6247 [__GNUC__]: Use volatile asm macros rather than a function call.
6248 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
6249 macros while defining functions.
6250
6251 * simpos.c (getenv): Use <stdlib.h> for prototype.
6252 (scm_system): In docstring, refer to status:exit-val rather than
6253 "functions above".
6254
b9052fcc
KR
62552003-08-09 Kevin Ryde <user42@zip.com.au>
6256
6257 * srcprop.c (scm_source_properties): Return plist from hash if it's a
6258 list set by source-properties! rather than an SRCPROPS object,
6259
8e5b4b9e
KR
62602003-07-29 Kevin Ryde <user42@zip.com.au>
6261
6262 * properties.c (scm_primitive_property_ref): In docstring, note
6263 parameters to not-found-proc, use hyphens rather than underscores for
6264 that parameter name.
6265 (scm_primitive_property_set_x): In docstring, VAL is the value
6266 parameter not CODE.
241d9cea 6267
20703ac4
MV
62682003-07-27 Marius Vollmer <mvo@zagadka.de>
6269
c6ccee34
MV
6270 * print.c (scm_print_symbol_name): handle more weird characters by
6271 escaping the symbol name properly. Thanks to Paul Jarc!
6272
2f4931bf
MV
6273 * posix.h (scm_setgroups): New prototype.
6274 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
6275 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
6276 Don't use SCM_WRITABLE_VELTS.
241d9cea 6277
265c456f
MV
6278 * gc.h (SCM_GC_SET_CELL_BVEC): New.
6279 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
6280 Matthias Koeppe!
6281
20703ac4
MV
6282 * __scm.h (SCM_C_INLINE_KEYWORD): New.
6283 * numbers.c: Use it in place of SCM_C_INLINE so that the code
6284 compiles when SCM_C_INLINE is undefined.
6285
59c4bb82
DH
62862003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6287
6288 * __scm.h: Reformulated the architecture and compiler properties
6289 in terms of properties of scm_t_bits and SCM variables rather than
6290 in terms of c standard types. This is since it is not known which
6291 of the standard types scm_t_bits and SCM variables will be defined
6292 to.
6293
d7850c8d
KR
62942003-07-24 Kevin Ryde <user42@zip.com.au>
6295
6296 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
6297 and real.
6298
8a0c514f
KR
62992003-07-18 Kevin Ryde <user42@zip.com.au>
6300
6301 * numbers.c (scm_product): In complex * bignum, correction to
6302 REAL/IMAG fetch, x is the complex, not y.
6303
0aacf84e
MD
63042003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6305
6306 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
6307 scm_inf_p test as Scheme values.
6308 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
6309 and a positive inum.
6310 Use GNU indentation style.
6311
192de9a4
DH
63122003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6313
6314 * values.c (scm_values): Build lists of length 1 by using
6315 scm_list_1 instead of using scm_cons.
6316
bbb4438a
KR
63172003-07-10 Kevin Ryde <user42@zip.com.au>
6318
b58c85ce
KR
6319 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
6320 * list.c (scm_list_n): Ditto.
6321
bbb4438a
KR
6322 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
6323
287f8ad1
KR
63242003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
6325
6326 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
6327 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
6328 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
6329 the other using intptr_t.
6330
005d2366
KR
63312003-07-08 Kevin Ryde <user42@zip.com.au>
6332
0aacf84e 6333 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
6334 (scm_magnitude): Use hypot.
6335
6336 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
6337 @footnote since it doesn't go through to guile-procedures.txt.
6338
6339 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
6340 outside @var to quieten makeinfo, and use @code.
6341
cbfe8e62
HWN
63422003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6343
6344 * gc-malloc.c (decrease_mtrigger): new function
6345 (increase_mtrigger): new function, separate debug registering and
6346 mtrigger administration.
6347 (scm_gc_realloc): bugfix: do mtrigger administration before the
6348 actual realloc, for the realloc might invalidate a GC-d segment of
6349 memory. Thanks to Sam Hocevar for pointing this out.
6350 (scm_gc_realloc): use scm_malloc_reregister instead of
6351 unregistering and registering in sequence.
6352
aeb4c2e1
HWN
63532003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6354
241d9cea 6355 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
aeb4c2e1 6356
4c27f8d2
HWN
63572003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6358
6359 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
6360 clauses.
241d9cea 6361
983e697d
MV
63622003-06-29 Marius Vollmer <mvo@zagadka.de>
6363
6364 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
6365 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
6366 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
6367 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
6368 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
6369 the release_1_6 branch.
6370
78b6566e
SJ
63712003-06-25 Stefan Jahn <stefan@lkcc.org>
6372
6373 * continuations.c: Redeclaration of getcontext() via the
6374 __asm__ ("getcontext") directive.
6375
241d9cea 6376 * continuations.h: Include <ucontext.h> instead of
78b6566e
SJ
6377 <sys/ucontext.h>.
6378
1ebb8497
KR
63792003-06-21 Kevin Ryde <user42@zip.com.au>
6380
6381 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
6382 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
6383 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
6384 available.
6385 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
6386 (isfinite): Remove, conflicts with C99 isfinite().
6387
fbf85ba4
MV
63882003-06-19 Marius Vollmer <mvo@zagadka.de>
6389
6390 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
6391 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
6392 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
6393 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
6394 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
6395 the release_1_6 branch.
6396
fcc5d734
SJ
63972003-06-14 Stefan Jahn <stefan@lkcc.org>
6398
6399 * threads.h: Redefined scm_getspecific() and scm_setspecific()
6400 to be functions instead of macros.
6401
6402 * threads.c: Conditionalized inclusion of <sys/time.h> and
6403 <unistd.h>.
6404 (scm_getspecific, scm_setspecific): Made these two function
6405 real part of the API.
6406
241d9cea 6407 * posix.c (s_scm_putenv): Added some code to make a
fcc5d734
SJ
6408 (putenv "FOO="), i.e. setting an empty string, work also on
6409 Win32 systems. Thanks to Kevin Ryde for the proposal.
6410
c3ae8e07
KR
64112003-06-12 Kevin Ryde <user42@zip.com.au>
6412
75b14838
KR
6413 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
6414 freebsd to comment about need to use unsetenv.
c3ae8e07 6415
9d9fa092
MV
64162003-06-02 Marius Vollmer <mvo@zagadka.de>
6417
6418 * ports.c (scm_peek_char): Safe the column of the port around the
6419 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
6420
f2478375
KR
64212003-06-07 Kevin Ryde <user42@zip.com.au>
6422
6423 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
6424 and friends required by scm_t_bits setups.
6425
6375e040
DH
64262003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6427
6428 * tags.h (scm_tc2_int): Added.
6429
6430 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
6431 scm_tc2_int.
6432
6433 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
6434 scm_tcs_closures): Hard coded values replaced by symbolic ones.
6435
f5c6ec2f
DH
64362003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6437
6438 * eval.c: Partially undid my patch from 2003-05-31. This patch
6439 caused the segfault referenced in the previous changelog entry.
6440
47dbd81e
DH
64412003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6442
6443 * tags.h: Fixed comment about the immediate type code layout.
6444
6445 * eval.c: Fixed handling of non-special instructions. Without
6446 this patch, guile will segfault on (#\0) and similar instructions.
6447
3ec52c51
KR
64482003-06-05 Kevin Ryde <user42@zip.com.au>
6449
6450 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
6451 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
6452
e418bd7c
KR
6453 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
6454 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
241d9cea 6455
d0624e39
DH
64562003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6457
6458 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
6459 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
6460 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
6461 generalized it to apply not only to C level functions but also to
6462 scheme level functions.
6463
6464 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
6465 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
6466 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
6467 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
6468 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
6469 respectively.
6470
6471 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
6472 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
6473 eval.h into eval.c and a copy is placed into deprecated.h.
6474
6475 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
6476 into eval.c. This definition was not part of the API in any
6477 officially released version of guile and thus does not need to go
6478 through a phase of deprecation.
6479
e90c3a89
DH
64802003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
6481
d0624e39
DH
6482 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
6483 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
6484 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
6485 definitions are make static and renamed from scm_s_xxx to s_xxx.
6486 In deprecated.c the original definitions are copied.
6487
d0624e39
DH
6488 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
6489 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
6490 eval.h into eval.c and a copy (slightly modified to work in user
6491 code) is placed into deprecated.h.
6492
6493 * eval.c: Use the local static s_xxx definitions instead of the
6494 scm_s_xxx definitions throughout.
6495
14b18ed6
DH
64962003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6497
6498 This set of patches separates the representation of the cxr family
6499 of functions (car, cdr etc.) from the dsubr family of functions
6500 (i. e. functions that take a double precision floating point
6501 argument). Further, the algorithm for handling the cxr function
6502 is improved.
6503
6504 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
6505 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
6506 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
6507 cosh, tanh), objects.c (scm_class_of), procprop.c
6508 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
6509 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
6510 typecode for the dsubr family of functions.
6511
6512 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
6513 ramap_dsubr.
6514
6515 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
6516 (scm_init_pairs): Make use of the (now usable) second cell element
6517 of a scm_tc7_cxr function to implement the cxr family of functions
6518 more efficiently.
6519
2ca0d207
DH
65202003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6521
6522 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
6523 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
6524 end of an if-else-if-sequence of checks.
6525
9a069bdd
DH
65262003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6527
6528 * eval.c (SCM_CEVAL): Improved readability of call-with-values
6529 execution. Generalize apply_closure to apply_proc and use that
6530 for call-with-values.
6531
e910e9d2
DH
65322003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6533
6534 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
6535 a non closure.
6536
1e498fbd
SJ
65372003-05-30 Stefan Jahn <stefan@lkcc.org>
6538
241d9cea 6539 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
1e498fbd
SJ
6540 appropriately for mingw32 hosts.
6541
6542 * numbers.h: Defining copysign(), isnan() and finite() to
6543 be prefixed by a single '_' for mingw32 hosts.
6544
c47e2599
KR
65452003-05-30 Kevin Ryde <user42@zip.com.au>
6546
6547 * numbers.c (z_negative_one): New variable.
6548 (scm_init_numbers): Initialize it.
6549 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
6550
2e945bcc
SJ
65512003-05-29 Stefan Jahn <stefan@lkcc.org>
6552
6553 * win32-dirent.c: Use malloc() instead of scm_malloc().
6554
6555 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
6556 warning.
6557
6558 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
6559 mingw32 build.
6560
6561 * modules.c (s_scm_module_import_interface): Renamed local
6562 variable interface to _interface. Seems like 'interface'
6563 is a special compiler directive for the mingw32 compiler.
6564
6565 * mkstemp.c: Provide prototype to avoid compiler warning.
6566
6567 * load.c (s_scm_search_path): Fixed absolute and relative
6568 path detections for native Windows platforms.
6569
241d9cea 6570 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
2e945bcc
SJ
6571 to build on mingw32).
6572
241d9cea 6573 * gc-freelist.c ("s_scm_map_free_list",
2e945bcc
SJ
6574 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
6575
241d9cea 6576 * fports.c (fport_fill_input): Disable use of
2e945bcc
SJ
6577 fport_wait_for_input() on Win32 platforms.
6578
6579 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
6580
6581 * Makefile.am: Modified some rules for cross compiling.
6582
ddd8f927
DH
65832003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6584
6585 * eval.c (SCM_CEVAL): In case of an application, all checks for a
6586 proper function object and the correct number of arguments are now
6587 performed in the application part of SCM_CEVAL.
6588
6589 (scm_badformalsp): Removed.
6590
f8ba2197
DH
65912003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6592
6593 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
6594
79f55b7c
MD
65952003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6596
a502595f
MD
6597 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
6598 always being false by inserting preprocessor conditional. (Thanks
6599 to Bruce Korb.)
6600
79f55b7c
MD
6601 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
6602 (void *) in order to avoid an aliasing warning; thanks to Bruce
6603 Korb.)
6604
6605 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
6606
6607 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
6608 SCM_STACK_PTR.
6609
6610 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
6611 thread->base --> t->base.
6612
6613 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
6614
47dee228
MV
66152003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6616
6617 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
6618 scm_variable_set_name_hint, scm_builtin_variable,
6619 scm_internal_with_fluids, scm_make_gsubr,
6620 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
6621 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
6622 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
6623 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
6624 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
6625 scm_make_subr_with_generic, scm_make_subr_opt,
6626 scm_call_catching_errors, scm_make_smob_type_mfpe,
6627 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
6628 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
6629 branch. Some have been slightly rewritten.
6630 (scm_i_object_chars, scm_i_object_length): New, to support
6631 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
241d9cea 6632
e681d187
DH
66332003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6634
6635 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
6636 names and inits in the memoized code of do.
6637
7e59d9d4
MD
66382003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6639
6640 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
6641 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
6642 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6643 a compilation error if error-on-warning is enabled).
6644
9950a42c
MV
66452003-05-17 Marius Vollmer <mvo@zagadka.de>
6646
6647 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6648 removes preprocessor directives from the snarfage that might
6649 otherwise confuse us. These directives appear when compiling with
6650 "-g3", for example.
6651
0068984b
HWN
66522003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6653
26e68795
HWN
6654 * ChangeLog: add my surname
6655
0068984b
HWN
6656 * srcprop.c (scm_finish_srcprop): use
6657 scm_gc_register_collectable_memory()
6658 (scm_make_srcprops): idem.
6659
131805f0
HWN
66602003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6661
6662 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6663 wrap-around for scm_mtrigger
6664 (scm_gc_register_collectable_memory): abort on overflowing
6665 scm_mallocated().
6666
d4611024
KR
66672003-05-13 Kevin Ryde <user42@zip.com.au>
6668
6669 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6670 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6671
7aaf8dc9
MD
66722003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6673
dfd03fb9
MD
6674 * backtrace.c (scm_display_error_message): Introduced fancy
6675 printing with max level 7 and length 10. (Purpose: avoid printing
6676 gigantic objects in error messages.)
6677
6678 * print.c, print.h (scm_i_port_with_print_state): New function.
6679
6680 * print.c (scm_iprin1, scm_printer_apply,
6681 scm_port_with_print_state): Use scm_i_port_with_print_state.
6682 (scm_simple_format): Modified not to destroy print states.
6683 (print_state_mutex): New mutex.
6684 (scm_make_print_state, scm_free_print_state, scm_prin1):
6685 Lock/unlock print_state_mutex.
241d9cea 6686
7aaf8dc9
MD
6687 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6688 Use current names in definitions.
6689
a4d9ffa1
KR
66902003-05-10 Kevin Ryde <user42@zip.com.au>
6691
6692 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6693
d25e96a4
KR
6694 * numbers.c (scm_integer_length): On negative bignums, adjust
6695 mpz_sizeinbase to account for it looking at absolute value where we
6696 want ones-complement.
6697
6698 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6699 since we're only using the ulong return value, and x might not fit.
6700
5bf6a6f0
DH
67012003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6702
6703 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6704 read. This will allow to make the definition in read.c static.
6705
f58c472a
DH
67062003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6707
6708 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6709 from evalext to eval. This will allow to make some of the
6710 definitions in eval.c static.
6711
90382aeb
KR
67122003-05-06 Kevin Ryde <user42@zip.com.au>
6713
6714 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6715 (scm_logcount): Use mpz_com, not mpz_neg.
6716
3b88ed2a
DH
67172003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6718
6719 The purpose of this patch is to make guile's internal memoizers
6720 distinguishable from memoizing macros created on the scheme level
6721 or from user provided primitive memoizing macros. The reason is,
6722 that the internal memoizers are the only ones that are allowed to
6723 transform their scheme input into memoizer byte code, while all
6724 other memoizing macros may only transform scheme code into new
6725 scheme code.
6726
6727 To achieve this, a new macro type 'builtin-macro!' is introduced.
6728 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6729 this will change when the memoizer and executor are separated.
6730
6731 * macros.[ch] (scm_i_makbimacro): New.
6732
6733 * macros.h (SCM_BUILTIN_MACRO_P): New.
6734
6735 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6736
6737 * eval.c, goops.c: All of guile's primitive memoizing macros are
6738 primitive builtin-macros now.
6739
6740 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6741 builtin-macros are handled equally to memoizing macros.
6742
b0780eb1
MV
67432003-05-04 Marius Vollmer <mvo@zagadka.de>
6744
6745 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6746 work around a bug in GCC 2.95.2 but is now a bug in itself.
6747
1cbf4fe9
MV
67482003-05-02 Marius Vollmer <mvo@zagadka.de>
6749
6750 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6751 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6752 scm_tcs_symbols): New.
6753
1a61d41b
MV
67542003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6755
096ecbaf
MV
6756 * deprecated.h, deprecated.c (scm_protect_object,
6757 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6758 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6759 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6760 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6761 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6762 scm_ptob_descriptor, scm_port_rw_active,
6763 scm_close_all_ports_except): New.
6764
1a61d41b
MV
6765 * ports.c (scm_c_port_for_each): New function, mostly copied from
6766 scm_port_for_each.
6767 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6768 * ports.h (scm_c_port_for_each): New prototype.
241d9cea 6769
c8e1d354
MD
67702003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6771
6772 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6773 macro was introduced in anticipation of GOOPS method compilation
6774 code.)
6775
6776 * goops.c: Removed binding of @dispatch.
6777
a4aa2134
DH
67782003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6779
6780 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6781 instructions that bind the macros on the scheme level back to
6782 goops.c in order to make sure again that the bindings go into the
6783 (oop goops) module and are not visible from the outside.
6784
9fbee57e
DH
67852003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6786
6787 * eval.c: Non functional change: Separated R5RS and non-R5RS
6788 macros into different sections of the file and ordered the
6789 memoizers alphabetically.
6790
12841895
DH
67912003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6792
6793 * eval.c (scm_ilookup): Rewritten to improve readability.
6794
6a3f13f0
DH
67952003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6796
6797 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6798 Partially reverted patch from 2003-04-23 in oder to find a better
6799 compromise between readability and debuggability.
6800
b0c5d67b
DH
68012003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6802
6803 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6804 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6805 definitions of the special goops memoizers from goops.[ch] to
6806 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6807 throughout guile.
6808
b9ad392e
MD
68092003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6810
6811 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6812
6813 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6814
6815 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6816
6817 * ioext.c (scm_fdes_to_ports): Ditto.
6818
6819 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6820 lock/unlock scm_i_port_table_mutex.
6821
6822 * strports.c (scm_mkstrport): Ditto.
6823
6824 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6825
6826 * fports.c (scm_fdes_to_port): Ditto.
6827
d0b07b5d
DH
68282003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6829
6830 This set of patches contains no functional changes, only debatable
6831 minor stylistic ones. Still, in order to prepare a patch between
6832 my local copy and the CVS version, I decided to submit the changes
6833 below. Then, the patch will hopefully only contain relevant
6834 modifications :-)
6835
6836 * eval.c (iqq): Added const specifier.
6837
6838 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6839 Use NULL instead of 0 to indicate that a pointer is returned.
6840 Removed some misleading 'fall through' comments.
6841
6842 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6843 Split up long expressions into smaller ones to be more debugging
6844 friendly.
6845
a98e8e98
DH
68462003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6847
6848 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6849 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6850 rather than casting to SCM.
6851
c178c3a6
DH
68522003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6853
6854 * sort.c, pairs.h: Removed unnecessary includes.
6855
d339981a
DH
68562003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6857
6858 * sort.c: Replaced hand-made trampline code by the new official
6859 mechanism from eval.c. This fixes a segfault in the new test file
6860 sort.test.
6861
6862 (quicksort, compare_function, scm_restricted_vector_sort_x,
6863 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6864 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6865 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6866 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6867 eval.c.
6868
6869 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6870 cmp_fun_t): Removed.
6871
6872 (compare_function): Added.
6873
6874 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6875 arithmetics with index arithmetics. Changed quicksort to work on
6876 an array of SCM values instead of an array of characters. Avoid
6877 bytewise copying of SCM elements. Avoid allocating memory on the
6878 stack with alloca. Fixed some comments.
6879
821f18a4
DH
68802003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6881
6882 * eval.c (EXTEND_ENV): Eliminated.
6883
6884 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6885 EXTEND_ENV.
6886
94fb5a6e
DH
68872003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6888
6889 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6890
6891 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6892 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6893
6894 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6895 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6896 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6897 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6898 functions such that they check if the object is a non-immediate.
6899 Further, renamed identifiers to use the scm_dbg_ prefix and made
6900 their inclusion into the lib dependent of the
6901 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6902
fce0b22d
DH
69032003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6904
6905 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6906 debug option.
6907
1685446c
DH
69082003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6909
821f18a4 6910 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
6911 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6912 any calls to SCM_NCONSP any more.
6913
6914 * unif.c (l2ra): Eliminate redundant check.
6915
9ff1720f
DH
69162003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6917
6918 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6919 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6920 SCM_NNULLP. Now, guile itself does not include any calls to
6921 SCM_NNULLP any more.
6922
05b15362
DH
69232003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6924
6925 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6926 scm_copy_tree): Place assignment expressions which are part of
6927 other expressions into an expression of their own.
6928
0c88d7df
DH
69292003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6930
6931 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6932 compare SCM values with !=.
6933
5cb22e96
DH
69342003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6935
6936 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6937 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6938 and definition of the memoizer for the generalized set! macro from
6939 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6940 define the macro object.
6941
6942 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6943 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6944 eval.c, it is made static and renamed to s_set_x.
6945
6946 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6947 over SCM_N<foo>.
6948
a44a9715
DH
69492003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6950
6951 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6952 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6953 to undefineds and registered the object as a permanent object.
6954
6955 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6956 static in eval.c, renamed it to f_apply and registered the object
6957 as a permanent object.
6958
1b43d24c
DH
69592003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6960
5cb22e96 6961 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
6962 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6963
aec16f99
DH
69642003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6965
6966 * numbers.c (scm_logtest): Fixed argument bug in the call to
6967 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6968
f96460ce
DH
69692003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6970
6971 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6972 type errors that showed up when compiling with SCM_DEBUG defined.
6973
d0f6ceb8
DH
69742003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6975
6976 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6977 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6978 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6979 fix compile errors with --disable-deprecated.
6980
19a7a089
RB
69812003-04-17 Rob Browning <rlb@defaultvalue.org>
6982
6983 * numbers.c (scm_integer_expt): fix case where we were declaring
6984 vars in the middle of a statement block. Thanks to Thamer
6985 Al-Harbash.
6986
47cd67db
MD
69872003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6988
0fd7dcd3
MD
6989 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6990 change.
6991
47cd67db
MD
6992 * eq.c (scm_eqv_p): Turned into a primitive generic.
6993
3b8b889c
RB
69942003-04-16 Rob Browning <rlb@defaultvalue.org>
6995
312006bb
RB
6996 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6997 Thanks to Boyd Gerber.
6998 Added check for __arm__ in addition to arm for LINUX and copied
6999 __s390__ defines from upstream libgc. Thanks to James Treacy for
7000 reporting the problems.
c7ef2ea1 7001
3b8b889c
RB
7002 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
7003
7004 * socket.c: use SCM_CHAR_BIT.
7005
7006 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
7007
7008 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
7009
43261b39
MD
70102003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7011
7012 * feature.c (scm_init_feature): Always add threads feature.
7013
58241edc
MD
70142003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7015
7016 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
7017 scm_at_assert_bound_ref. (We don't want the unbound check. See
7018 oop/goops/active-slot.scm.)
7019
94e91275
RB
70202003-04-14 Rob Browning <rlb@defaultvalue.org>
7021
7022 * tags.h: scm_t_intptr should have been intptr_t.
7023
3071ea27
RB
70242003-04-13 Rob Browning <rlb@defaultvalue.org>
7025
7026 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
7027 test. Instead use
7028 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
7029 as gc_os_dep.c suggests is appropriate.
7030
7031 * goops.c (prep_hashsets): make static to match prototype.
7032 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
7033 Chin.
241d9cea 7034
3071ea27
RB
7035 * c-tokenize.lex: remove trailing comma from enum. Thanks to
7036 Albert Chin.
7037
7038 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
7039 Klausner.
7040
21ab2aeb
MD
70412003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7042
7043 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
7044 indicated through extra fields in getters-n-setters.
7045 (scm_add_slot): Adapted to new format of getters_n_setters slot.
7046 (Thanks to Andy Wingo.)
7047
dff96e95
HWN
70482003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7049
7050 * gc-segment.c: add comment
7051
07921c76
RB
70522003-04-07 Rob Browning <rlb@defaultvalue.org>
7053
b5331f10
RB
7054 * debug.h: change "id" arg name to "info_id" to avoid objective-c
7055 clash.
7056
07921c76
RB
7057 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
7058 and add regression test to standalone/.
7059
70602003-04-06 Rob Browning <rlb@defaultvalue.org>
7061
7062 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
7063 Thanks to Dale P. Smith.
7064
7065 * random.c: #include gmp.h.
7066 (scm_c_random_bignum): normalize result on return.
7067
7068 * init.c: #include gmp.h.
7069
7070 * numbers.h: remove the gmp.h #include (not needed now).
7071
7072 * posix.h: change occurences of "id" to something else so we don't
7073 cause trouble when included via objective-c (can't hurt, might
7074 help). Still have usage in debug.h, though.
7075
938f6b7c
MD
70762003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7077
372691d8
MD
7078 * random.c (scm_c_random_bignum): Don't generate a random number
7079 equal to m (the second argument of scm_c_random_bignum); only
7080 generate numbers in the range 0 <= r < m.
c5f268f8
MD
7081 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
7082 scm_var_random_state.
372691d8 7083
938f6b7c
MD
7084 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
7085 clause.
7086
6cdb8c3f
RB
70872003-04-05 Rob Browning <rlb@defaultvalue.org>
7088
938f6b7c 7089 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
7090 uses before any code.
7091
15635be5
MD
70922003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7093
1ecfd013
MD
7094 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
7095 not top_srcdir.
7096
15635be5
MD
7097 * hashtab.c (rehash_after_gc): Clear to_rehash list before
7098 processing it in order to avoid an infinite loop.
7099
7100 * print.c (scm_prin1): Remember old state of pstate->writingp.
7101
73be1d9e
MV
71022003-04-05 Marius Vollmer <mvo@zagadka.de>
7103
7104 * Changed license terms to the plain LGPL thru-out.
7105
ad815c06
RB
71062003-04-04 Rob Browning <rlb@defaultvalue.org>
7107
7108 * socket.c (FLIPCPY_NET_HOST_128): new macro.
7109 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
7110 rewrite to handle GMP bignums.
7111
7112
7113 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
7114
7115 * ports.c (scm_getc): minor tweak.
7116
7117 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
7118 rewrite to handle GMP bignums.
7119
7120 * numbers.c: rewrite *many* functions to handle GMP bignums.
7121
7122 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
7123 handle GMP bignums.
7124
7125 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
7126
7127 * init.c (check_config): remove SCM_BIGDIG conditionals.
7128 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
7129
7130 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
7131
7132 * eval.c: remove SCM_BIGDIG conditionals.
7133
7134 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
7135
6cdb8c3f
RB
71362003-03-31 Rob Browning <rlb@defaultvalue.org>
7137
7138 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
7139 to Kevin Ryde.)
7140
71412003-03-27 Rob Browning <rlb@defaultvalue.org>
7142
7143 * threads.h: fix various preprocessor usages of new public
7144 symbols to expect 0 or 1 values rather than 1 or undefined.
7145 i.e. change #ifdef to #if, etc.
7146
7147 * threads.c: fix various preprocessor usages of new public
7148 symbols to expect 0 or 1 values rather than 1 or undefined.
7149 i.e. change #ifdef to #if, etc.
7150
7151 * tags.h: fix various preprocessor usages of new public
7152 symbols to expect 0 or 1 values rather than 1 or undefined.
7153 i.e. change #ifdef to #if, etc.
7154
7155 * stacks.c: fix various preprocessor usages of new public
7156 symbols to expect 0 or 1 values rather than 1 or undefined.
7157 i.e. change #ifdef to #if, etc.
7158
7159 * stackchk.h: fix various preprocessor usages of new public
7160 symbols to expect 0 or 1 values rather than 1 or undefined.
7161 i.e. change #ifdef to #if, etc.
7162
7163 * stackchk.c: fix various preprocessor usages of new public
7164 symbols to expect 0 or 1 values rather than 1 or undefined.
7165 i.e. change #ifdef to #if, etc.
7166
7167 * sort.c: fix various preprocessor usages of new public
7168 symbols to expect 0 or 1 values rather than 1 or undefined.
7169 i.e. change #ifdef to #if, etc.
7170
7171 * read.c: fix various preprocessor usages of new public
7172 symbols to expect 0 or 1 values rather than 1 or undefined.
7173 i.e. change #ifdef to #if, etc.
7174
7175 * random.c: fix various preprocessor usages of new public
7176 symbols to expect 0 or 1 values rather than 1 or undefined.
7177 i.e. change #ifdef to #if, etc.
7178
7179 * print.c: fix various preprocessor usages of new public
7180 symbols to expect 0 or 1 values rather than 1 or undefined.
7181 i.e. change #ifdef to #if, etc.
7182
7183 * objects.c: fix various preprocessor usages of new public
7184 symbols to expect 0 or 1 values rather than 1 or undefined.
7185 i.e. change #ifdef to #if, etc.
7186
7187 * numbers.h: fix various preprocessor usages of new public
7188 symbols to expect 0 or 1 values rather than 1 or undefined.
7189 i.e. change #ifdef to #if, etc.
7190
7191 * null-threads.c: fix various preprocessor usages of new public
7192 symbols to expect 0 or 1 values rather than 1 or undefined.
7193 i.e. change #ifdef to #if, etc.
7194
7195 * lang.c: fix various preprocessor usages of new public
7196 symbols to expect 0 or 1 values rather than 1 or undefined.
7197 i.e. change #ifdef to #if, etc.
7198
7199 * lang.h: fix various preprocessor usages of new public
7200 symbols to expect 0 or 1 values rather than 1 or undefined.
7201 i.e. change #ifdef to #if, etc.
7202
7203 * iselect.h: fix various preprocessor usages of new public
7204 symbols to expect 0 or 1 values rather than 1 or undefined.
7205 i.e. change #ifdef to #if, etc.
7206
7207 * init.c: fix various preprocessor usages of new public
7208 symbols to expect 0 or 1 values rather than 1 or undefined.
7209 i.e. change #ifdef to #if, etc.
7210
7211 * gh_data.c: fix various preprocessor usages of new public
7212 symbols to expect 0 or 1 values rather than 1 or undefined.
7213 i.e. change #ifdef to #if, etc.
7214
7215 * gh.h: fix various preprocessor usages of new public
7216 symbols to expect 0 or 1 values rather than 1 or undefined.
7217 i.e. change #ifdef to #if, etc.
7218
7219 * gen-scmconfig.c: change most new public symbols to be defined to
7220 0 or 1 rather than being either 1 or undefined.
7221
7222 * gc_os_dep.c: fix various preprocessor usages of new public
7223 symbols to expect 0 or 1 values rather than 1 or undefined.
7224 i.e. change #ifdef to #if, etc.
7225 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
7226
7227 * gc.h: fix various preprocessor usages of new public
7228 symbols to expect 0 or 1 values rather than 1 or undefined.
7229 i.e. change #ifdef to #if, etc.
7230
7231 * gc-card.c: fix various preprocessor usages of new public
7232 symbols to expect 0 or 1 values rather than 1 or undefined.
7233 i.e. change #ifdef to #if, etc.
7234
7235 * gc-mark.c: fix various preprocessor usages of new public
7236 symbols to expect 0 or 1 values rather than 1 or undefined.
7237 i.e. change #ifdef to #if, etc.
7238
7239 * feature.c: fix various preprocessor usages of new public
7240 symbols to expect 0 or 1 values rather than 1 or undefined.
7241 i.e. change #ifdef to #if, etc.
7242
7243 * evalext.c: fix various preprocessor usages of new public
7244 symbols to expect 0 or 1 values rather than 1 or undefined.
7245 i.e. change #ifdef to #if, etc.
7246
7247 * eval.h: fix various preprocessor usages of new public
7248 symbols to expect 0 or 1 values rather than 1 or undefined.
7249 i.e. change #ifdef to #if, etc.
7250
7251 * eval.c: fix various preprocessor usages of new public
7252 symbols to expect 0 or 1 values rather than 1 or undefined.
7253 i.e. change #ifdef to #if, etc.
7254
7255 * eq.c: fix various preprocessor usages of new public
7256 symbols to expect 0 or 1 values rather than 1 or undefined.
7257 i.e. change #ifdef to #if, etc.
7258
7259 * coop.c: fix various preprocessor usages of new public
7260 symbols to expect 0 or 1 values rather than 1 or undefined.
7261 i.e. change #ifdef to #if, etc.
7262
7263 * coop-threads.c: fix various preprocessor usages of new public
7264 symbols to expect 0 or 1 values rather than 1 or undefined.
7265 i.e. change #ifdef to #if, etc.
7266
7267 * coop-pthreads.c: fix various preprocessor usages of new public
7268 symbols to expect 0 or 1 values rather than 1 or undefined.
7269 i.e. change #ifdef to #if, etc.
7270
7271 * coop-defs.h: fix various preprocessor usages of new public
7272 symbols to expect 0 or 1 values rather than 1 or undefined.
7273 i.e. change #ifdef to #if, etc.
7274
7275 * convert.i.c: fix various preprocessor usages of new public
7276 symbols to expect 0 or 1 values rather than 1 or undefined.
7277 i.e. change #ifdef to #if, etc.
7278
7279 * continuations.c: fix various preprocessor usages of new public
7280 symbols to expect 0 or 1 values rather than 1 or undefined.
7281 i.e. change #ifdef to #if, etc.
7282
7283 * _scm.h: fix various preprocessor usages of new public symbols to
7284 expect 0 or 1 values rather than 1 or undefined. i.e. change
7285 #ifdef to #if, etc.
7286
d11d697a
MV
72872003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7288
9686f86d
MV
7289 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
7290
7291 * deprecated.c, deprecated.h: New files, to collect deprecated
7292 things in one place.
7293 * Makefile.am: Added them in all the right places.
7294
d11d697a
MV
7295 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
7296 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
7297 builds work.
9686f86d
MV
7298 (DOT_X_FILES): Removed "iselect.x".
7299 (DOT_DOC_FILES): Removed "iselect.doc".
241d9cea 7300
e3c0c3b9
RB
73012003-03-25 Rob Browning <rlb@defaultvalue.org>
7302
7303 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
7304 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
7305
7306 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
7307
7308 * vports.c: #include <config.h> if HAVE_CONFIG_H.
7309
7310 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
7311 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7312
7313 * threads.h: replace usage of struct timespect with
7314 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
7315 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
7316 favor of scm_t_timespec from scmconfig.h.
7317
7318 * threads.c: move libguile/_scm.h include to the top so we pick up
7319 any critical defines like _GNU_SOURCE early. Replace usage of
7320 struct timespect with scm_t_timespec. Replace usage of
7321 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
7322 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
7323
7324 * threads-plugin.h: replace usage of struct timespect with
7325 scm_t_timespec.
7326
7327 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
7328 usage of struct timespect with scm_t_timespec.
7329
7330 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
7331 HAVE_INTTYPES_H handling to scmconfig.h. #include
7332 "libguile/__scm.h". Rework handling for scm_t_bits,
7333 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
7334 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
7335 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
7336 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
7337 SCM_HAVE_ARRAYS.
7338
7339 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
7340
7341 * struct.c: #include <config.h> if HAVE_CONFIG_H.
7342
7343 * strports.c: #include <config.h> if HAVE_CONFIG_H.
7344
7345 * strop.c: #include <config.h> if HAVE_CONFIG_H.
7346
7347 * stime.h: move handling of time related headers to scmconfig.h.
7348
7349 * stime.c: #include <config.h> if HAVE_CONFIG_H.
7350
7351 * stacks.c: replace usage of STACK_GROWS_UP with
7352 SCM_STACK_GROWS_UP.
7353
7354 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7355 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7356
7357 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7358 of uint32 and HAVE_UINT_32 with scm_t_int32.
7359
7360 * smob.c: #include <config.h> if HAVE_CONFIG_H.
7361
7362 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
7363
7364 * script.c: #include <config.h> if HAVE_CONFIG_H.
7365
7366 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
7367
7368 * scmconfig.h.top: new file -- preamble for scmconfig.h.
7369
7370 * rw.c: #include <config.h> if HAVE_CONFIG_H.
7371
7372 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
7373
7374 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7375
7376 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
7377
7378 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7379 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
7380 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
7381 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7382
7383 * ramap.c: replace usage of HAVE_LONG_LONGS with
7384 "SCM_SIZEOF_LONG_LONG != 0".
7385
7386 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
7387 "libguile/scmconfig.h".
7388
7389 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
7390
7391 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7392 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7393
7394 * posix.c: #include <config.h> if HAVE_CONFIG_H.
7395
7396 * ports.c: #include <config.h> if HAVE_CONFIG_H.
7397
7398 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7399
7400 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
7401 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
7402 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
7403 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
7404 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
7405 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
7406 "SCM_SIZEOF_LONG_LONG != 0".
7407
7408 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7409 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
7410 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
7411 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
7412
7413 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
7414
7415 * null-threads.h: replace usage of struct timespect with
7416 scm_t_timespec.
7417
7418 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
7419
7420 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
7421 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
7422 scm_t_uint64 and rename usages.
7423
7424 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
7425
7426 * load.c: #include <config.h> if HAVE_CONFIG_H.
7427
7428 * iselect.h: move handling of time related headers to scmconfig.h.
7429 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
7430 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
7431 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
7432
7433 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7434 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7435 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7436
7437 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
7438
7439 * inline.h: #include "libguile/__scm.h" at the top. Change code
7440 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
7441 what to do instead of creating a new public #define. Rename usage
7442 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7443 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
7444 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
7445
7446 * inline.c: rearrange handling -- now we just #define
7447 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
7448 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
7449 appropriate, and we use that in inline.h along with the above
7450 define to determine how to respond.
7451
7452 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7453 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7454
7455 * guile.c: #include <config.h> if HAVE_CONFIG_H.
7456
7457 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7458 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7459
7460 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7461
7462 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
7463
7464 * gen-scmconfig.c: new file -- see comments in file for details.
7465
7466 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
7467
7468 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
7469 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7470
7471 * gc.h: replace usage of SIZEOF_LONG with
7472 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
7473 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
7474 since we handle that in scmconfig.h now.
7475
7476 * gc.c: #include <config.h> if HAVE_CONFIG_H.
7477
7478 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7479 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
7480 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7481
7482 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
7483
7484 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7485 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7486
7487 * fports.c: #include <config.h> if HAVE_CONFIG_H.
7488
7489 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
7490
7491 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7492 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7493
7494 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
7495
7496 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7497 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7498
7499 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
7500 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
7501 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7502 with "SCM_SIZEOF_LONG_LONG != 0".
7503
7504 * error.c: #include <config.h> if HAVE_CONFIG_H.
7505
7506 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7507 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7508 with "SCM_SIZEOF_LONG_LONG != 0".
7509
7510 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
7511
7512 * coop.c: replace usage of struct timespect with scm_t_timespec.
7513 #include <config.h> if HAVE_CONFIG_H.
7514
7515 * coop-threads.c: #include "libguile/_scm.h" early. Replace
7516 usage of struct timespect with scm_t_timespec. Replace usage of
7517 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7518
7519 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
7520 usage of struct timespect with scm_t_timespec. Replace usage of
7521 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7522
7523 * coop-defs.h: move handling of time related headers to
7524 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
7525 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
7526 timespect with scm_t_timespec.
7527
7528 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7529
7530 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7531
7532 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7533 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7534
7535 * continuations.c: move libguile/_scm.h include to the top so we
7536 pick up any critical defines like _GNU_SOURCE early.
7537
7538 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
7539
7540 * async.c: #include <config.h> if HAVE_CONFIG_H.
7541
7542 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
7543
7544 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
7545 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
7546
7547 * __scm.h: move libguile/scmconfig.h include up to the top, so
7548 we're sure to pick up any critical defines like _GNU_SOURCE early.
7549 #include <limits.h> removed in favor of scmconfig.h inclusion when
7550 appropriate. STDC_HEADERS based inclusion of stdlib.h,
7551 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
7552 scmconfig.h inclusion when appropriate. Various Win32 related
7553 definitions removed in favor of scmconfig.h inclusion when
7554 appropriate.
7555 (HAVE_UINTPTR_T): definition removed (see NEWS).
7556 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
7557 (HAVE_LONG_LONGS): definition removed (see NEWS).
7558 (HAVE_LONG_LONG): definition removed (see NEWS).
7559 (HAVE_PTRDIFF_T): definition removed (see NEWS).
7560
7561 * Makefile.am: scmconfig.h is now generated by building and
7562 running gen-scmconfig.h and capturing its output. gen-scmconfig
7563 uses config.h and the configure.in generated gen-scmconfig.h to
7564 decide what to output. See gen-scmconfig.c for details.
7565 (noinst_PROGRAMS): add gen-scmconfig.
7566 (gen_scmconfig_SOURCES): new variable.
7567 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
7568 cross-compiling right.
7569 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
7570 (BUILT_SOURCES): add scmconfig.h.
7571
25e0bf97
MV
75722003-03-19 Marius Vollmer <mvo@zagadka.de>
7573
7574 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
7575 Adrian Bunk. Thanks!
7576
74b6d6e4
MD
75772003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7578
7579 * goops.c (make_class_from_template): New fourth arg:
7580 applicablep.
7581 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
7582 cpls.
7583
7584 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
7585
7586 * goops.c, objects.c, objects.h (scm_make_extended_class): New
7587 second arg: applicablep.
7588 (scm_i_inherit_applicable): New function.
7589
7590 * goops.c, goops.h (scm_class_applicable,
7591 scm_class_extended_accessor): New classes.
7592
5c9e7dad
DH
75932003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7594
7595 * procs.c (scm_procedure_documentation): Removed redundant
7596 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
7597 predicates.
7598
f8af5c6d
MD
75992003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7600
c614a00b
MD
7601 * list.c, list.h (scm_filter, scm_filter_x): New functions.
7602
109c2c9f
MD
7603 * modules.c (scm_module_import_interface): New function.
7604
f8af5c6d
MD
7605 * goops.c, goops.h (scm_class_accessor_method): Renamed from
7606 scm_class_accessor.
7607 (scm_class_accessor): New class.
7608
a48d60b1
MD
76092003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7610
7611 * goops.c (scm_primitive_generic_generic): Enable primitive
7612 generic if not enabled.
7613 (scm_sys_goops_loaded): Setup unextended primitive generics.
7614
7615 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
7616
7617 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
7618 snarf macros.
7619
7620 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
7621 testing example. All uses of SCM_GPROC should be converted.)
7622
7623 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
7624 scm_assoc.
7625
7626 * eq.c (scm_equal_p): Turned into a primitive generic.
7627
84edc049
RB
76282003-02-27 Rob Browning <rlb@defaultvalue.org>
7629
7630 * Makefile.am (scmconfig.h): new target -- generate file from
7631 ../config.h.
7632 (modinclude_HEADERS): remove version.h.
7633 (nodist_modinclude_HEADERS): add version.h.
7634
ea5c9285
MD
76352003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7636
b4a1358c
MD
7637 This fixes a serious GC bug, introduced during the latest
7638 reorganization of the GC, which disabled freeing of structs and
7639 GOOPS objects:
7640
7641 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
7642 SCM_EOL.
53af8255
MD
7643 (scm_struct_prehistory): Move scm_free_structs to
7644 scm_before_mark_c_hook.
ea5c9285 7645
b4a1358c
MD
7646 * gc-card.c (sweep_card): Check that we haven't swept structs on
7647 this card before. That can happen if scm_i_sweep_all_segments has
7648 been called from some other place than scm_igc.
7649
c35738c1
MD
76502003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7651
231a4ea8
MD
7652 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7653 (since hash tables now adapt their size).
7654
7655 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7656 (current number of prehistory bindings; hashtable code will select
7657 a prime which is greater than this value).
7658
7659 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7660 (current number of initial symbols).
7661
7662 * properties.c (scm_init_properties): Don't specify size of
7663 scm_properties_whash.
7664
7665 * objprop.c (scm_init_objprop): Don't specify size of
7666 scm_object_whash.
7667
7668 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7669
c35738c1
MD
7670 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7671
7672 The following changes introduce the use of resizable hash tables
7673 throughout Guile. It also renames the old *-hash-table* functions
7674 to *-alist-vector* and places them, together with the rest of the
7675 weak vector support, in the module (ice-9 weak-vector). We should
7676 probably introduce a new, better, API for weak references, for
7677 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7678 look like and are used like ordinary pairs.)
7679
7680 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7681 leaf_environment_fold, obarray_remove_all): Use hashtable
7682 accessors.
7683
7684 * gc.c (scm_init_storage): Moved hook initialization to
7685 scm_storage_prehistory.
7686 (scm_storage_prehistory): New function.
7687 (scm_igc): Added commentary about placement of
7688 scm_after_sweep_c_hook.
7689
7690 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7691 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7692 SCM_WVECT_WEAK_VALUE_P.
7693
7694 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7695 functions.
7696 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7697 Removed.
7698 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7699 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7700
7701 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7702 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7703
7704 * modules.c (module-reverse-lookup): Use hashtable accessors.
7705
7706 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7707
7708 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7709 scm_make_weak_value_alist_vector,
7710 scm_make_doubly_weak_alist_vector): New functions.
7711
7712 * weaks.c (scm_init_weaks_builtins): New function.
7713
7714 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7715 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7716 SCM_WVECT_NOSCAN_P): New macros.
7717
7718 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7719 and SCM_WVECT_WEAK_VALUE_P.
7720
7721 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7722 allocate_weak_vector and exported.
7723
0a4c1355
MD
77242003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7725
7726 * hashtab.c: Undid thread safety. (We decided that it's better to
7727 let the user explicitly protect the tables (or not) according what
7728 is suitable for the application.)
7729
87ca11ff
MD
77302003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7731
7732 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7733 thread safe and handle resizing tables.
7734 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7735 SCM_DEFER/ALLOW_INTS.
7736
f59a096e
MD
77372003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7738
7739 * hashtab.c (scm_vector_to_hash_table,
7740 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7741 functions.
7742 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7743 safe and handle resizing tables.
7744
7745 * weaks.c (scm_make_weak_key_hash_table,
7746 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7747 Size argument made optional. Return resizable table if not
7748 specified.
7749
4b612c5b
MD
77502003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7751
7752 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7753 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7754
b3d7f6df
MD
77552003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7756
7757 * debug.c (scm_procedure_source): Handle all objects for which
7758 procedure? is #t. (Thanks to Bill Schottstaedt.)
7759
756414cf
MD
77602003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7761
361d631f
MD
7762 * futures.c (mark_futures): Don't need to mark data of recycled
7763 futures.
7764 (scan_futures, cleanup_undead): Be smarter about marking
7765 futures---avoid unnecessary passes through future lists.
7766
756414cf
MD
7767 * futures.h, futures.c: New files; Introduced recycling of
7768 futures. For fine-grained threading this lifts performance to
7769 another level. We can now use parallelization in inner loops of
7770 Guile programs without impossible overhead.
7771
7772 * threads.h, threads.c: Moved futures to their own file.
7773
7774 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7775 (DOT_X_FILES): Added futures.x.
7776 (DOT_DOC_FILES): Added futures.doc.
7777 (modinclude_HEADERS): Added futures.h.
7778
7779 * threads.c, threads.h (scm_i_create_thread): Renamed from
7780 create_thread and made global.
7781
7782 * futures.c (scm_make_future): New procedure.
7783
7784 * eval.c: #include "libguile/futures.h".
7785
7786 * init.c: #include "futures.h"
7787 (scm_init_guile_1): Call scm_init_futures.
7788
7789 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7790
7791 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7792
7793 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7794 functions.
7795
7796 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7797
b4debead
MD
77982003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7799
7800 * threads.c (create_thread): Don't unwind dynwind chain of parent
7801 thread before creation. Just start the new thread with an empty
7802 dynwind chain.
7803
93f26b7b
MD
78042003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7805
7806 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7807
38d8927c
MD
78082003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7809
41c96c32
MD
7810 * threads.c (scm_timed_wait_condition_variable): Support timed
7811 waiting also for simple condition variables.
7812
38d8927c
MD
7813 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7814 of calling the procedure change-object-class.
7815
9cf5d9b7
MD
78162003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7817
7818 * ramap.c (scm_ramapc): Typo in error message.
7819
bbf8d523
MD
78202003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7821
b46fae00
MD
7822 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7823 slots with instance allocation.
241d9cea 7824
bbf8d523
MD
7825 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7826 class.
7827 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7828
7829 * goops.c (scm_generic_function_methods): Support extended
7830 generic functions.
7831
ebf9b47c
MD
78322002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7833
7834 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 7835 Thanks to Neil for pointing this out!
ebf9b47c 7836
14a9ba3f
NJ
78372002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7838
7839 * lang.h: Remove declarations matching definitions removed from
7840 lang.c (just below).
7841
c6a040a8
NJ
78422002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7843
6054d805
NJ
7844 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7845 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7846 and already commented out.
7847
c6a040a8
NJ
7848 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7849 scm_lreadparen): Support reading vectors with Elisp syntax if
7850 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7851 is not currently defined, and there isn't even a configure switch
7852 to enable it yet.)
7853
3742c12f
MV
78542002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7855
7856 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7857 builds work.
7858 (EXTRA_DIST): Added version.h.in.
241d9cea 7859
fb50ef08
MD
78602002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7861
7862 This change makes it possible for one thread to do lazy sweeping
7863 while other threads are running. Now only the mark phase need to
7864 have all threads asleep. We should look further into this issue.
7865 Presently, I've put the locking of scm_i_sweep_mutex at
7866 "conservative" places due to my current lack of knowledge about
7867 the garbage collector. Please feel free to restrict these regions
7868 further to allow for maximal parallelism!
7869
7870 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7871
7872 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7873 scm_gc_register_collectable_memory): Substitute locking of
7874 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7875 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7876 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7877 the single-thread section (which now only contains the mark
7878 phase).
7879 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7880 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7881
7882 * threads.c (gc_section_mutex): Removed.
7883
9ed24633
MD
78842002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7885
0d48aca5
MD
7886 * threads.c (create_thread): Clear parent field in root state in
7887 order not to unnecessarily remember dead threads.
7888
9ed24633
MD
7889 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7890 (scm_trampoline_1, scm_trampoline_2): Use them.
7891
29717c89
MD
78922002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7893
7894 Partial introduction of real plugin interface.
7895
7896 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7897 (EXTRA_DIST): Added threads-plugin.c.
7898
7899 * threads-plugin.h, threads-plugin.c: New files.
7900
7901 * threads.h: #include "libguile/threads-plugin.h".
7902
7903 * threads.c: #include "libguile/threads-plugin.c".
7904
7905 * pthread-threads.c: Temporarily remove debugging functions.
7906
7907 * threads.c, threads.h (scm_yield): Added back.
7908
e29e0b09
MD
79092002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7910
7911 * threads.c (really_launch): Detach before unlocking
7912 thread_admin_mutex in order not to risk being joined.
7913 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7914 thread_admin_mutex locked during GC.
7915
7916 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7917 functions.
7918
0b6843b1 79192002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 7920
6da2dfc4
MD
7921 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7922 support for debugging mutex operations.
7923
1b92fb6b
MD
7924 * threads.c (scm_thread): Removed filed joining_threads.
7925 (thread_print): Print thread number as well as address of thread
7926 structure.
0b6843b1
MD
7927 (scm_join_thread): Bugfix.
7928 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7929 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7930 scm_broadcast_condition_variable): Use the low-level API.
7931 (scm_all_threads): Return copy of thread list (to prevent
7932 unintended destruction).
7933 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 7934
93cd4dcd
MD
7935 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7936 pthread "native" recursive mutex support.
7937
2ff4f181
MD
79382002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7939
28d52ebb
MD
7940 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7941 Simply lock a thread C API recursive mutex.
7942 (SCM_NONREC_CRITICAL_SECTION_START,
7943 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7944 SCM_REC_CRITICAL_SECTION_END): Removed.
7945
7946 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7947 direct calls to scm_rec_mutex_lock / unlock around the three calls
7948 to scm_m_expand_body.
7949
7950 * eval.c, eval.h (promise_free): New function.
7951 (scm_force): Rewritten; Now thread-safe; Removed
7952 SCM_DEFER/ALLOW_INTS.
7953
7954 * pthread-threads.h: Added partially implemented plugin interface
7955 for recursive mutexes. These are, for now, only intended to be
7956 used internally within the Guile implementation.
7957
7958 * pthread-threads.c: New file.
7959
7960 * threads.c: Conditionally #include "pthread-threads.c".
7961
7962 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7963 thread-safe;
7964
7965 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7966 SCM_GLOBAL_REC_MUTEX): New macros.
7967
7968 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7969 macros---use mutexes instead.
7970
7971 * tags.h (SCM_IM_FUTURE): New tag.
7972
7973 * eval.c (scm_m_future): New primitive macro.
7974 (SCM_CEVAL): Support futures.
7975 (unmemocopy): Support unmemoization of futures.
7976
7977 * print.c (scm_isymnames): Name of future isym.
7978
2ff4f181
MD
7979 * version.c: Unmade some changes to my private copy that got
7980 committed by mistake.
7981
392d2833
MD
79822002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7983
e200ddee
MD
7984 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7985 2002-12-10.
7986
392d2833
MD
7987 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7988
7989 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7990 logical place.
7991
7992 * threads.c (create_thread): Remember root object until the handle
7993 of the new thread is on all_threads list.
7994
7995 * root.c (scm_make_root): Moved copying of fluids until after
7996 creation of root handle so that the fluids are GC protected. Also
7997 removed the critical section.
7998
c4c52ebe
MD
79992002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8000
960c408c
MD
8001 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
8002
3cdde9d6 8003 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 8004 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
8005 (scm_realloc): Serialize call to realloc
8006 (scm_calloc): Same for calloc.
8007 Thanks to Wolfgang Jaehrling!
8008 (Now we have to make sure all calls to malloc/realloc are made
8009 through scm_malloc.)
8010
960c408c
MD
8011 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
8012
c4c52ebe
MD
8013 * threads.c (really_launch): Release heap (to prevent deadlock).
8014 (create_thread): Release heap before locking thread admin mutex.
8015
b0dc3d71
MD
80162002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8017
8018 * threads.c (scm_i_thread_invalidate_freelists): New
8019 function.
8020
8021 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
8022
8023 * modules.c (scm_export): Inserted a return statement.
8024
06e80f59
HWN
80252002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8026
8027 * modules.c (scm_export): new function
8028
8029 * gc-card.c: add a note about malloc()/free() overhead.
8030
a12611c3
MD
80312002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8032
8033 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
8034 in srcdir.
8035
c7fabadf
MD
80362002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8037
8038 These changes remove scm_ints_disabled (which hasn't has any
8039 effect in Guile for quite some time).
241d9cea 8040
c7fabadf
MD
8041 * async.c, error.h (scm_ints_disabled): Removed.
8042
8043 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
8044 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
8045 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
8046 (old_ints): Removed.
8047
8048 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
8049 critical section.
8050 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
8051 SCM_ALLOW_INTS.
8052
9bc4701c
MD
80532002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8054
52340b65
MD
8055 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
8056 Removed accidental #if 0 around these functions.
8057
9bc4701c
MD
8058 These changes are the start of support for preemptive
8059 multithreading. Marius and I have agreed that I commit this code
8060 into the repository although it isn't thoroughly tested and surely
8061 introduces many bugs. The bugs should only be exposed when using
8062 threads, though. Signalling and error handling for threads is
8063 very likely broken. Work on making the implementation cleaner and
8064 more efficient is needed.
241d9cea 8065
9bc4701c
MD
8066 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
8067 (SCM_NONREC_CRITICAL_SECTION_START,
8068 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
8069 SCM_REC_CRITICAL_SECTION_END): New macros.
8070 (SCM_CRITICAL_SECTION_START/END): Defined here.
8071
8072 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
8073 the three calls to scm_m_expand_body.
8074
8075 * gc.h: #include "libguile/pthread-threads.h";
8076 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
8077
8078 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
8079 scm_t_key;
8080
8081 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
8082 access.
8083
8084 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
8085
8086 * gc-freelist.c, threads.c (really_launch): Use
8087 SCM_FREELIST_CREATE.
8088
8089 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
8090
8091 * gc.c (scm_i_expensive_validation_check, scm_gc,
8092 scm_gc_for_newcell): Put threads to sleep before doing GC-related
8093 heap administration so that those pieces of code are executed
8094 single-threaded. We might consider rewriting these code sections
8095 in terms of a "call_gc_code_singly_threaded" construct instead of
8096 calling the pair of scm_i_thread_put_to_sleep () and
8097 scm_i_thread_wake_up (). Also, we would want to have as many of
8098 these sections eleminated.
8099
8100 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
8101
8102 * inline.h: #include "libguile/threads.h"
8103
8104 * pthread-threads.h: Macros now conform more closely to the
8105 pthreads interface. Some of them now take a second argument.
8106
8107 * threads.c, threads.h: Many changes.
8108
81092002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8110
8111 * Makefile.am (version.h): Changed $^ --> $< in rule for
8112 version.h.
241d9cea 8113
b2cbe8d8
RB
81142002-12-08 Rob Browning <rlb@defaultvalue.org>
8115
8116 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
8117 (SCM_MINOR_VERSION): use @--@ substitution now.
8118 (SCM_MICRO_VERSION): use @--@ substitution now.
8119 (scm_effective_version): new function prototype.
8120
8121 * version.c (scm_effective_version): new function, also add
8122 effective-version.
8123
8124 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
8125 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
8126 SCM_LIBRARY_DIR.
8127 (version.h): generate this here rather than configure.in. This
8128 approach tracks source edits better (i.e. more immediately).
8129 Might be worth considering for other .in files too.
8130
5441c65c
MV
81312002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
8132
8133 Reorganized thread package selection. A thread package now only
8134 implements a small set of pthread like functions and Guile
8135 implements the rest on top of that. Guile's implementation is
8136 what the "coop-pthreads" package has been previously. Support for
8137 "coop" threads has been removed until I get time to add it again.
241d9cea 8138
5441c65c
MV
8139 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
8140 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
8141 null-threads.c, coop-pthreads.c.
8142 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
8143 pthread-threads.h.
241d9cea 8144
5441c65c
MV
8145 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
8146
8147 * threads.h: Do not include "libguile/coop-defs.h". Include
8148 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
8149 (previously deprecated) C level thread API prototypes. They are
8150 now in the thread package specific headers, "null-threads.h" and
8151 "pthread-threads.h".
8152 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
8153 New.
8154 (scm_threads_init): Removed.
8155 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
8156 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
8157 SCM_I_THREAD_SWITCH_COUNT): Define here.
8158 (scm_single_thread_p): Removed.
8159 (scm_call_with_new_thread): Take two args directly instead of list
8160 of two args.
8161 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
8162 SCM_SET_THREAD_LOCAL_DATA): Define here.
8163
8164 * threads.c: Merged with "coop-pthreads.c".
8165
8166 * null-threads.h: Implement pthread-like API as a set of macros.
8167
8168 * pthread-threads.h: New, implement pthread-like API by deferring
8169 to pthread itself.
241d9cea 8170
5441c65c
MV
8171 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
8172 has been lost in the reorganization.
8173
504d99c5
MD
81742002-12-01 Mikael Djurfeldt <mdj@linnaeus>
8175
8176 The following change makes it possible to move procedure
8177 application dispatch outside inner loops. The motivation was
8178 clean implementation of efficient replacements of R5RS primitives
8179 in SRFI-1.
8180
8181 The semantics is clear: scm_trampoline_N returns an optimized
8182 version of scm_call_N (or NULL if the procedure isn't applicable
8183 on N args).
8184
8185 Applying the optimization to map and for-each increases efficiency
8186 noticeably. For example, (map abs ls) is 8 times faster than
8187 before.
8188
8189 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
8190
8191 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
8192
8193 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
8194 (map, for-each): Handle also application on two args as a special
8195 case; Use trampolines.
8196
8197 Other changes:
241d9cea 8198
504d99c5
MD
8199 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
8200 (subr2oless): Removed.
8201 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
8202 vector GC protected.
8203
8204 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
8205 scm_out_of_range.
8206
63dd3413
DH
82072002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8208
8209 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
8210
4ba5f279
MD
82112002-11-17 Mikael Djurfeldt <mdj@linnaeus>
8212
8213 * debug.c (scm_make_iloc): Added missing "return".
8214
56ae231f
MV
82152002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
8216
8217 * strports.c (scm_eval_string_in_module): Validate second arg to
8218 be a module. Thanks to Arno Peters!
8219
80b28865
DH
82202002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8221
8222 * .cvsignore: remove goops.c
8223
c88b1456
DH
82242002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8225
8226 * modules.c (scm_env_top_level, scm_lookup_closure_module,
8227 module_variable, scm_module_lookup_closure,
8228 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
8229 scm_system_module_env_p): Don't compare SCM values with C
8230 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
8231 over SCM_NFALSEP.
8232
a8a19efc
DH
82332002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8234
8235 * eval.h (SCM_MAKE_ILOC): New macro.
8236
8237 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
8238 the iloc bitpattern here.
8239
76734914
MD
82402002-11-14 Mikael Djurfeldt <mdj@linnaeus>
8241
8242 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
8243 part of the API, otherwise it's difficult to write Guile
8244 extensions using non-blocking I/O => moved #include
8245 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
8246
8247 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
8248 s_unlock_mutex.
8249
8b5b4a75
MV
82502002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
8251
8252 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
8253 are defined in configure.in.
8254
8255 * threads.c: Removed SCM_API from function definitions. SCM_API
8256 is only for declarations.
8257
e5a83084
MD
82582002-11-07 Mikael Djurfeldt <mdj@linnaeus>
8259
9be8bb45
MD
8260 * coop-pthreads.h: Added support for thread specific data to the
8261 generic C API for the coop-pthreads case.
8262
e5a83084
MD
8263 * threads.c, threads.h (scm_cond_init): Undo unintentional API
8264 change.
6c214b62 8265 (scm_cond_broadcast): Added missing function.
e5a83084 8266
7edf178e
MV
82672002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8268
8269 * coop.c (coop_next_runnable_thread): Removed, wich should have
8270 happened when GUILE_ISELECT was hard-wired.
8271
7f5b1b77
MV
82722002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
8273
7caa1b07
MV
8274 * Makefile.am (libguile_la_SOURCES): Added threads.c
8275 (DOT_DOC_FILES): Added threads.doc.
8276 (DOT_X_FILES): Added threads.x.
8277 (EXTRA_libguile_la_SOURCES): Removed threads.c.
8278 (noinst_HEADERS): Added coop-pthreads.c.
8279 (modinclude_HEADERS): Added coop-pthreads.h.
8280
8281 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
8282 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
8283
bb11cbf4
MV
8284 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
8285 Thanks to Bill Schottstaedt!
8286
1d4cbbed
MV
8287 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
8288
7f5b1b77
MV
8289 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
8290 SCM_COPT_THREADS is defined.
8291 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
8292 is defined.
241d9cea 8293
7f5b1b77
MV
8294 * coop-pthreads.c: Some harmless renamings of internal stuff.
8295 (create_thread): New, generalized version of
8296 scm_call_with_new_thread.
8297 (scm_call_with_new_thread): Use it.
8298 (scm_spawn_thread): New, use create_thread.
241d9cea 8299
d52f53b1
MV
83002002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
8301
8302 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
8303 start testing it now.
8304
8305 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
8306 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
8307 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
8308 is defined.
8309
30f920c3
MV
83102002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
8311
8312 * scmsigs.c (signal_cell_handlers, install_handler_data,
8313 scm_delq_spine_x, really_install_handler, install_handler): New
8314 scheme for triggering signal handlers, to simplify take_signal.
8315 (take_signal): Simplified, to avoid race conditions.
8316 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
8317 hasn't exited yet.
241d9cea 8318
30f920c3
MV
8319 * async.c (scm_async_click): Reset pending_asyncs, handle
8320 signal_asyncs. Don't set cdr of a non-signal async to #f.
8321 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
8322 always. Set pending_asyncs.
8323 (scm_system_async_mark_for_thread): Check that thread has not
8324 exited.
8325 (scm_unmask_signals, decrease_block): Call scm_async_click after
8326 block_asyncs becomes zero.
241d9cea 8327
30f920c3
MV
8328 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
8329 active_asyncs.
8330
8331 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
8332 fields.
8333 * root.c (root_mark): Mark them.
8334 (make_root): Initialize them.
241d9cea 8335
30f920c3
MV
8336 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
8337 USE_COOP_THREADS.
8338 (scm_internal_select): Define one version for USE_COOP_THREADS and
8339 one for USE_NULL_THREADS.
8340 (scm_init_iselect): Likewise.
241d9cea 8341
30f920c3
MV
8342 * inline.h (scm_cell, scm_double_cell): Also allow
8343 USE_COPT_THREADS to not protect the slot initializers.
241d9cea 8344
30f920c3
MV
8345 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
8346 because threads need to be initialized before the stack, but
8347 gsubrs such as scm_timed_condition_variable_wait can only be
8348 created later.
8349
8350 * threads.h: Include "coop-pthreads.h" when requested.
8351 (scm_threads_make_mutex, scm_threads_lock_mutex,
8352 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
8353 not implemented anyway.
8354 (scm_init_thread_procs, scm_try_mutex,
8355 scm_timed_condition_variable_wait,
8356 scm_broadcast_condition_variable, scm_c_thread_exited_p,
8357 scm_thread_exited_p): New prototypes.
8358 (struct timespec): Define if not already defined.
8359 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8360 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8361 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8362 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
8363 deprecated.
8364
8365 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
8366 requested.
8367 (scm_thread_exited_p): New.
8368 (scm_try_mutex, scm_broadcast_condition_variable): Newly
8369 registered procedures.
8370 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
8371 Use the latter as the procedure for "wait-condition-variable",
8372 thus offering a optional timeout parameter to Scheme.
8373 (scm_wait_condition_variable): Implement in terms of
8374 scm_timed_wait_condition_variable.
8375 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8376 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
8377 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8378 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
8379 scm_make_mutex, etc, and deprecate.
8380 (scm_init_threads): Do not create smobs, leave this to
8381 scm_threads_init. Do not include "threads.x" file.
8382 (scm_init_thread_procs): New, include "threads.x" here.
8383
8384 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
8385 scm_null_mutex_lock, scm_null_mutex_unlock,
8386 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
8387 scm_null_condvar_wait, scm_null_condvar_signal,
8388 scm_null_condvar_destroy): Removed.
8389 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
8390 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
8391 scm_cond_destory): Do not define, they are now deprecated and
8392 handled by threads.{h,c}.
241d9cea 8393
30f920c3
MV
8394 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
8395 (scm_threads_init): Create smobs here, using the appropriate
8396 sizes.
8397 (block): Removed, now unused.
8398 (scm_c_thread_exited_p): New.
8399 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
8400 scm_null_mutex_destroy, scm_null_condvar_init,
8401 scm_null_condvar_wait, scm_null_condvar_signal,
8402 scm_null_condvar_destroy): Removed and updated users to do their
8403 task directly.
8404 (scm_try_mutex, timeval_subtract,
8405 scm_timed_wait_condition_variable,
8406 scm_broadcast_condition_variable): New.
8407 (scm_wait_condition_variable): Removed.
8408
8409 * coop-defs.h (coop_m): Added 'level' field.
8410 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8411 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8412 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8413 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
8414 define.
8415 (coop_condition_variable_broadcast): New.
8416
8417 * coop-threads.c (scm_threads_init): Create smobs here, using the
8418 appropriate sizes.
8419 (scm_c_thread_exited_p, scm_try_mutex,
8420 scm_timed_wait_condition_variable,
8421 scm_broadcast_condition_variable): New.
8422 (scm_wait_condition_variable): Removed.
8423
8424 * coop.c (coop_new_mutex_init): Initialize level.
8425 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
8426 level.
8427 (coop_condition_variable_signal): Renamed to
8428 coop_condition_variable_broadcast and reimplemented in terms of
8429 that. Thus...
8430 (coop_condition_variable_broadcast): New.
8431
8432 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
8433
8434 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
241d9cea 8435
087ed40d
MV
84362002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
8437
65a23095
MV
8438 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
8439 of system headers.
8440
087ed40d
MV
8441 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
8442 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 8443 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 8444
5ec1d2c8
DH
84452002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8446
8447 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
8448 scm_definedp to scm_defined_p and deprecated scm_definedp.
8449
100ae50d
DH
84502002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8451
8452 * async.h, async.c (scm_system_async): Fixed deprecation to work
8453 correctly when deprecated features are excluded.
8454
2794cb50
MV
84552002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8456
8457 * async.c (scm_system_async_mark_for_thread): Validate thread
8458 argument.
8459
8460 * coop-threads.c (scm_i_thread_root): Do not validate argument.
8461
8462 * feature.c (scm_init_feature): Don't add 'threads' for
8463 USE_NULL_THREADS.
8464
8465 * inline.h (scm_cell, scm_double_cell): Also allow
8466 USE_NULL_THREADS to not protect the slot initializers.
8467
8468 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
8469 "USE_THREAD".
8470
8471 * Makefile.am (noinst_HEADERS): Added null-threads.c.
8472 (modinclude_HEADERS): Added null-threads.h.
8473
8474 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
8475 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
8476 (scm_init_threads): Use generic type names scm_t_mutex and
8477 scm_t_cond instead of coop_m and coop_c.
8478
8479 * null-threads.c, null-threads.h: New files.
8480
ff810d7a
MV
84812002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
8482
8483 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
8484 This is to support makes that know about "$<" only in pattern
8485 rules, like Sun's make.
8486
a90bdb73
MV
84872002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
8488
8489 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
8490 substitution. Thanks to David Allouche!
8491
e71a8bf2
DH
84922002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8493
8494 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
8495 !SCM_ENABLE_DEPRECATED.
8496
41f77ff5
MV
84972002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8498
504d99c5 8499 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
8500 scm_i_thread_root when USE_THREADS is defined. Use scm_root
8501 otherwise.
8502
8503 * scmsigs.c (take_signal): Only call scm_i_thread_root when
8504 USE_THREADS is defined. Use scm_root otherwise.
8505 (scm_sigaction_for_thread): Ignore THREAD argument when
8506 USE_THREADS is not defined. Also, move THREAD argument defaulting
8507 out of HAVE_SIGACTION section, which was a bug.
8508
6d16b125
MV
85092002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8510
8511 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
8512 signal_handlers, not the closure that is used as the async.
8513 The closure is stored in signal_handler_cells, as previously.
241d9cea 8514
acfa1f52
MV
85152002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
8516
8517 * root.h (scm_root_state): Added 'block_async' slot.
8518 (scm_active_asyncs): Removed abbrev.
8519 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
8520
8521 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
8522 abbrev.
8523
8524 * async.h (scm_call_with_blocked_asyncs,
8525 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8526 scm_c_call_with_unblocked_asyncs): New prototypes.
8527 (scm_mask_signals, scm_unmask_signals): Deprecated.
8528 (scm_mask_ints): Turned into a macro.
8529 * async.c (scm_mask_ints): Removed.
8530 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
8531 this should not be necessary.
8532 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
8533 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
8534 deprecation warning and check for errornous use. Set block_asyncs
8535 instead of scm_mask_ints.
8536 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
8537 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8538 scm_c_call_with_unblocked_asyncs): New.
241d9cea 8539
acfa1f52
MV
8540 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
8541 Asyncs are enabled by default.
8542
34010f56
NJ
85432002-10-09 Neil Jerram <neil@ossau.uklinux.net>
8544
8545 * vports.c (scm_make_soft_port): Allow vector argument to carry a
8546 6th element: an input waiting thunk.
8547 (sf_input_waiting): New.
8548
9310d6f2
MV
85492002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
8550
8551 * root.c (root_mark): Mark active_asyncs slot.
8552
8553 * async.c (scm_async_click): Set the cdr of a executed handler
8554 cell to SCM_BOOL_F, not SCM_EOL.
8555 (scm_i_queue_async_cell): Queue the cell at the end of the list,
8556 and only if the handler procedure is not already present.
8557 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
8558 with SCM_BOOL_F.
8559 * scmsigs.c (scm_sigaction_for_thread): Likewise.
241d9cea 8560
ac48c719
RB
85612002-10-04 Rob Browning <rlb@defaultvalue.org>
8562
1360a142
RB
8563 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
8564
8565 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
8566 scm_lt_dlopenext, and scm_lt_dlerror.
8567 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
8568 and scm_lt_dlerror.
8569 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
8570 and scm_lt_dlerror.
8571 (sysdep_dynl_init): switch to scm_lt_dlinit();
8572
8573 * Makefile.am (libguile_la_LIBADD): switch to use
8574 libguile-ltdl.la.
8575
504d99c5 8576 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 8577
497092c9
MV
85782002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
8579
8580 * scmsigs.h (scm_sigaction_for_thread): New prototype.
8581 * scmsigs.c (got_signal): Removed.
8582 (signal_handler_cells, signal_handler_threads): New.
8583 (take_signal): Queue the cell of the signal for the specified
8584 thread. Reset the signal handler on systems that don't have
8585 sigaction.
8586 (sys_deliver_signals): Removed.
8587 (close_1): New.
8588 (scm_sigaction_for_thread): Renamed from scm_sigaction and
8589 extended to also set the thread of a signal and allocate a cell
8590 for it. Keep the Scheme name "sigaction". Check that signum is
8591 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
8592 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
8593 (scm_init_scmsigs): Allocate signal_handler_cells and
8594 signal_handler_threads vectors.
8595
8596 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
8597 that system asnycs and user asyncs are separated. Reimplemented
8598 system asyncs to work per-thread.
8599
8600 * gc.c (scm_init_gc): Do not use scm_system_async.
8601
8602 * async.h (scm_asyncs_pending, scm_set_tick_rate,
8603 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
8604 Removed prototypes.
8605 (scm_i_queue_async_cell): New.
241d9cea 8606
497092c9
MV
8607 * __scm.h (scm_asyncs_pending_p): Removed.
8608 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
8609 scm_asyncs_pending_p.
8610
8611 * async.h (scm_system_async_mark_for_thread): New prototype.
8612
8613 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
8614
8615 * root.h (scm_root_state): Added new "active_asyncs" slot.
8616 * root.c (scm_make_root): Initialize it to SCM_EOL.
8617
8618 * coop-defs.h (coop_t): Added new "handle" slot.
8619 * coop-threads.c (all_threads, scm_current_thread,
8620 scm_all_threads, scm_i_thread_root): New.
8621 (scm_threads_init): Add main thread to all_threads.
8622 (scheme_launch_thread): Remove thread from all_threads when it
8623 terminates.
8624 (scm_call_with_new_thread): Initialize handle slot of coop_t
8625 structure and add new thread to all_threads.
8626 (scm_spawn_thread): Likewise.
8627
8628 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
8629 * threads.c (scm_current_thread, scm_all_threads): Register as
8630 primitives.
8631
8632 * dynl.c: Use scm_lt_ prefix for libltdl functions.
8633
480fa28d
NJ
86342002-09-29 Neil Jerram <neil@ossau.uklinux.net>
8635
8636 * script.c (scm_compile_shell_switches): Fix bad spelling of
8637 `explicitly' in comment.
8638
86392002-09-28 Neil Jerram <neil@ossau.uklinux.net>
8640
8641 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
8642 Refer to provided? in doc string rather than deprecated feature?.
8643
3553e1d1
GH
86442002-09-24 Gary Houston <ghouston@arglist.com>
8645
8646 * inline.h (scm_double_cell): prevent reordering of statements
8647 with any following code (for GCC 3 strict-aliasing).
8648 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8649 the earlier version of the reordering prevention.
8650
4ad0814a
HWN
86512002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8652
241d9cea 8653 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
4ad0814a 8654
e88e4f2e
HWN
86552002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8656
8657 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8658 protection.
8659
1e71eafb
HWN
86602002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8661
8662 * inline.h: include stdio.h
8663
8664 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8665
61ef9c1f
HWN
86662002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8667
dac04e9f
HWN
8668 * gc-segment.c (scm_i_make_initial_segment): check user settings
8669 for sanity.
8670
8671 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8672 sanity.
dac04e9f 8673
241d9cea 8674 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
dac04e9f 8675
ffd72400
HWN
8676 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8677
8678 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
8679 these won't ever wrap around with high memory usage. Thanks to
8680 Sven Hartrumpf for finding this.
ffd72400 8681
5bd4a949
HWN
8682 * gc-freelist.c: include <stdio.h>
8683
61ef9c1f
HWN
8684 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8685
ffd0ef3b
MV
86862002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8687
a27e3d14
MV
8688 * vectors.h (SCM_VECTOR_REF): New.
8689
ffd0ef3b
MV
8690 * snarf.h (SCM_DEFINE_PUBLIC): New.
8691
f8a1712b
MV
86922002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8693
8694 * socket.c (scm_addr_vector): Added size of address to arguments.
8695 Use it to avoid accessing a non-existent path in a sockaddr_un.
8696 Changed all callers.
8697
7200a36b
HWN
86982002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8699
1383773b
HWN
8700 * gc.h: remove DOUBLECELL card flags.
8701
8702 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8703 scm_realloc().
8704
8705 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8706 init loop; handle this from scm_init_card_freelist()
8707
8708 * gc-card.c (scm_init_card_freelist): init bit vector here.
8709
7200a36b 8710 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 8711 num2float.i.c (FLOAT2NUM): idem
7200a36b 8712
9981de3a
HWN
87132002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8714
8715 * eval.h: prepend libguile/ to include path
8716
19647556
MV
87172002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8718
8719 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
9a5fa6e9 8720 years. Thanks to Martin Grabmüller!
19647556 8721
38d1262a
HWN
87222002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8723
8724 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8725 unsigned numbers for computing minimum heap increment. This
8726 prevents weird results when a a negative minimum increment is
8727 computed.
8728
f800ebfb
MV
87292002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8730
8731 * gc_os_dep.c: When we have __libc_stack_end, use that directly
19647556 8732 instead of the old tricks.
f800ebfb
MV
8733
8734 * guile-snarf.in: Do not expect the input file to be the first
8735 argument after the optional "-o" option, just pass everything to
8736 the pre-processor without extracting the input file name.
8737
4a5309c9
HWN
87382002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8739
8740 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
241d9cea 8741 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
4a5309c9 8742
f2893a25
HWN
87432002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8744
8745 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8746 Bill Schottstaedt for the bug report
8747
483f518b
MV
87482002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8749
8750 * print.c (scm_iprin1): Print primitives generics always as
8751 "primitive-generic" even when they have no primitive methods yet.
8752
917adc55
GH
87532002-08-17 Gary Houston <ghouston@arglist.com>
8754
8755 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8756 call.
8757
67329a9e
HWN
87582002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8759
85835e59 8760 * ports.c (scm_add_to_port_table): small bugfix.
67329a9e
HWN
8761
8762 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8763 malloc.
8764
8765 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8766 only use SCM_MIN_HEAP_SEG_SIZE.
8767
8768 * ports.c (scm_add_to_port_table): add backwards compatibility
8769 function
8770
8771 * ports.h: use scm_i_ prefix for port table and port table size.
241d9cea 8772
f07c886a
MD
87732002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8774
8775 * vports.c (scm_make_soft_port): Initialize pt variable.
8776
dc61cbc6
MV
87772002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8778
8779 * strports.h (scm_c_eval_string_in_module,
8780 scm_eval_string_in_module): New prototypes.
8781 * strports.c (scm_eval_string_in_module): New, but use
8782 "eval-string" as the Scheme name and make second parameter
8783 optional.
8784 (scm_eval_string): Implement using scm_eval_string_in_module.
8785 (scm_c_eval_string_in_module): New.
8786 Thanks to Ralf Mattes for the suggestion!
241d9cea 8787
da220f27
HWN
87882002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8789
be3ff021
HWN
8790 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8791 message and abort.
241d9cea 8792
be3ff021
HWN
8793 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8794
da220f27
HWN
8795 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8796 stead of scm_t_port*. The function now takes a tag argument.
8797
eab1b259
HWN
87982002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8799
8800 * gc.h: add scm_debug_cells_gc_interval to public interface
8801
8802 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8803
8804 * gc.c (scm_i_expensive_validation_check): separate expensive
8805 validation checks from cheap ones.
8806
ba1b2226
HWN
88072002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8808
8809 * read.c (scm_input_error): new function: give meaningful error
8810 messages, and throw read-error
8811
8812 * gc-malloc.c (scm_calloc): add scm_calloc.
8813
39e8f371
HWN
88142002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8815
241d9cea 8816 * tags.h: remove GC bits documentation from the tags table.
33138b05 8817
39e8f371
HWN
8818 * read.c (INPUT_ERROR): Prepare for file:line:column error
8819 messages for errors in scm_lreadr() and friends.
8820
88212002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8822
8823 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
241d9cea 8824 implementation).
39e8f371
HWN
8825 (scm_gc_calloc): new function
8826
26e68795 88272002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
402788a9 8828
5f16b897
HWN
8829 * ports.c (scm_new_port_table_entry): init port entry to 0
8830 completely.
241d9cea 8831
402788a9
HWN
8832 * ports.c (scm_new_port_table_entry): change function from
8833 scm_add_to_port_table. This prevents cells with null-pointers from
8834 being exposed to GC.
8835
504d99c5 8836 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
402788a9 8837 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
c8a1bdc4 8838
504d99c5 8839 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
c2cbcc57
HWN
8840 to gc-stats.
8841
c8a1bdc4
HWN
8842 * numbers.c (big2str): return "0" for 0 iso. ""
8843
c2cbcc57
HWN
8844 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8845 private-gc.h: new file
c8a1bdc4
HWN
8846
8847 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8848 sweeping. More documentation in workbook/newgc.text
8849
aea06b34
MV
88502002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8851
8852 * random.c (rstate_free): Return zero.
8853
35060ae9
DH
88542002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8855
8856 * environments.c (remove_key_from_alist): Removed.
8857
8858 (obarray_remove): Simplified.
8859
6a535440
SJ
88602002-07-24 Stefan Jahn <stefan@lkcc.org>
8861
241d9cea 8862 * continuations.h: ia64: Include <signal.h> before
6a535440
SJ
8863 <sys/ucontext.h>.
8864
bcbd25b7
DH
88652002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8866
8867 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8868
26e68795 88692002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1d1559ce
HWN
8870
8871 * goops.c (scm_compute_applicable_methods): use
8872 scm_remember_upto_here_1 iso scm_remember_upto_here
8873
8874 * macros.c: include deprecation.h
8875
504d99c5 8876 * vectors.c (scm_vector_move_right_x): remove side effect in
1d1559ce 8877 macro arg.
504d99c5 8878 (scm_vector_move_left_x): idem.
1d1559ce
HWN
8879
8880 * net_db.c, posix.c, socket.c: variable naming: change ans to
8881 result.
8882
8883 * sort.c (scm_merge_vector_x): accept vector as argument
8884 iso. SCM*. This is needed for full GC correctness.
8885
8886 * gc.h: undo previous undocumented changes related to #ifdef
8887 GENGC.
8888
26e68795 88892002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
34d19ef6
HWN
8890
8891 * *.c: add space after commas everywhere.
8892
8893 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8894 Document cases where SCM_WRITABLE_VELTS() is used.
241d9cea 8895
34d19ef6
HWN
8896 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8897 SCM_VELTS() return a const pointer
8898 (SCM_VECTOR_SET): add macro.
8899
3063e30a
DH
89002002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8901
8902 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8903 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8904 Deprecated the special kind of built-in dynamic syntax transformer
8905 that was inaccurately named "macro". Note: The built-in syntax
8906 transformers that are named "mmacro" or "memoizing-macro" still
8907 exist, and it is these which come much closer to what one would
8908 call a macro.
8909
4c5f8e8f
NJ
89102002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8911
8912 * eval.c (unmemocopy): Fix for
8913 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8914 with internal definitions and local-eval).
8915
4f6f9ae3
GH
89162002-07-12 Gary Houston <ghouston@arglist.com>
8917
8918 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8919 defined. They don't do anything useful, especially since the
8920 only case where DYNAMIC_LINKING is undefined seems to be
8921 when --with-modules=no is given to configure, which is basically
8922 requesting that the "dynamic linking module" be omitted.
8923
8924 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8925 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8926
8927 * extensions.c (load_extension): check DYNAMIC_LINKING for
8928 scm_dynamic_call.
8929 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8930 scm_init_dynamic_linking.
8931
c21935e6
MV
89322002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8933
8934 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8935 check for Cygwin when including <winsock2.h>, this is already
8936 check for by configure. Thus, revert change from 2002-07-07.
8937
ee95d597
GH
89382002-07-10 Gary Houston <ghouston@arglist.com>
8939
9540b68f 8940 * eq.c: include <string.h>
ee95d597
GH
8941 * dynl.c: docstring editing.
8942
46732b54
GH
89432002-07-09 Gary Houston <ghouston@arglist.com>
8944
8945 * dynl.c (scm_dynamic_call): docstring editing.
8946
c09d12e0
RB
89472002-07-08 Rob Browning <rlb@defaultvalue.org>
8948
8949 * gc_os_dep.c: HURD fixes.
8950
3f6571eb
MV
89512002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8952
8953 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8954
8955 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8956 this should be compiled for BUILD host.
8957 Override default rule for
8958 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8959 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8960 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8961
8962 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8963 <winsock2.h> on Cygwin even when we have it.
8964
bd987b8e
DH
89652002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8966
8967 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8968 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8969 the code. Full number of arguments checking of closures is
8970 mandatory now. However, the option to disable the checking has
8971 most probably not been used anyway.
8972
8505e285
DH
89732002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8974
bd987b8e
DH
8975 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8976 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8977 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8978 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8979 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8980 (scm_source_properties, scm_set_source_properties_x,
8981 scm_source_property): Removed compile time option SCM_RECKLESS to
8982 clean up the code. Full number of arguments checking of closures
8983 is mandatory now. However, the option to disable the checking has
8984 most probably not been used anyway.
8505e285
DH
8985
8986 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8987 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8988
2ee08a28
GH
89892002-06-30 Gary Houston <ghouston@arglist.com>
8990
732b9327
GH
8991 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8992 do anything useful. Added a comment about need for a mutex if
8993 pre-emptive threading is supported.
8994
2ee08a28
GH
8995 * posix.c (scm_convert_exec_args), dynl.c
8996 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8997 allocate_string_pointers. 2) simplified: don't reallocate the
8998 strings, just make an array of pointers 3) avoid memory leaks on
8999 error 4) let the procedure report errors in its own name.
9000 Consequences: 1) the procedures now assume that SCM strings are
9001 nul-terminated, which should always be the case. 2) Since strings
9002 are not reallocated, it's now possible for strings passed to
9003 dynamic-args-call to be mutated.
9004
c136c920
DH
90052002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9006
9007 * __scm.h, eval.c, eval.h: Removed compile time option
9008 MEMOIZE_LOCALS to clean up the code. Now, caching of local
9009 variable positions during memoization is mandatory. However, the
9010 option to disable the caching has most probably not been used
9011 anyway.
9012
e540802f
MV
90132002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
9014
9015 * print.c (scm_simple_format): Print missing part of format before
9016 ~% control. Thanks to Daniel Skarda!
9017
4c1ffcdd
MV
90182002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
9019
9020 * mkstemp.c: Added exception notice to license statement.
9021
ba1b077b
MV
90222002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
9023
8dc434c7
MV
9024 * numbers.c (mem2ureal): When returning an inexact zero, make sure
9025 it is represented as a floating point value so that we can change
9026 its sign.
9027
ba1b077b
MV
9028 From John W. Eaton <jwe@bevo.che.wisc.edu>
9029
9030 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
9031
74c58131
TTN
90322002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
9033
9034 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
0926d46e 9035 in addition to `i386'. Thanks to Dale P. Smith.
74c58131 9036
8766d4b5
MV
90372002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
9038
9039 * eq.c (real_eqv): New.
9040 (scm_eqv_p): Use it when comparing reals and complexes.
9041
9042 * numbers.c: Include <string.h>, for strncmp.
9043 (mem2complex): Do not create negative NaNs.
9044 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
9045 NaN.
9046 (scm_inexact_to_exact): Signal error when converting a NaN.
74c58131 9047
1d8c3cad
MV
90482002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
9049
9050 * posix.c (scm_putenv): Handle removing variables explicitely by
9051 calling unsetenv.
9052
9053 From John W. Eaton.
74c58131 9054
1d8c3cad
MV
9055 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
9056 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
9057 and scm_nan.
9058 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
9059 [SCO && ! HAVE_ISINF] (isinf): New function.
9060 (xisinf, xisnan): New functions.
9061 (IS_INF): Delete.
9062 (isfinite): Define in terms of xisinf.
9063 (scm_inf_p, scm_nan_p): New functions.
9064 (guile_Inf, guile_NaN): New file-scope vars.
9065 (guile_ieee_init): New function.
9066 (scm_inf, scm_nan): New functions.
9067 (idbl2str): Handle Inf and NaN. Remove funny label and
9068 corresponding gotos.
9069 (ALLOW_DIVIDE_BY_ZERO): New macro.
9070 (scm_divide): Allow division by zero to occur if
9071 ALLOW_DIVIDE_BY_ZERO is defined.
9072 Handle bignums and ints as special cases.
9073
9074 Additional stuff by me:
9075
9076 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
9077 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
9078 (iflo2str): Don't output a '+' for negative numbers or for Inf and
9079 NaN. They will provide their own sign.
9080 (scm_divide): Only allow divides by inexact zeros. Dividing by
9081 exact zeros still signals an errors.
74c58131 9082
7a0c65eb
TTN
90832002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
9084
87b72063 9085 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb 9086 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
504d99c5 9087 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb
TTN
9088 Thanks to Andreas Rottmann.
9089
5e423a39
GH
90902002-04-20 Gary Houston <ghouston@arglist.com>
9091
9092 * removal of unused fields in root state (thanks to Christopher
9093 Cramer for pointing out the disuse.)
9094 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1841c44a 9095 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
b6287a25 9096
5e423a39
GH
9097 * root.c (root_mark): don't mark them.
9098 (scm_make_root): don't set them to #f.
9099 * init.c (scm_init_standard_ports): don't initialise with the
9100 default ports.
9101
9d2cce76
MV
91022002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
9103
9104 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
9105 cpp_sig_symbols.c.
9106
91072002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
9108
9109 * guile-snarf.in: Do not clean input file. This would write to
9110 the $(srcdir) during a VPATH build, which is not allowed. It also
9111 isn't needed since it only works when an output filename has been
9112 specified and in that case we don't need to clean the input file
9113 because the output file will already exist.
9114
6f79b6cc
MV
91152002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
9116
9117 * guile-snarf: Install the trap for removing $cleanfile only when
9118 the value of $cleanfile is actually known.
9119
21550b10
RB
91202002-04-10 Rob Browning <rlb@defaultvalue.org>
9121
9122 * .cvsignore: add versiondat.h and *.c.clean.c.
9123
bc76d628
DH
91242002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
9125
9126 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
9127 function, replaces macro SRCBRKP.
9128
9129 (SRCBRKP): Deprecated.
9130
9131 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
9132 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
9133 temporary variable.
9134
5132eef0
DH
91352002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9136
9137 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
9138 CHECK_EXIT and removed all references to them.
9139
680516ba
DH
91402002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
9141
9142 * debug.h (scm_ready_p, debug_print): Removed declarations.
9143
9144 * eval.c (EVALCELLCAR): Removed.
9145
9146 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
9147 operation from condition.
9148
e2bd68e0
MV
91492002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
9150
9151 * guile-snarf.in: When the output filename is "-", write to
9152 stdout. When no "-o" option is given, use "-" as the output
9153 filename (i.e., stdout). Only 'clean' the inputfile or remove the
9154 output file on error when the output file name is not "-". Define
9155 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
9156
9157 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
9158
ab1f1094
DH
91592002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
9160
9161 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
9162 and the corresponding goto statements. Removed redundant code.
9163
42030fb2
DH
91642002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
9165
9166 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
9167 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
9168 Re-enabled handing of rpsubrs and asubrs.
9169
e050d4f8
DH
91702002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
9171
9172 * eval.c (SIDEVAL): Removed.
9173
9174 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
9175 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
9176 argument checking order for set! to locals, variables and symbols.
9177 Improvements to control structure. Removed some uses of arg1 and
9178 arg2 as temporary variables.
9179
a6d344d3
TTN
91802002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
9181
9182 * guile-snarf.in: Remove "--compat=1.4" support.
9183 Add "-d" and "-D" support.
9184
9185 (deprecated_list): New var.
9186 (compat_mode_clean_xxx): Delete.
9187 (grep_deprecated): New func.
9188 ("main"): If "-d" or "-D", call `grep_deprecated'.
9189
3939e9df
NJ
91902002-03-15 Neil Jerram <neil@ossau.uklinux.net>
9191
387d418c
NJ
9192 * hooks.h: Change scm_t_c_hookype_t everywhere to
9193 scm_t_c_hook_type.
9194
bb2c02f2 9195 Docstring fixes:
a6d344d3 9196
bb2c02f2
NJ
9197 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
9198
9199 * ports.c (scm_sys_make_void_port): Use `@file'.
9200
9201 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
9202 than `else'.
9203
9204 * macros.c (scm_makmacro): Don't say that the form replaces its
9205 source, because it doesn't.
9206 (scm_makmmacro): Clarify difference between this and scm_makmacro.
9207
9208 * backtrace.c (scm_display_error), filesys.c (scm_umask,
9209 scm_select, scm_basename), goops.c (scm_method_generic_function),
9210 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
9211 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
9212 spelling mistakes.
9213
3939e9df
NJ
9214 * debug.c (scm_debug_options), eval.c
9215 (scm_eval_options_interface), read.c (scm_read_options): Change
9216 incorrect @var in docstring to @code.
9217
3b3cc781
MV
92182002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
9219
500b0d5b
MV
9220 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
9221
3b3cc781
MV
9222 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
9223 guile-snarf can remove trailing non-init code.
9224
9225 * guile-snarf.in (modern_snarf): Remove everything following and
9226 including "^:^" from the output.
9227
dff98306
DH
92282002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9229
9230 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
9231
9232 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
9233
2287fb53
TTN
92342002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
9235
9236 * guile-snarf.in: Update copyright.
9237 Rewrite to internalize error handling.
9238 Add "--compat=1.4" handling.
9239 Add commentary.
9240
9241 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
9242 (snarfcppopts): New var.
9243 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
9244 (.c.doc): Use $(snarfcppopts).
9245
822250a4
TTN
9246 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
9247 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
9248 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
9249 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
9250 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
9251 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
9252 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
9253 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
9254 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
9255 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
9256 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
9257 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
9258 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
9259 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
9260
b7798e10
DH
92612002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9262
9263 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
9264 The next step will be to remove the union 't' and simplify the
9265 code of SCM_CEVAL that way.
9266
04a98cff
NJ
92672002-03-12 Neil Jerram <neil@ossau.uklinux.net>
9268
9269 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
9270 rreadfds, rwritefds, rexceptfds): Made static.
9271
9272 * gc.c (terminating), fports.c (terminating): Renamed
9273 scm_i_terminating.
9274
16d98032
MV
92752002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
9276
5046250e
MV
9277 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
9278 potential overflow problems. Thanks to John W Eaton!
9279
8794207d
MV
9280 * strop.c (string_capitalize_x): Treat characters as unsigned so
9281 that 8-bit chars work. Thanks to David Pirotte!
16d98032 9282
1d15ecd3
DH
92832002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9284
9285 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
9286 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
9287 proc as temporary variables. Introduced temporary variables with
9288 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9289 by a more explicit predicate in some places.
9290
92912002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
f12745b6
DH
9292
9293 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
9294 Added lots of comments regarding the implementation of #@dispatch.
9295 Changed intra-procedure communication to use t.arg1 instead of
9296 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
9297 variables. Introduced temporary variables with hopefully
9298 descriptive names for clarification. Replaced SCM_N?IMP by a more
9299 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
9300 of computing the expression explicitly. Eliminate now unused
9301 label nontoplevel_cdrxbegin.
9302
9303 * goops.h (SCM_INSTANCE_HASH): New macro.
9304
9305 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
9306
1ebf1566
TTN
93072002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9308
9309 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
9310 "guile-snarf" moved back from `noinst_SCRIPTS'.
9311
020c890c
NJ
93122002-03-08 Neil Jerram <neil@ossau.uklinux.net>
9313
58d233cc
NJ
9314 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
9315 exists when adding a source property other than those that are
9316 handled explicitly, add the new property to the SRCPROPS obj's
9317 plist.
9318
020c890c
NJ
9319 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
9320 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
9321
9322 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
9323 debug.status. It isn't needed, and it can overflow the bits
9324 reserved for it (which may lead to a segv or a GC abort).
9325
3f04400d
DH
93262002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9327
9328 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
9329 side-effecting operations from conditions and macro calls.
9330 Replaced SCM_N?IMP by a more explicit predicate in some places.
9331 Minimized the scope of some variables.
9332
97820583
SJ
93332002-03-02 Stefan Jahn <stefan@lkcc.org>
9334
9335 * convert.i.c: Fixed int <-> long conversions which would have
9336 failed if their sizes were different.
9337
38ace99e
DH
93382002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9339
9340 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
9341 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
9342 as temporary variables. Removed side-effecting operations from
9343 conditions and macro calls. Introduced temporary variables with
9344 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9345 by a more explicit predicate in some places. Removed code that
9346 was conditionally compiled if SICP was defined - which it never
9347 is.
9348
e5cb71a0
DH
93492002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9350
9351 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
9352 Removed some uses of t.arg1 and proc as temporary variables.
9353 Removed side-effecting operations from conditions and macro calls.
9354 Introduced temporary variables with hopefully descriptive names
9355 for clarification. Replaced SCM_N?IMP by a more explicit
9356 predicate in some places.
9357
6a0f6ff3
DH
93582002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9359
9360 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
9361 explicit predicate in some places.
9362
9363 (CHECK_EQVISH): Removed.
9364
9365 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
9366 variables. Removed side-effecting operations from conditions and
9367 macro calls. Introduced temporary variables for clarification.
9368 Sorted if-else-if check for the type of the last form in a list by
9369 frequency. Avoided some unnecessary tail-recursion calls.
9370
228a24ef
DH
93712002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9372
9373 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
9374 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
9375 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
9376 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
9377 scm_cell and all its uses to scm_t_cell in accordance to Guile's
9378 naming scheme for types.
9379
9380 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
9381 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
9382 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
9383 (scm_make_environment), eval.c (scm_closure), fports.c
9384 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
9385 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
9386 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
9387 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
9388 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
9389 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
9390 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
9391 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
9392 scm_alloc_cell to scm_cell.
9393
9394 * environments.c (core_environments_observe), gc.c
9395 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
9396 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
9397 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
9398 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
9399 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
9400 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
9401 (allocate_weak_vector): Renamed scm_alloc_double_cell to
9402 scm_double_cell.
9403
edb810bb
SJ
94042002-02-27 Stefan Jahn <stefan@lkcc.org>
9405
9406 * convert.i.c, convert.c: Better range checking.
9407
9408 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
9409
1ebf1566 9410 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
edb810bb
SJ
9411 Windows (MinGW).
9412
327d4dd3
TTN
94132002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
9414
9415 * Makefile.am: Update path to pre-inst-guile automake frag.
9416
89d7a92c 94172002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
646052c0
DH
9418
9419 * gc.c (scm_gc_sweep): Make it compile even when deprecated
9420 features are excluded.
9421
89d7a92c 94222002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
bac0e232
DH
9423
9424 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
9425
4f2716b6
GH
94262002-02-25 Gary Houston <ghouston@arglist.com>
9427
9428 * convert.c: include <string.h> for convert_i.c.
9429
46151112
RB
94302002-02-24 Rob Browning <rlb@defaultvalue.org>
9431
9432 * .cvsignore: add stamp-h1.
9433
cd328b4f
NJ
94342002-02-21 Neil Jerram <neil@ossau.uklinux.net>
9435
9436 * unif.c (scm_array_to_list): Correct name, which had been
9437 accidentally changed to scm_t_arrayo_list!
9438
c709de7f
MD
94392002-02-20 Mikael Djurfeldt <mdj@linnaeus>
9440
9441 * gc.c (scm_gc_sweep): Print an error message when aborting due to
9442 underflowing scm_mallocated.
9443
c1965d31
MV
94442002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9445
9446 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
9447 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
9448 Reimplemented using the new scm_gc_malloc, etc., functions and
9449 deprecated.
9450
b606945b
TTN
94512002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
9452
9453 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
9454 to `noinst_PROGRAMS'.
9455 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
9456 (noinst_PROGRAMS, noinst_SCRIPTS): New.
9457
7c686ba8
MV
94582002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9459
9460 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
9461 non-zero is returned from a port or smob free function.
9462 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
9463 scm_gc_register_collectable_memory,
9464 scm_gc_unregister_collectable_memory, scm_gc_malloc,
9465 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
9466
9467 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
9468 debug-malloc.c, dynl.c, environments.c, environments.h,
9469 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
9470 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
9471 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
9472 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
9473 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
9474 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
9475 appropriate. Return zero from smob and port free functions.
9476
9477 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
9478
9479 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
9480 messages while the GC is running.
9481 (scm_c_issue_deprecation_warning_fmt): New.
9482
9483 * fports.c (scm_setvbuf): Reset read buffer to saved values when
9484 it is pointing to the putback buffer.
9485
66adc0a6
TTN
94862002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9487
9488 * gsubr.c (create_gsubr): On "too many args" error,
9489 also display arg count and name. Thanks to Bill Schottstaedt.
9490
0187b4f4
TTN
94912002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
9492
9493 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
9494
9495 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
9496 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
9497 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
9498
9499 * guile-snarf-docs-texi.in: Bye bye.
9500
402e687c
MV
95012002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9502
9503 * symbols.c (scm_make_symbol): Fix typo in docstring.
9504
9505 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9506 scm_make_symbol): New prototypes.
9507
319b98ed
MV
95082002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
9509
9510 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
9511 (SCM_SYMBOL_INTERNED_P): New.
9512 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
9513 SCM_MAKINUM since hash values can well be bignums.
9514 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
9515 This signals a interned symbol.
9516 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9517 scm_make_symbol): New.
0187b4f4 9518
319b98ed
MV
9519 * print.c (scm_iprin1): Print uninterned symbols unreadably.
9520
34472dfe
TTN
95212002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
9522
9523 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
9524 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
0187b4f4 9525 Thanks to Dave Love.
34472dfe 9526
1b39c2e3
MV
95272002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
9528
9529 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
319b98ed 9530 This might help to make unintended clashes less likely.
1b39c2e3
MV
9531 (scm_string_to_symbol): Protect the string until the symbols is
9532 created.
9533
1fa86ca5
SJ
95342002-01-31 Stefan Jahn <stefan@lkcc.org>
9535
9536 * convert.c, convert.h, convert.i.c: New files containing C
34472dfe 9537 array to Scheme conversion helpers meant to be replacement
1fa86ca5
SJ
9538 functions for the deprecated gh interface.
9539
9540 * Makefile.am: Setup rules for new `convert.*' files.
9541
af68e5e5
SJ
95422002-01-28 Stefan Jahn <stefan@lkcc.org>
9543
9544 * symbols.c (scm_c_symbol2str): New function, replacement for
9545 `gh_scm2newsymbol()'.
9546
34472dfe 9547 * strings.c (scm_c_substring2str): New function. Proper
af68e5e5
SJ
9548 replacement for `gh_get_substr()'.
9549
9550 * socket.c: Include `stdint.h' if available for the `uint32_t'
9551 declaration.
9552
504d99c5 9553 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
af68e5e5
SJ
9554 compiler warning).
9555
9556 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
9557
c96d76b8 95582002-01-22 Neil Jerram <neil@ossau.uklinux.net>
34472dfe 9559
c96d76b8 9560 Other changes unrelated to Elisp...
34472dfe 9561
c96d76b8
NJ
9562 * eval.c (scm_m_if): Use s_if rather than repeating string literal
9563 "if".
9564 (comments): Fix a few typos.
9565 (scm_for_each): Add parentheses around oddly unparenthesized
9566 if/while conditions.
9567
9568 * read.c (scm_read_opts): Add full stop at end of doc for
9569 `keywords' option.
9570
9571 * script.c (scm_compile_shell_switches): Use scm_str2symbol
9572 instead of gh_symbol2scm.
9573
9574 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
9575 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
9576
9577 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
9578 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
9579
9580 First batch of changes for Elisp support...
9581
9582 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
9583 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
9584 throw.c, vectors.c, weaks.c: Add #include for lang.h.
9585
9586 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
9587 conditionalize compilation and initialization of Elisp support
9588 function.
34472dfe 9589
c96d76b8
NJ
9590 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
9591 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
9592 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
9593 filesys.c (fill_select_type, retrieve_select_type), fluids.c
9594 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
9595 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
9596 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
bbd26b5a
NJ
9597 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
9598 options.c (change_option_setting, scm_options), posix.c
9599 (environ_list_to_c), print.c (scm_iprlist), throw.c
9600 (scm_exit_status), vectors.c (scm_vector), weaks.c
9601 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
c96d76b8
NJ
9602
9603 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
9604 just SCM_FALSEP.
34472dfe 9605
c96d76b8
NJ
9606 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
9607 of just SCM_BOOLP.
9608
9609 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
9610 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
9611 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
9612 (scm_m_atfop): Support function aliasing. Support both function
9613 args, which need transformation, and macro args, which do not.
9614 Add explanatory comments.
9615 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
9616 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
9617 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
9618 SCM_NULLP || SCM_NILP instead of checks against (removed)
9619 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
9620 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
9621
9622 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
9623 scm_m_while, scm_nil_eq): Commented out; I don't think we need
9624 these, but I don't want to remove them yet, just in case.
9625 (scm_init_lang): Define `%nil' variable on Scheme level to hold
9626 Elisp nil value.
9627
9628 * lang.h (SCM_NILP): Test against Elisp nil value instead of
9629 against (removed) scm_lisp_nil.
9630 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
9631 (SCM_NULL_OR_NIL_P): New.
9632
9633 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
9634 SCM_VALIDATE_NULL.
9635
9636 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
9637 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
9638 value).
9639
9640 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
9641 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
9642 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9643 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9644
9645 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9646 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9647 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9648 Numbering shifted down accordingly.
9649 (SCM_ELISP_NIL): New IFLAG.
9650
9651 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
34472dfe 9652
a392ee15
DH
96532002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9654
9655 * eval.c: Removed outdated references to "everr". Improved some
9656 comments.
9657
9658 (scm_deval_args, deval_args): Renamed scm_deval_args to
9659 deval_args, since it is not part of the interface.
9660
9661 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9662 use references to debug.vect[0] before it exists. Add parentheses
9663 to switch statement.
9664
9665 * goops.h: Added local emacs variables.
9666
24933780
DH
96672002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9668
9669 * eval.[ch] (scm_deval_args): Made static.
9670
9671 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9672 test.
9673
9674 * strings.c (scm_c_string2str): Clarified comment. Replaced
9675 THINKME by FIXME for uniformness. Removed question about whether
9676 arguments need to be protected from garbage collection: Arguments
9677 must be protected as any other variable.
9678
f9450cdb
DH
96792002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9680
9681 * procs.h (SCM_CLOSURE_BODY): New Macro.
9682
9683 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9684 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9685 get_slot_value, set_slot_value), procs.c
9686 (scm_procedure_documentation), sort.c (closureless), stacks.c
9687 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9688 SCM_CLOSURE_BODY.
9689
9690 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9691
5dc64f64
MV
96922001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9693
9694 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9695 use "cp" instead.
9696
197ee3d3
MV
96972001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9698
9699 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9700 everywhere.
9701
9702 * continuations.c (scm_make_continuation): Do not retain the
9703 throw_value when the continuation is invoked.
9704
4d4528e7
SJ
97052001-12-08 Stefan Jahn <stefan@lkcc.org>
9706
9707 * strings.c (scm_c_string2str): New function. Converts a
34472dfe 9708 given Scheme string into a C string. Also put in two
4d4528e7
SJ
9709 THINKME's regarding the malloc policy for the missing converter
9710 routines.
9711
98347362
NJ
97122001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9713
9714 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9715 gh_symbol2scm.
9716
1fc8902f
DH
97172001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9718
9719 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9720 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9721
9722 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9723 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9724 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9725 macros.
9726
9727 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9728
9729 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9730 SCM_GC_CELL_* macros when accessing free cells.
9731
4878beec
MV
97322001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9733
9734 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
34472dfe 9735 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
4878beec
MV
9736 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9737 * strings.h (SCM_MAKE_STRING_TAG): New.
9738 * procs.h (SCM_MAKE_CCLO_TAG): New.
9739 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9740
9741 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9742 !SCM_ENABLE_DEPRECATED.
9743
9744 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9745 New.
9746
9747 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9748 signal handlers are allowed to divert the flow of control. Call
9749 scm_system_async_mark_from_signal_handler instead of
9750 scm_system_async_mark.
9751
9752
9753 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9754 scm_alloc_double_cell in their place.
34472dfe 9755
4878beec
MV
9756 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9757 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9758 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9759 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9760 scm_deprecated_newcell and scm_deprecated_newcell2.
9761
9762 gc.c (scm_tc16_allocated): Only define when including deprecated
9763 features.
9764 (scm_debug_newcell, scm_debug_newcell2): Removed.
9765 (scm_init_storage): Do not initialize scm_tc16_allocated.
9766 (scm_init_gc): Do it here.
9767 (allocated_mark): New, from old code.
9768 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
34472dfe 9769
4878beec 9770 * inline.c, inline.h: New files.
34472dfe 9771 * Makefile.am: Added them in all the right places.
4878beec 9772
34472dfe 9773 * _scm.h: Include "libguile/inline.h".
4878beec
MV
9774
9775 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9776 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9777 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9778 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9779 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9780 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9781 scm_alloc_double_cell, respectively.
9782
d2bc7fae
MV
97832001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9784
9785 * modules.c (scm_c_use_module): Adapt to changes to
9786 `process-use-modules'.
9787
5eec27e9
DH
97882001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9789
9790 * numbers.c (scm_divide): Fix more division by zero errors.
9791
8978878f
GH
97922001-11-21 Gary Houston <ghouston@arglist.com>
9793
9794 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9795 obsolete. autogen.sh says:
9796 invalid unused variable name: `OMIT_DEPENDENCIES'
9797
164826d3
DH
97982001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9799
9800 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9801 reporting the bug.
9802
84aff7a7
MV
98032001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9804
9805 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9806 Thanks to Eric Gillespie, Jr!
34472dfe 9807
6063dc1d
SJ
98082001-11-21 Stefan Jahn <stefan@lkcc.org>
9809
34472dfe
TTN
9810 * win32-socket.c (getservent, setservent, endservent,
9811 getprotoent, setprotoent, endprotoent): New functions.
6063dc1d
SJ
9812 Appropriate replacements for M$-Windows.
9813
9814 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9815 these definitions for GUILE_DEBUG.
9816
9817 * net_db.c: Include "win32-socket.h" if compiling with a native
34472dfe
TTN
9818 M$-Windows compiler. Include some pieces of code (protoent and
9819 servent interface) protected by HAVE_* macros when using a
6063dc1d
SJ
9820 native M$-Windows compiler.
9821
351982f6
MV
98222001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9823
9824 * modules.c (scm_c_export): Do nothing when the first argument is
9825 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9826
849038b5
TTN
98272001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9828
9829 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9830 also include `buildstamp'.
9831
5c790b44
RB
98322001-11-18 Rob Browning <rlb@defaultvalue.org>
9833
9834 * version.c
9835 (s_scm_major_version): use SCM_MAJOR_VERSION.
9836 (s_scm_minor_version): use SCM_MINOR_VERSION.
9837 (s_scm_micro_version): use SCM_MICRO_VERSION.
9838 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9839 SCM_MICRO_VERSION.
9840
9841 * version.h.in
9842 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9843 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9844 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9845
694a9bb3
NJ
98462001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9847
9848 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9849 Rewrite docstrings without reference to substring-move-left/right,
9850 since the latter no longer exist.
9851
302c12b4
DH
98522001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9853
9854 * eval.c: Removed bogus comment about acros.
9855
9856 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9857 Minimize scope of local variable. Eliminate dependency on
9858 macro DEBUG_EXTENSIONS.
9859
9860 (s_splicing): New error message string.
9861
9862 (scm_m_body): Issue 'bad body' message rather than 'missing
9863 expression' message.
9864
9865 (scm_m_quote): Eliminate unnecessary copying.
9866
9867 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9868 checking of the body to scm_m_body.
9869
9870 (scm_m_do): Move comment to function header. Rename arg1 to
9871 binding. Made the code a bit easier to read.
9872
9873 (evalcar): Removed.
9874
9875 (iqq): Added a comment. Changed the depth parameter to
9876 unsigned. Use size_t for vector lengths. Make sure vector object
9877 is gc protected as long as its contents are read. Add some syntax
9878 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9879 control structure a bit.
9880
9881 (scm_m_delay): Added comment about the implementation of
9882 scm_m_delay.
9883
9884 (scm_m_define): Add comment about guile's currying define
9885 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9886 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9887
9888 (scm_m_letrec1): Removed. Part of the functionality is taken
9889 over by the new function 'transform_bindings'.
9890
9891 (transform_bindings): New function. Takes over some of the
9892 functionality of removed function 'scm_m_letrec1', namely to split
9893 a list of bindings into a reversed list of variables and a list of
9894 initializers.
9895
9896 (scm_m_letrec): Call 'transform_bindings'.
9897
9898 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9899 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9900 test. Use 'transform_bindings'. Fixed scoping error with named
9901 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9902 Jerram for suggesting the fix). Cleaned up the control structure
9903 a bit.
9904
9905 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9906 unnecessary consing. Eliminated unnecessary
9907 SCM_DEFER/ALLOW_INTS.
9908
9909 (SCM_CEVAL): Un-obfuscated some loops.
9910
cecb4a5e
NJ
99112001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9912
8f85c0c6
NJ
9913 * gc.h (scm_unhash_name): Old declaration removed.
9914
9915 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9916 @code{primitive-eval}.
9917
9918 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9919 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9920 Change @deffnx lines in docstrings to say {Scheme Procedure}
9921 rather than primitive or procedure.
9922
9923 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9924 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9925 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9926 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9927 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9928 (scm_string_split, scm_string_ci_to_symbol), strings.c
9929 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9930 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9931 Docstring fixes and improvements reflecting edits that have been
9932 made in the reference manual source.
9933
9934 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9935 scm_object_property, scm_set_object_property_x): Remove invalid
9936 @deffnx lines for corresponding procedure property primitives.
9937
cecb4a5e
NJ
9938 These changes add a @deffnx C function declaration and function
9939 index entries for each Guile primitive to the copy of the doc
9940 snarf output that is used for reference manual synchronization.
9941 Online help is unchanged.
849038b5 9942
cecb4a5e
NJ
9943 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9944 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9945 name to SCM_SNARF_DOCS.
849038b5 9946
cecb4a5e
NJ
9947 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9948 snarf-check-and-output-texi.
9949
9950 * Makefile.am (guile-procedures.texi): New rule.
9951 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9952 Changed so that the last stage of doc snarfing is now performed
9953 twice, once to produce guile-procedures.txt for online help, and
9954 once to produce guile.texi for reference manual synchronization.
9955
ddea3325
DH
99562001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9957
9958 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9959 safely usable as a single statement followed by a ';', for example
9960 in an if statement.
9961
9962 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9963
72dd0a03
NJ
99642001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9965
9966 * random.c (scm_random_solid_sphere_x,
9967 scm_random_hollow_sphere_x): Correct "shere" typos.
9968
9969 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9970
9971 * version.c (scm_version): Update docstring to include
9972 `micro-version'.
9973
6558eda6
MV
99742001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9975
409b8588
MV
9976 * modules.c (scm_c_export): Call va_end after collecting the
9977 symbols.
9978
adb8c0f2
MV
9979 * strop.h, strop.c (scm_substring_move_left_x,
9980 scm_substring_move_right_x): Removed.
9981
6558eda6
MV
9982 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9983 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9984 configure does.
9985
5d8fc640
MV
99862001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9987
9988 * numbers.c: Document macros to define when including
9989 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9990 now rely on SIZEOF_ macros that have been figured out at
9991 configure time.
9992
9993 * num2integral.i.c: Adapt to new interface.
9994 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9995 target type by casting it and checking whether it is still the
9996 same. Do not try to handle bignums for integral types that are
9997 smaller than fixnums. When handling bignums, collect the
9998 magnituse first into a unsigned type, and correctly check for
9999 overflow.
10000 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
10001 only -MIN_VALUE can still be negative of all negative numbers (in
10002 twos-complement).
10003
849038b5 10004 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
10005
10006 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
10007 HAVE_LONG_LONG depending on whether their size is non-zero.
10008
d6b8cf11
TTN
100092001-11-11 Thien-Thi Nguyen <ttn@glug.org>
10010
10011 * strop.c (scm_string_null_p): Docfix; nfc.
10012 Thanks to Scott Lenser.
10013
9401323e
NJ
100142001-11-07 Neil Jerram <neil@ossau.uklinux.net>
10015
10016 * extensions.c (scm_load_extension): Canonicalize docstring
10017 whitespace.
10018
10019 * unif.c (scm_uniform_array_write), ports.c
10020 (scm_current_output_port, scm_force_output), dynwind.c
10021 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
10022 filesys.c (scm_open, scm_lstat), struct.c
10023 (scm_make_struct_layout), random.c (scm_random,
10024 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
10025 (scm_i_index): Remove superfluous whitespace from end of docstring
10026 lines.
10027
10028 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
10029 strings.c (scm_make_string), variable.c (scm_make_variable,
10030 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
10031 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
10032 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
10033 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
10034 newline at end of docstrings.
10035
10036 * modules.c (scm_set_current_module): Add missing newline to
10037 docstring.
10038
b4e15479
SJ
100392001-11-07 Stefan Jahn <stefan@lkcc.org>
10040
10041 * win32-socket.[ch]: New files. Defines Winsock-API error codes
10042 and makes them available through Guile. That is because the
10043 Winsock-API does not store its errors in `errno' and thus cannot
10044 return error messages via `strerror (errno)'.
10045
10046 * socket.c (scm_init_socket): Initialize `win32-socket' part
10047 here under M$-Windows.
10048
d6b8cf11 10049 * numbers.h: Added missing declaration of
b4e15479
SJ
10050 `scm_sys_check_number_conversions()'.
10051
10052 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
10053 and use in `(strerror)' and `(system-error)'.
10054
d6b8cf11 10055 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
10056 `win32-socket.[ch]' to extra source and header files.
10057
7ab89df1
MV
100582001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
10059
10060 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
10061 a call to turn-on-debugging when --debug has been given instead of
10062 turning it on directly. Also, handle new `--no-debug' option,
10063 which might suppress the call to turn-on-debugging.
10064
0233bfc1
SJ
100652001-11-05 Stefan Jahn <stefan@lkcc.org>
10066
10067 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
10068
8f99e3f3
SJ
100692001-11-04 Stefan Jahn <stefan@lkcc.org>
10070
10071 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 10072 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
10073 correctly and allows a clean build on Win32.
10074
d6b8cf11 10075 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
10076 into FOO.
10077
10078 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
10079 import macros for external libraries (libcrypt, libqthreads,
10080 libreadline and libregex).
10081
10082 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
10083
10084 * posix.c (flock): Added support for flock() in M$-Windows.
10085
10086 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
10087 of __SCM_IMPORT__.
10088
10089 * fports.c (getflags): Differentiate reading and writing pipes
10090 descriptors.
10091
10092 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
10093 M$-Windows.
10094
10095 * coop.c (coop_condition_variable_timed_wait_mutex): Use
10096 conditionalized error code if `ETIMEDOUT' is not available.
10097 (scm_thread_usleep): Remove bogus declaration of `struct timeval
10098 timeout'.
10099
10100 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
10101 belongs. That is because NO_PREPRO_MAGIC gets undefined after
10102 each inclusion of `num2integral.i.c'.
10103 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
10104
4e21fa60
MV
101052001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
10106
10107 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
10108 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
10109
08112c95
MD
101102001-11-02 Mikael Djurfeldt <mdj@linnaeus>
10111
7663c008
MD
10112 * print.c (scm_iprin1): Mark print state as revealed when
10113 dispatching to generic write or display.
10114
08112c95
MD
10115 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
10116
f712d833
MV
101172001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
10118
10119 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 10120
f712d833
MV
10121 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
10122 and win32-dirent.h to extra source and header files. These
10123 include the uname() and the POSIX dirent interface implementation
10124 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
10125 linkers which do not allow unresolved symbols inside shared
10126 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
10127 dependency.
10128
d6b8cf11
TTN
10129 * __scm.h: Defined SCM_API. This macro gets prepended to all
10130 function and data definitions which should be exported or imported
f712d833
MV
10131 in the resulting dynamic link library in the Win32 port.
10132
10133 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 10134 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
10135 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
10136 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
10137 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
10138 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
10139 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 10140 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
10141 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
10142 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
10143 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
10144 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
10145 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
10146 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
10147 vports.h, weaks.h:
10148 Prefixed each each exported symbol with SCM_API.
10149
d6b8cf11 10150 * continuations.c: Added comment about the use of the extern
f712d833
MV
10151 declarations of {get,set}context() functions used in the ia64 port.
10152
10153 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
10154 is meant to be a `unsigned long *'.
10155
10156 * filesys.c: Include `direct.h' if possible. Use local
10157 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
10158 macros for M$-Windows. Implementation of `fstat_Win32()' which is
10159 able to differentiate between sockets and other file descriptors.
10160 Use this function as wrapper in `scm_fstat()'. Fixed typo in
10161 `scm_dirname()'.
10162
10163 * fports.c: Include `io.h' is possible. Put `*fp' into referring
10164 statement block in `scm_fport_buffer_add()'.
10165 Some corrections in `getflags()'.
d6b8cf11 10166
f712d833
MV
10167 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
10168
10169 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
10170 build on Win32. Disable preloaded symbols on Win2 platforms.
10171
10172 * ioext.c, ports.c: Include `io.h' is possible.
10173
10174 * mkstemp.c: Include `process.h' is possible.
10175
10176 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
10177 too.
10178 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
10179
10180 * posix.c: Remove unnecessary dirent includes and defines. Include
10181 local `win32-uname.h' for MinGW. Extern declaration of
10182 `mkstemp()' for systems where it does not exists. Make
10183 `getlogin()' available on M$-Windows.
10184
10185 * scmsigs.c: Made `usleep()' avalable on MinGW.
10186
10187 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
10188
10189 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
10190
10191 * win32-uname.c: Include "win32-uname.h", not "uname.h".
10192
d245ce23
MD
101932001-10-28 Mikael Djurfeldt <mdj@linnaeus>
10194
10195 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
10196 Don't apply scm_uniform_vector_length on arrays.
10197
8ea46249
DH
101982001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
10199
10200 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
10201 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
10202 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
10203 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
10204 scm_list_<n> over scm_cons[2]?.
10205
10206 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
10207 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
10208 SCM_C[AD][AD]R instead of explicit form.
10209
10210 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
10211 comparison parameters.
10212
10213 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
10214 !SCM_NULLP instead of SCM_NIMP.
10215
10216 (scm_m_case): Don't copy the form. Renamed proc to clause and
10217 minimized its scope. Renamed x to clauses. Removed side
10218 effecting operation from macro call.
10219
10220 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
10221 minimized its scope. Renamed x to clauses. Minimized the scope
10222 of variable 'len'. Make sure the else clause is treated specially
10223 even in case of '=>' occurences. Don't change the else to #t in
10224 order to be able to distinguish this case in the evaluator. Leave
10225 type checking of the recipient to the evaluator.
10226
10227 (scm_c_improper_memq): Made the comment somewhat clearer.
10228
10229 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
10230 test for SCM_IM_LET at the place of the formal parameters.
10231 Simplified the formal parameter checking.
10232
10233 (scm_m_letstar): Added Comment. Renamed proc to bindings.
10234 Renamed arg1 to binding and minimized its scope. Eliminated
10235 unnecessary consing.
10236
10237 (scm_m_do): Renamed proc to bindings. Minimized the scope of
10238 variable 'len'.
10239
10240 (build_binding_list): New static function.
10241
10242 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
10243 Further, split up the 'letrec' unmemoizing code to the
10244 corresponding parts for 'do', 'let' and 'letrec', adding comments
10245 to each form. Cleanup the handling of the do form (This removes
10246 some *real* code :-).
10247
10248 (SCM_CEVAL): Removed side effecting operation from macro call.
10249 Handle the 'else clause of the 'cond form specially - the symbol
10250 'else is not replaced with #t any more.
10251
8186c4f5
GH
102522001-10-14 Gary Houston <ghouston@arglist.com>
10253
10254 * version.c (scm_version): use sprintf instead of snprintf,
10255 for portability. thanks to Bill Schottstaedt.
10256
89759084
MD
102572001-10-14 Mikael Djurfeldt <mdj@linnaeus>
10258
10259 * read.c (scm_lreadr): When user-defined hash procedure returns
10260 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
10261 an exception. (This prevents parsing of uniform vectors from
10262 interfering with parsing of numbers.)
10263
9c7ce563
MV
102642001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
10265
10266 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
10267 PTRDIFF_MIN. Thanks to Ken Raeburn.
10268
102692001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
10270
10271 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
10272
10273 * eval.c (scm_m_atbind): First try to find the variable without
10274 defining it locally; when it has not been found, define it
10275 locally.
10276
10277 * modules.c (module_variable): Pass over variables that exist but
10278 are unbound.
10279
102802001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10281
10282 * backtrace.c (display_backtrace_file_and_line): Only use
10283 scm_basename when POSIX support is compiled in. Thanks to Chris
10284 Cramer.
10285
1fe5e088
DH
102862001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10287
10288 * numbers.c (mem2uinteger): Return number read so far when coming
10289 across a hexdigit after having read a # or if not reading a hex
10290 value. This will enable the calling code to correctly handle
10291 forms like 1e2. (The background is, that the exponent markers d,
10292 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
10293 providing this patch.
10294
10295 (mem2complex): Fix erroneous double-negation. Now, numbers like
10296 1-i will be read correctly.
10297
68665a97
MD
102982001-10-12 Mikael Djurfeldt <mdj@linnaeus>
10299
10300 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
10301
10302 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
10303
d5cf5324
DH
103042001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
10305
10306 * print.c (scm_print_state_vtable, print_state_pool):
10307 Initialize. These variables are now registered as gc roots.
10308
10309 (scm_current_pstate): Update documentation.
10310
10311 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
10312 scm_prin1, scm_init_print): print_state_pool is registered as a
10313 gc root and thus does not need to be protected by a surrounding
10314 pair any more.
10315
10316 (make_print_state): The car of print_state_pool no longer holds
10317 the scm_print_state_vtable.
10318
10319 (scm_current_pstate, scm_make_print_state, print_circref,
10320 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
10321 SCM_N<foo>.
10322
10323 (scm_prin1): When building lists, prefer scm_list_<n> over
10324 scm_cons[2]?.
10325
10326 (scm_iprlist): Removed a redundant SCM_IMP test.
10327
10328 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
10329
37c56aec
DH
103302001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10331
10332 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
10333
10334 (scm_memcons, scm_mem_to_proc): When building lists, prefer
10335 scm_list_<n> over scm_cons[2]?.
10336
10337 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
10338
10339 (scm_procedure_name): Use SCM_CADR instead of explicit form.
10340
10341 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
10342 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
10343 for some reason his patch didn't make it into the cvs.
10344
79d34f68
DH
103452001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
10346
10347 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
10348 little bit - should even be somewhat more accurate now.
10349
5e137c65
RB
103502001-10-08 Rob Browning <rlb@defaultvalue.org>
10351
10352 * gc.c: support ia64 register backing store.
10353 (SCM_MARK_BACKING_STORE): new macro.
10354
10355 * continuations.h: support ia64 register backing store.
10356 (struct scm_t_contregs): add ia64 register backing store.
10357
10358 * continuations.c: support ia64 register backing store.
10359 (continuation_mark): mark ia64 register backing store.
10360 (continuation_free): free ia64 register backing store.
10361 (scm_make_continuation): capture ia64 register backing store.
10362 (copy_stack_and_call): copy ia64 register backing store.
10363
ee083ac2
DH
103642001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10365
10366 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
10367 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
10368 instead of SCM_NIMP to test for that case.
10369
10370 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
10371 scm_t_bits instead of long.
10372
71dcdbf9
MV
103732001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10374
10375 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
10376 SCM_T_SIGNED_BITS_MIN): New.
10377 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
10378 Use them to make these macros computable by the preprocessor.
10379
10380 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
10381 whether the integral type fits in a fixnum, not the compiler.
10382 This removes a spurious compiler warning. Also, honor the
10383 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
10384 needed for `long long's.
10385
10386 * numbers.c: Define NO_PREPRO_MAGOC when including
10387 num2integral.c.i for `long long' and `signed long long'.
10388
152812c0
MD
103892001-10-06 Mikael Djurfeldt <mdj@linnaeus>
10390
10391 These changes fixes a race condition in the Guile coop - pthread
10392 compatibility code.
d6b8cf11 10393
152812c0
MD
10394 * coop.c (mother_awake_p): New variable.
10395 (coop_create): Set mother_awake_p before creating or signalling
10396 mother; wait until mother is going to sleep before returning.
10397 (mother): Reset mother_awake_p before going to sleep.
10398
11d49f54
DH
103992001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10400
10401 * options.c (protected_objects, scm_init_options): The content of
10402 protected_objects is now protected from garbage collection using
10403 scm_gc_register_root instead of scm_permanent_object.
10404
10405 (get_option_setting): New static function that computes an option
10406 setting as it was formerly done in the function scm_options.
10407
10408 (get_documented_option_setting): New static function that
10409 returns option documentation as it was formerly done in the
10410 function scm_options. Note that documentation C strings are no
10411 longer precomputed into SCM objects. Instead, they are converted
10412 into SCM strings every time get_documented_option_setting is
10413 called.
10414
10415 (change_option_setting): New static functions that modifies the
10416 option setting as it was formerly done in the function
10417 scm_options. The function is now exception safe, i. e. won't
10418 cause a memory leak when interrupted. Further, only non-immediate
10419 option values are added to the protection list.
10420
10421 (scm_options): This function now has only the purpose to dispatch
10422 to to get_option_setting, get_documented_option_setting or
10423 change_option_setting, depending on the arguments given to
10424 scm_options.
10425
10426 (scm_init_opts): Don't convert documentation C strings into SCM
10427 strings. Further, don't protect any object values: They _must_
10428 be immediate values, otherwise there is no guarantee that they
10429 have not been collected before anyway.
10430
10431 * options.[ch] (scm_t_option): Made type unsigned, name into a
10432 constant char* and val into a scm_t_bits type.
10433
10434 (scm_options, scm_init_opts): The number of options is guaranteed
10435 to be larger or equal to zero. Thus, the type is changed to
10436 unsigned.
10437
3dbacabc
DH
104382001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10439
10440 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
10441 testing an unsigned value for being >= 0.
10442
14282d0f
DH
104432001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10444
10445 * numbers.h: Removed old comment about using SCM_CAR to access
10446 non-pair cells.
10447
10448 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
10449 the return value is signed. Thanks to Brian Crowder for the bug
10450 report.
10451
10452 (SCM_SRS): Avoid unnecessary casting and don't unpack input
10453 values. With this patch, SCM_SRS can be safely used for other
10454 types than scm_t_signed_bits. However, it should still better be
10455 an internal macro and thus be renamed to SCM_I_SRS.
10456
10457 (SCM_MAKINUM, SCM_INUM): Use proper casting.
10458
2dbec7b5
GH
104592001-10-03 Gary Houston <ghouston@arglist.com>
10460
10461 * continuations.h, unif.h: in the descriptions of the bit patterns
10462 of the heap cells, make bit 0 the least significant.
10463
cf4ee841
TTN
104642001-09-25 Thien-Thi Nguyen <ttn@glug.org>
10465
10466 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
10467 Thanks to Golubev I. N.
10468
4a151b3d
GH
104692001-09-25 Gary Houston <ghouston@arglist.com>
10470
10471 * ports.c (scm_drain_input): extended the docstring. thanks to
10472 Alex Schroeder and Thien-Thi Nguyen.
10473
581ded70
MD
104742001-09-23 Mikael Djurfeldt <mdj@linnaeus>
10475
10476 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
10477 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
10478 macros. (The NUM names might soon change.)
10479
10480 * numbers.h: Added missing declarations.
10481
5437598b
MD
104822001-09-22 Mikael Djurfeldt <mdj@linnaeus>
10483
10484 * Makefile.am: Distribute num2float.i.c.
10485
10486 * num2float.i.c: New file, multiply included by numbers.c, used
10487 to "templatize" the float <-> num conversion routines.
10488
10489 * numbers.c: New functions: scm_num2float, scm_float2num,
10490 scm_num2double, scm_double2num.
10491
0b073f0f
RB
104922001-09-21 Rob Browning <rlb@defaultvalue.org>
10493
10494 * .cvsignore: really add version.h
10495
10496 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
10497 Otherwise it fails on the alpha. However, we might rather choose
10498 this size conditionally.
10499
10500 * numbers.c (scm_gcd): change "k" to a long from an int.
10501 Otherwise it fails on the alpha. However, we might rather choose
10502 this size conditionally.
10503
10504 * error.c (scm_wta): coerce char* to intptr_t before int
10505 assignment.
10506
10507 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
10508 int.
10509
10510 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
10511
2830fd91
MD
105122001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10513
10514 * numbers.c (scm_integer_expt): Accept inexact integer in second
10515 argument. (Thanks to Bill Schottstaedt.)
10516
c13f0a90
RB
105172001-09-20 Rob Browning <rlb@defaultvalue.org>
10518
10519 * .cvsignore: add version.h
10520
10521 * versiondat.h.in: removed (obsolete).
10522
10523 * version.h.in: renamed from version.h.
10524 (SCM_GUILE_MAJOR_VERSION): new public macro.
10525 (SCM_GUILE_MINOR_VERSION): new public macro.
10526 (SCM_GUILE_MICRO_VERSION): new public macro.
10527
10528 * version.h: renamed to version.h.in.
10529
10530 * version.c
10531 (scm_major_version): support integer *_VERSION macros.
10532 (scm_minor_version): support integer *_VERSION macros.
10533 (scm_micro_version): support integer *_VERSION macros.
10534 (scm_version): support integer *_VERSION macros.
10535
147c18a0
MD
105362001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10537
10538 * error.c, error.h: Made error keys globally accessible.
10539 Applications might want to test for these or use them in a direct
10540 call to scm_error.
10541
10542 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
10543 routines are passed an inexact. This change in behavior is
10544 motivated by concordance with R5RS: It is more common that a
10545 primitive doesn't want to accept an inexact for an exact.
10546
662c5539
DH
105472001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10548
10549 The following patch partially undoes my patch from 2001-06-30,
10550 where I added the function scm_gc_mark_cell_conservatively. The
10551 function is buggy, since it breaks guile during conservative
10552 marking if a pointer on the stack points directly into the list of
10553 free cells on the heap: With conservative cell marking this will
10554 cause the whole free list to be scanned and marked - boom!
10555
10556 * gc.c (allocated_mark, MARK, heap_segment,
10557 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 10558 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
10559 scm_gc_mark_cell_conservatively and update the corresponding
10560 comments and uses accordingly. Thanks to Christopher Cramer for
10561 the patch. (Minor corrections by me.)
10562
6c1b7628
GH
105632001-09-15 Gary Houston <ghouston@arglist.com>
10564
10565 * root.h (scm_root_state): removed the continuation_stack and
10566 continuation_stack_ptr members, which have no apparent purpose.
10567 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
10568 removed.
662c5539 10569
6c1b7628
GH
10570 * root.c (root_mark), init.c (restart_stack, start_stack), gc
10571 (scm_igc): remove all references to contination_stack and
10572 continuation_stack_ptr, avoiding allocation of a vector and
10573 useless processing during gc.
10574
455c0ac8
DH
105752001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10576
10577 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
10578
10579 (TCONC_IN): Make sure that the cell word 0 is initialized last.
10580
10581 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
10582
10583 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
10584
10585 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
10586 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
10587
22ba637b
DH
105882001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10589
10590 * guardians.c (mark_dependencies_in_tconc,
10591 whine_about_self_centered_zombies, scm_init_guardians): Register
10592 the static global variable `self_centered_zombies' via
10593 scm_gc_register_root, to make some cdr-ing unnecessary.
10594
c3c4d801
DH
105952001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10596
10597 * backtrace.c (display_backtrace_file,
10598 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
10599 values, use SCM_FALSEP when comparing SCM values against #f.
10600 Thanks to Rob Browning for the bug report.
10601
b00418df
DH
106022001-09-12 Martin Baulig <martin@home-of-linux.org>
10603
10604 * strings.[ch] (scm_str2string): New function.
10605
a0d34a0b
MV
106062001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
10607
10608 * gc.c (scm_done_free): Always subtract size from scm_mallocated
10609 when computing nm, even if it's negative.
10610 (scm_must_malloc): Abort on overflow of scm_mtrigger.
10611 (scm_must_realloc): Likewise.
10612
b10586f0
ML
106132001-09-01 Michael Livshin <mlivshin@bigfoot.com>
10614
10615 * numbers.c (scm_sys_check_number_conversions): new function,
10616 defined if Guile is compiled in debugging mode. currently checks
10617 `scm_num2ulong', should check much much more.
10618
10619 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
10620 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 10621
8c494e99
DH
106222001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10623
10624 * __scm.h: Added new section about compile time selectable
10625 features.
10626
10627 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
10628 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
10629 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
10630 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
10631 Removed.
10632
10633 * deprecation.c (scm_include_deprecated_features): Simplified.
10634
10635 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9a5fa6e9 10636 `SCM_IMP' instead of `!SCM_CELLP´.
8c494e99
DH
10637
10638 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
10639 Extract side-effecting operations from macros.
10640
10641 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
10642 scm_top_level_lookup_closure_var and scm_system_transformer.
10643
10644 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10645
10646 (heap_segment): Use CELL_P instead of SCM_CELLP.
10647
10648 * init.c (start_stack): Don't initialize
10649 scm_top_level_lookup_closure_var and scm_system_transformer.
10650
10651 * modules.c (scm_set_current_module): Don't access
10652 scm_top_level_lookup_closure_var and scm_system_transformer.
10653
10654 (scm_sym2var): Don't call scm_variable_set_name_hint.
10655
10656 (scm_post_boot_init_modules): Removed deprecated initializations.
10657
10658 * print.c (scm_ipruk): Don't access cell contents of non cells.
10659
10660 * strings.c (scm_string_set_x): All strings are writable.
10661
10662 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10663 type. There is only one string type now.
10664
10665 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10666
10667 * tags.h: Remove comments about two different string types.
10668
10669 (SCM_CELLP, SCM_NCELLP): Deprecated.
10670
10671 * variable.c (make_variable): Remove code variant for vcells.
10672
10673 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10674 SCM_VARIABLE_LOC): Remove code variant for vcells.
10675
10676 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10677 SCM_ENABLE_DEPRECATED with the logic reversed.
10678
10679 * dynl.c (moddata, registered_mods), dynl.[ch]
10680 (scm_register_module_xxx, scm_registered_modules,
10681 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10682 (*top-level-lookup-closure*), eval.[ch]
10683 (scm_top_level_lookup_closure_var, scm_system_transformer,
10684 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10685 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10686 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10687 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10688 scm_unprotect_object), modules.c (root_module_lookup_closure,
10689 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10690 beautify_user_module_x_var, try_module_autoload_var,
10691 scm_module_full_name), modules.[ch] (scm_the_root_module,
10692 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
cf4ee841 10693 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
8c494e99
DH
10694 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10695 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10696 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10697 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10698 scm_make_shared_substring), tags.h (scm_tc7_substring,
10699 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10700 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10701 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10702 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10703 Removed.
10704
10705 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10706 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10707 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10708 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10709 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10710 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10711 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10712 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10713 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10714 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10715 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10716 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10717 (setzone, scm_strftime, scm_strptime), vports.c
10718 (scm_make_soft_port): Remove calls to
10719 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10720 gone, all strings are 0-terminated anyway.
10721
10722 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10723 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10724 double inclusion of the same headers to the SCM_<filename>_H
10725 format.
10726
10727 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10728 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10729 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10730 any more.
10731
10732 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10733 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10734 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10735 !SCM_<foo> over SCM_N<foo>.
10736
dee01b01
DH
107372001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10738
10739 * Makefile.am: Remove references to symbols-deprecated.c.
10740
10741 * symbols.c (scm_init_symbols): Don't initialize deprecated
10742 symbol functions.
10743
10744 * symbols-deprecated.c: Removed.
10745
10746 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10747 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10748 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10749 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10750 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10751 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10752 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10753 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10754 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10755 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10756 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10757 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10758 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10759 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10760 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10761 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10762 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10763 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10764 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10765 scm_intern0, scm_sysintern, scm_sysintern0,
10766 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10767 scm_string_to_obarray_symbol, scm_intern_symbol,
10768 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10769 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10770 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10771 vectors.[ch] (scm_vector_set_length_x): Removed.
10772
10773 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10774 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10775 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10776 Renamed the macros that are defined to inhibit double inclusion of
10777 the same headers to the SCM_<filename>_H format.
10778
10779 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10780 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10781 SCM_N<foo>.
10782
b29058ff
DH
107832001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10784
10785 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10786 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10787 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10788 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10789 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10790 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10791 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10792 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10793 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10794 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10795 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10796 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10797
10798 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10799 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10800 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10801 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10802 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10803 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10804 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10805 double inclusion of the same headers to the SCM_<filename>_H
10806 format.
10807
10808 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10809 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10810 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10811 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10812 !SCM_<foo> over SCM_N<foo>.
10813
0527e687
DH
108142001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10815
10816 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10817 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10818 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10819 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10820 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10821 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10822 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10823 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10824 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10825 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10826 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10827 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10828 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10829 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10830 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10831 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10832 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10833 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10834 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10835 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10836 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10837 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10838 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10839 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10840 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10841 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10842 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10843 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10844 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10845 the macros that are defined to inhibit double inclusion of the
10846 same headers to the SCM_<filename>_H format.
10847
fada26b2
MV
108482001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10849
10850 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10851 "scm_t_portable" with "scm_port_table" which was an artifact from
10852 the great "scm_*_t -> scm_t_" renaming.
10853
e4d1c1ea
TTN
108542001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10855
10856 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10857 used; nfc. Thanks to Bill Schottstaedt.
10858
10859 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10860 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10861 Thanks to Chris Cramer.
10862
b573e744
MV
108632001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10864
10865 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10866
10867 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10868 dynamic scope.
10869 * dynwind.h (scm_swap_bindings): Declare.
10870 * dynwind.c (scm_swap_bindings): Make non-static.
10871
8a3e715b
ML
108722001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10873
10874 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10875 doing exactly nothing about them). thanks Neil!
10876
cf504ee0
NJ
108772001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10878
10879 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
ec2667f0 10880
43b83b54
TTN
108812001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10882
10883 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10884 (proto) in the case when either `GUILE_DEBUG' or
10885 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10886
10887 (map_free_list): Fix typo: Ref `f' correctly.
10888
10889 Thanks to Chris Cramer.
10890
ab4cd34b
RB
108912001-08-15 Rob Browning <rlb@defaultvalue.org>
10892
10893 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10894 variables.
10895 (libpath.h): change libguileversion to libguileinterface.
10896
b754e3d1
MV
108972001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10898
10899 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10900 ChangeLog-2000. Thanks to Daniel Skarda!
10901
8b1d12c7
ML
109022001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10903
10904 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10905 do it from the Makefile.
10906
10907 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10908 are of a reasonable size.
10909
baffb19f
NJ
109102001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10911
10912 * stacks.c (scm_make_stack): Improve docstring by explaining use
10913 of cutting args.
10914
c1151355
MV
109152001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10916
10917 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10918 scm_char_whitespace_p, scm_char_upper_case_p,
10919 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10920 characters to fulfill isascii in addition to the primary
10921 predicate.
10922
3c9a524f
DH
109232001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10924
10925 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10926 scm_istr2flo, scm_istring2number): Removed.
10927
10928 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10929 SCM_SLOPPY_<foo>.
10930
10931 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10932 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10933 Added.
10934
10935 (scm_string_to_number): Use new number parser.
10936
10937 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10938 handles complex numbers.
10939
10940 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10941 SCM_<foo>_H.
10942
10943 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10944 SCM_N<pred>.
10945
10946 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10947
10948 (scm_i_mem2number): Added.
10949
10950 (scm_exact_to_inexact): Changed signature.
10951
10952 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10953 here instead of within scm_i_mem2number. Call scm_i_mem2number
10954 instead of scm_istr2int and scm_istring2number.
10955
01f11e02
DH
109562001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10957
10958 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10959 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10960 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10961 !SCM_<pred> over SCM_N<pred>.
10962
10963 (scm_eval_body): Remove side effecting code from macro call.
10964
10965 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10966 SCM_NIMP test.
10967
6cf69537
DH
109682001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10969
10970 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10971
54866b6c
MV
109722001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10973
10974 Removed vcell slot from structs.
43b83b54 10975
54866b6c
MV
10976 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10977 subsequent indices.
10978
10979 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10980 zero. Use scm_vtable_index_layout instead of "0" when accessing
10981 said slot.
10982 (scm_init_struct): Remove vcell slot layout code from
10983 required_vtable_fields.
10984
10985 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10986
10987 * goops.c (build_class_class_slots): Removed vcell slot
10988 definition.
10989
10990 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10991 Removed vcell slot layout code.
10992 (scm_si_vcell): Removed.
10993
5b54c4da
MV
109942001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10995
a0f5718e 10996 "Glocs" have been removed.
43b83b54 10997
a0f5718e
MV
10998 * tags.h: Update tag system docs.
10999 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
11000 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
11001 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
11002 or SCM_NCONSP, respectively.
11003
11004 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
11005 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
11006 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
11007
11008 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
11009 tell glocs from structs.
43b83b54 11010
a0f5718e
MV
11011 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
11012
11013 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
11014 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
11015 instead of with glocs.
11016 (EVALCAR): Do not test for glocs.
11017 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
11018 condition.
11019 (scm_unmemocar): Do not handle glocs.
11020 (scm_m_atfop): Memoize as a variable, not as a gloc.
11021 (scm_eval_args, scm_deval_args): Do not handle glocs.
11022 (scm_ceval, scm_deval): Likewise.
43b83b54 11023
a0f5718e
MV
11024 * eval.h (SCM_XEVALCAR): Do not test for glocs.
11025 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
11026 Removed.
11027
11028 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
11029
11030 * dynwind.c (scm_swap_bindings): Likewise.
11031 (scm_dowinds): Updated to recognize lists of variables instead of
11032 lists of glocs.
11033
11034 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
11035
43b83b54 11036
5b54c4da
MV
11037 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
11038 where it is needed.
43b83b54 11039
3c3db128
GH
110402001-07-25 Gary Houston <ghouston@arglist.com>
11041
11042 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
11043 docstrings to reflect the n-ary implementation.
11044
dd29a169
MV
110452001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
11046
11047 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
11048 value of a variable, not the plain "return" statement.
11049
f5fe6c2f
MV
110502001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
11051
11052 * eval.c: Allow variables in memoized code (in addition to glocs).
11053 (scm_lookupcar): Handle variables in lost races. Replace symbol
11054 with variable directly, do not make a gloc.
11055 (scm_unmemocar): Rewrite variables using a reverse lookup, just
11056 like glocs.
11057 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
11058 the main switch.
11059
ee0c7345
MV
110602001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
11061
6d9ad98a
MV
11062 * variable.c (scm_i_variable_print): Use "value" instead of
11063 "binding" since a binding is the mapping between symbols and
11064 variables, not between variables and their values.
11065
ee0c7345
MV
11066 * tags.h (scm_tc7_variable): New.
11067 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
11068 * print.c (scm_iprin1): Likewise.
11069
11070 * variable.h (scm_tc16_variable): Removed.
11071 (SCM_VARIABLEP): Test for new tc7 code.
11072 (scm_i_variable_print): New.
11073 * variable.c (scm_tc16_variable): Removed.
11074 (variable_print): Renamed to scm_i_variable_print and made
11075 non-static.
11076 (variable_equal_p): Removed.
11077 (make_variable): Construct a tc7 object instead of a smob.
11078 (scm_init_variable): Do not register smob.
43b83b54 11079
f3805ebb
MV
110802001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
11081
11082 * tags.h: Include inttypes.h when we have it.
11083
110842001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
11085
11086 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
11087 is taken by the new SCM_IM_CALL_WITH_VALUES.
11088 * print.c (scm_isymnames): Update table accordingly.
43b83b54 11089
6a1677a3
GH
110902001-07-22 Gary Houston <ghouston@arglist.com>
11091
11092 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
11093 SCM_MAKINUM to convert regoff_t value to SCM.
11094
1bed8c28
GH
110952001-07-21 Gary Houston <ghouston@arglist.com>
11096
11097 * scmsigs.c: include sys/time.h for itimer stuff.
11098
e658215a
RB
110992001-07-19 Rob Browning <rlb@defaultvalue.org>
11100
11101 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
11102
11103 * c-tokenize.lex: add option %nounput to quiet warning.
11104 Add prototype for yylex to quiet warning.
11105
11106 * scmconfig.h.in: add flags for setitimer and getitimer.
11107
11108 * scmsigs.h (scm_init_scmsigs): new prototype.
11109 (scm_init_scmsigs): new prototype.
11110
11111 * scmsigs.c (s_scm_setitimer): new function.
11112 (s_scm_setitimer): new function.
11113
58ade102
MG
111142001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11115
11116 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
11117 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
11118 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
11119 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
11120 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
11121 guile-func-name-check.in, guile-snarf-docs-texi.in,
11122 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
11123 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
11124 objprop.c, objprop.h, options.c, options.h, random.h,
11125 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
11126 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
11127 version.c, version.h: Updated copyright notice.
11128
6b80d352
DH
111292001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11130
11131 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
11132 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
11133 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
11134 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
11135 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
11136 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
11137 sym_environment, scm_sym_change_class): New static variables to
11138 hold predefined symbols.
11139
11140 (build_class_class_slots): Build the list using scm_list_n
11141 instead of cons. Also, slots are already created as lists, thus
11142 making a call to maplist unnecessary.
11143
11144 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
11145 scm_class_direct_subclasses, scm_class_direct_methods,
11146 scm_class_precedence_list, scm_class_slots, scm_class_environment,
11147 scm_method_procedure, create_standard_classes, purgatory): Use
11148 predefined symbols.
11149
11150 (build_slots_list, compute_getters_n_setters,
11151 scm_sys_initialize_object, scm_sys_inherit_magic_x,
11152 get_slot_value_using_name, set_slot_value_using_name,
11153 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
11154 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
11155 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
11156
11157 (scm_sys_prep_layout_x): Minimize variable scopes.
11158
11159 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
11160 scm_sys_fast_slot_set_x): Fix signedness.
11161
11162 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
11163 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
11164 scm_memoize_method, scm_wrap_object): Use packing and unpacking
11165 when converting to and from SCM values.
11166
11167 (scm_enable_primitive_generic_x): Add rest argument checking.
11168
11169 (map, filter_cpl, maplist, scm_sys_initialize_object,
11170 scm_sys_prep_layout_x, slot_definition_using_name,
11171 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
11172 call_memoize_method, scm_make, scm_make_class): Prefer explicit
11173 predicates over SCM_N?IMP tests.
11174
11175 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
11176 checking.
11177
11178 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
11179 alias.
11180
63bcad19
DH
111812001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11182
11183 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
11184
11185 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
11186
11187 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
11188
11189 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
11190
4d6aae71
ML
111912001-07-12 Michael Livshin <mlivshin@bigfoot.com>
11192
11193 * strings.c (s_scm_string): fix arg position in assert.
11194
4b8ec619
GH
111952001-07-11 Gary Houston <ghouston@arglist.com>
11196
11197 * strports.c (st_write): use memcpy, not strncpy. thanks to
11198 Dale P. Smith.
11199
dbb640bd
TTN
112002001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
11201
11202 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
11203 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
11204 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
11205 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
11206 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
11207 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
11208 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
11209 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
11210 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
11211 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
11212 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
11213 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
11214 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
11215 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
11216 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
11217 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
11218 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
11219 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
11220 weaks.c, weaks.h: Remove "face-lift" comment.
11221
fd6c6321
RB
112222001-07-08 Rob Browning <rlb@defaultvalue.org>
11223
11224 * .cvsignore: add stamp-h.in.
11225
f91e4547
MG
112262001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11227
11228 * hooks.c (scm_make_hook, scm_add_hook_x),
11229 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
11230 value info to the docstrings.
11231
7beabedb
MG
112322001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11233
11234 Some more compatibility patches for Windows.
dbb640bd 11235
7beabedb
MG
11236 * posix.c (getlogin): getlogin() implementation for Windows.
11237
11238 * backtrace.c, ioext.c: Include <stdio.h>.
11239
11240 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
11241 exist.
11242
11243 * cpp_sig_symbols.in: Added SIGBREAK.
11244
0d0560d0
MV
112452001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
11246
11247 * strports.c (scm_read_0str, scm_eval_0str): Call
11248 scm_c_read_string and scm_c_eval_string respectively, not
11249 themselves. Thanks to Dale P. Smith!
11250
9a97e362
DH
112512001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11252
11253 * unif.c (scm_array_set_x): The variable args does not
11254 necessarily have to be a list. Further, got rid of a redundant
11255 SCM_NIMP test.
11256
592996c9
DH
112572001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11258
11259 * list.c (SCM_I_CONS): Make sure the cell type is initialized
11260 last.
11261
11262 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
f91e4547 11263 init_heap_seg): Fixed signedness.
592996c9
DH
11264
11265 (init_heap_seg): Replaced strange for-loop with a while loop.
11266
11267 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
11268
11269 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
11270
11271 The following patch adds conservative marking for the elements of
11272 free or allocated cells.
11273
11274 * gc.c (allocated_mark, heap_segment): New static functions.
11275
11276 (which_seg): Deleted, since the functionality is now provided by
11277 function heap_segment.
11278
11279 (map_free_list): Use heap_segment instead of which_seg.
11280
11281 (MARK): If cell debugging is disabled, mark free cells
11282 conservatively.
11283
11284 (scm_mark_locations, scm_cellp): Extracted the search for the
11285 heap segment of a SCM value into function heap_segment.
11286
11287 (scm_init_storage): Allocated cells must be marked
11288 conservatively.
11289
11290 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
11291
11292 The following patch changes the representation of weak vectors to
11293 double cells instead of using an extension of the vector's
11294 allocated memory.
11295
11296 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
11297 the result of SCM_WVECT_GC_CHAIN.
11298
11299 (scm_gc_sweep): Weak vectors don't have extra fields any more.
11300
11301 * weaks.c (allocate_weak_vector): New static function. It does
11302 not patch any previously created vector object during the
11303 construction of a weak vector, and thus doesn't need to switch
11304 off interrupts during vector creation.
11305
11306 (scm_make_weak_vector, scm_make_weak_key_hash_table,
11307 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11308 Use allocate_weak_vector to provide the new weak vector object.
11309
11310 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
11311 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
11312 now stored in the double cell.
11313
11314 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
11315 Use SCM_WVECT_TYPE.
11316
11317 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
11318 using an entry of the double cell.
11319
4dadf664
TTN
113202001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
11321
11322 * stamp-h.in: bye bye
11323
02202352
MV
113242001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
11325
11326 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
11327 scm_eval_0str.
11328
11329 * load.c, load.h (scm_c_primitive_load,
11330 scm_c_primitive_load_path): New.
11331
11332 * strports.c, strports.h (scm_c_read_string): Renamed from
11333 scm_read_0str. Also, added "const" qualifier to argument.
11334 (scm_c_eval_string): Renamed from scm_eval_0str.
11335 (scm_read_0str, scm_eval_0str): Deprecated.
11336
df1ad0d1
MG
113372001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11338
11339 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
11340 SCM_LIST1.
11341
1afff620
KN
113422001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
11343
11344 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
11345 scm_list_n): New functions.
11346 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
11347 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
11348 (lots of files): Use the new functions.
4dadf664 11349
1afff620
KN
11350 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
11351
11352 * strings.c: #include "libguile/deprecation.h".
11353
b858464a
MG
113542001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11355
11356 * read.c (scm_lreadr): When reading a hash token, check for a
11357 user-defined hash procedure first, so that overriding the builtin
11358 hash characters is possible (this was needed for implementing
11359 SRFI-4's read synax `f32(...)').
4dadf664 11360
b858464a
MG
11361 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
11362 because the latter is unsigned now and breaks comparisons like
11363 (n < (scm_t_signed_bits)MIN_VALUE).
4dadf664 11364
d95c0b76
NJ
113652001-06-26 Neil Jerram <neil@ossau.uklinux.net>
11366
11367 * eval.h, eval.c (scm_call_4): New function.
11368
11369 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
11370 directly rather than dispatching to them via scm_ithrow and a lazy
11371 catch.
4dadf664 11372
d95c0b76
NJ
11373 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
11374 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
11375 for trap handler procedures.
11376
11377 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
11378 procedures not being #f.
11379
30e3be5a
ML
113802001-06-27 Michael Livshin <mlivshin@bigfoot.com>
11381
11382 * Makefile.am (c-tokenize.c): add rule to generate it.
11383 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
11384
11385 filter-doc-snarfage.c: remove.
11386
82893676
MG
113872001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11388
11389 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
11390
11391 The following set of changes makes compiling Guile under various
11392 Windows compilers easier. Compilation under GNU systems should
11393 not be affected at all.
11394
11395 Thanks to Stefan Jahn for all necessary information, patches and
11396 testing.
4dadf664 11397
82893676
MG
11398 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
11399 getpgrp, ttyname, primitive-fork and some header inclusion for
11400 Windows.
11401
11402 * random.c: Define M_PI, if not predefined and use __int64 for
11403 LONG64 under Windows.
11404
11405 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
11406 Windows and conditionalize some signal names.
11407
4dadf664 11408 * socket.c (scm_getsockopt): Added missing comma.
82893676
MG
11409 Include socket library header under Windows.
11410
11411 * stime.c (CLKTCK): Add cast to int, to make it compile under
11412 Windows.
11413
11414 * ports.c (truncate): New function, compiled only under Windows.
11415
11416 * net_db.c: Do not declare errno under Windows.
11417
11418 * iselect.h, inet_aton.c: Include socket library headers under
11419 Windows.
11420
11421 * guile.c (inner_main): Under Windows, initialize socket library
11422 and initialize gdb_interface data structures.
11423
11424 * gdb_interface.h: Under Windows, gdb_interface cannot be
11425 initialized statically. Initialize at runtime instead.
11426
11427 * fports.c (write_all): ssize_t -> size_t.
11428 (fport_print): Conditionalize call to ttyname().
11429 (getflags): New function, compiled only under Windows.
11430
11431 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
11432 primitives chown, link, fcntl.
11433 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
11434 as path seperator.
11435
11436 * backtrace.c: Include <io.h> under Windows.
11437
11438 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
11439
11440 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
11441 declaration.
11442
fdc28395
KN
114432001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
11444
11445 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11446 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
11447 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11448 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
11449 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
11450 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
11451 (scm_dynamic_wind, scm_dowinds), environments.c
11452 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
11453 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
11454 goops.c (GETVAR, purgatory, make_class_from_template,
11455 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
11456 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
11457 (scm_primitive_load), modules.c (scm_resolve_module,
11458 scm_c_define_module, scm_c_use_module, scm_c_export,
11459 module_variable, scm_eval_closure_lookup, scm_sym2var,
11460 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
11461 ports.c (scm_port_for_each), print.c (scm_printer_apply),
11462 properties.c (scm_primitive_property_ref), ramap.c (ramap,
11463 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
11464 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
11465 (scm_object_to_string, scm_call_with_output_string,
11466 scm_call_with_input_string), throw.c (scm_body_thunk,
11467 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
11468 scm_make_shared_array), vports.c (sf_flush, sf_write,
11469 sf_fill_input, sf_close): Use one of the above functions.
11470 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
11471
36284627
DH
114722001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11473
11474 * filesys.c (scm_close), ports.c (scm_close_port,
11475 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
11476 instead of SCM_NEGATE_BOOL.
11477
11478 * filesys.c (scm_stat): Clean up type dispatch.
11479
11480 * filesys.c (scm_stat), ports.c (scm_input_port_p,
11481 scm_output_port_p): Get rid of redundant IM type check.
11482
11483 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
11484 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
11485 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
11486 scm_return_entry), numbers.c (scm_number_to_string), objects.c
11487 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
11488 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
11489 scm_addr_vector), stime.c (scm_strftime), strings.c
11490 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
11491 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
11492 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11493 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
11494 instead of scm_makfromstr.
11495
11496 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
11497 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
11498 scm_read_hash_extend), stime.c (scm_strftime), strings.c
11499 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
11500 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
11501 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
11502 !SCM_<pred> over SCM_N<pred>.
11503
11504 * strings.[ch] (scm_makfromstr): Deprecated.
11505
11506 (scm_mem2string): New function, replaces scm_makfromstr.
11507
11508 * strings.c (scm_substring), strop.c (string_copy,
11509 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11510 (scm_symbol_to_string): Fix gc problem.
11511
11512 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
11513 SCM_<foo>_H.
11514
11515 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
11516 warning about comparing signed and unsigned values. This fix is
11517 not optimal, since it won't work reliably if sizeof (c_start) >
11518 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
11519 solution is to define this macro as an inline function, thus
11520 allowing to specifiy the types of c_start and c_end.
11521
13dcb666
DH
115222001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
11523
11524 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
11525 scm_t_debug_frame*.
11526
11527 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
11528 Rename <foo>H to SCM_<foo>_H.
11529
11530 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
11531 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11532
11533 (narrow_stack): Make i unsigned. Don't use side-effecting
11534 operations in conditions.
11535
11536 (narrow_stack, scm_make_stack, scm_stack_id,
11537 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
11538
11539 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
11540 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
11541 more.
11542
11543 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
11544 signedness.
11545
ea2c3968 11546 (scm_last_stack_frame): Remove bogus `;'.
13dcb666
DH
11547
11548 * stacks.h (SCM_FRAMEP): Fix type check.
11549
ac13d9d2
ML
115502001-06-25 Michael Livshin <mlivshin@bigfoot.com>
11551
ee0c0e03
ML
11552 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
11553 c-tokenize.c when doing maintainer-clean.
11554
ac13d9d2
ML
11555 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
11556
11557 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
11558 simplify.
11559
11560 * eval.c: all hash signs are in column 0.
11561
11562 * Makefile.am (guile_filter_doc_snarfage): build using
11563 c-tokenize.c, not filter-doc-snarfage.c.
11564 rearrange snarfing dependencies a bit.
11565
11566 * c-tokenize.lex: new file.
11567
16be44e5
MV
115682001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
11569
11570 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
11571 scm_t_srcpropso_plist. See the big type renaming.
11572 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
11573 Thanks to Seth Alves!
4dadf664 11574
16be44e5
MV
11575 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
11576 they aren't defined already.
11577
5843e5c9
DH
115782001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
11579
11580 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
11581 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
11582 problem.
11583
11584 * backtrace.c (display_expression, scm_set_print_params_x,
11585 display_application, display_frame, scm_backtrace), numbers.c
11586 (scm_istring2number), objects.c (scm_class_of,
11587 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
11588 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11589
11590 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
11591 always positive.
11592
11593 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
11594 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
11595
11596 * objects.c (scm_class_of): Type fix.
11597
11598 (scm_mcache_lookup_cmethod): Improved comment, simplified,
11599 eliminated goto.
11600
11601 * pairs.h (scm_error_pair_access): The function can return if
11602 called recursively.
11603
6b41a313
MG
116042001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11605
11606 * init.c (scm_init_guile_1): Removed initialization of tag.c.
11607
11608 * gdbint.c, init.c: Removed inclusion of tag.h.
11609
11610 * tag.h, tag.c: Removed files.
11611
11612 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
11613
fbbdb121
GH
116142001-06-20 Gary Houston <ghouston@arglist.com>
11615
11616 * deprecation.c, extensions.c, rw.c: include string.h.
11617
72c17ed0
GH
116182001-06-19 Gary Houston <ghouston@arglist.com>
11619
11620 * filter-doc-snarfage.c (process): added ungetc in
11621 MULTILINE_COOKIE case since otherwise it fails when there's no
11622 space between the '(' and the quote of the following string
11623 (gcc 3.0).
11624
4ff9f825
MV
116252001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11626
4927dd28
MV
11627 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
11628
b629af45
MV
116292001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11630
11631 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
0f002b27
MV
11632 extension takes place.
11633 * strings.h (SCM_STRING_LENGTH): Likewise.
11634 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4dadf664 11635
4ff9f825
MV
11636 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
11637 it.
11638
11639 * tags.h: Include <stdint.h> when we have it.
11640 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
11641 available. Else use "unsigned long".
11642 (scm_signed_bits_t): New.
11643
11644 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11645 (SCM_INUM): Cast result to scm_signed_bits_t.
11646
58bee6a8
TTN
116472001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11648
11649 * mkstemp.c: Update path to #include file scmconfig.h.
11650 Thanks to Golubev I. N.
11651
00d8d838
DH
116522001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11653
11654 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11655
ea2c3968 11656 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
00d8d838
DH
11657 the macro definition.
11658
11659 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11660 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11661 instead of SCM_INST_TYPE.
11662
11663 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11664 the object is a struct before accessing its struct flags.
11665
11666 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11667
495c67e5
GH
116682001-06-10 Gary Houston <ghouston@arglist.com>
11669
11670 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11671 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11672 work reliably anymore. try it from boot-9.scm instead.
11673
6a9003d3
MV
116742001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11675
11676 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
9a5fa6e9 11677 Thanks to Matthias Köppe!
58bee6a8 11678
47bcd646
ML
116792001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11680
a88ff5b6
ML
11681 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11682 space-happy C preprocessors.
11683
47bcd646 11684 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
9a5fa6e9 11685 inside cookies. thanks to Matthias Köppe!
47bcd646 11686
bab246f3
DH
116872001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11688
11689 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11690 keywords. Fix gc protection.
11691
11692 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11693 operations in macro calls.
11694
11695 * pairs.c (scm_error_pair_access): Avoid recursion.
11696
11697 Thanks to Matthias Koeppe for reporting the bugs that correspond
11698 to the following set of patches.
11699
11700 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11701 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11702 bitvector base address using SCM_BITVECTOR_BASE.
11703
11704 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11705 unsigned long*.
11706
dcb410ec
DH
117072001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11708
11709 * goops.c (SCM_CLASS_REDEF): Removed.
11710
11711 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11712 SCM_<foo>_H.
11713
11714 Thanks to Matthias Koeppe for reporting the bugs that correspond
11715 to the following set of patches.
11716
11717 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11718 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11719 scm_sys_allocate_instance, clear_method_cache,
11720 scm_sys_invalidate_method_cache_x, scm_make,
11721 create_standard_classes, scm_make_port_classes, scm_make_class,
11722 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11723
11724 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11725
11726 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11727
11728 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11729 UNARY_ELTS_CODE): Remove bogus break statement.
11730
11731 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11732 Don't access bit vectors elements as SCM objects.
11733
11734 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11735 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11736 Don't assign to an unpacked value.
11737
e81d98ec
DH
117382001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11739
11740 * __scm.h (SCM_NORETURN): Moved here from error.h.
11741
11742 (SCM_UNUSED): New macro.
11743
11744 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11745
11746 * backtrace.c (display_error_handler), continuations.c
11747 (continuation_print), debug.c (debugobj_print), dynwind.c
11748 (guards_print), environments.c (observer_print,
11749 core_environments_finalize, leaf_environment_cell,
11750 leaf_environment_print, eval_environment_print,
11751 eval_environment_observer, import_environment_define,
11752 import_environment_undefine, import_environment_print,
11753 import_environment_observer, export_environment_define,
11754 export_environment_undefine, export_environment_print,
11755 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11756 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11757 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11758 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11759 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11760 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11761 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11762 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11763 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11764 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11765 set_slot_value, test_slot_existence, scm_change_object_class,
11766 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11767 default_setter), guardians.c (guardian_print, guardian_gc_init,
11768 guardian_zombify, whine_about_self_centered_zombies), guile.c
11769 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11770 mallocs.c (malloc_print), numbers.c (scm_print_real,
11771 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11772 end_input_default, scm_port_print, fill_input_void_port,
11773 write_void_port), root.c (root_print), smob.c (scm_mark0,
11774 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11775 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11776 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11777 (scm_struct_free_0, scm_struct_free_standard,
11778 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11779 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11780 scm_handle_by_throw, scm_ithrow), weaks.c
11781 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11782 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11783 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11784
11785 * error.h (SCM_NORETURN): Moved to __scm.h.
11786
11787 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11788 Renamed <foo>H to SCM_<foo>_H.
11789
11790 * gc.c (debug_cells_gc_interval): New static variable.
11791
11792 (scm_assert_cell_valid): If selected by the user, perform
11793 additional garbage collections.
11794
11795 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11796 if additional garbage collections are desired.
11797
11798 (mark_gc_async): If additional garbage collections are selected
11799 by the user, don't call the after-gc-hook. Instead require the
11800 user to run the hook manually.
11801
11802 * pairs.c (scm_error_pair_access): New function. Only compiled
11803 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11804
11805 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11806
11807 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11808 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11809 is a real pair object. (Glocs are also accepted, but that may
11810 change.) If not, abort with an error message.
11811
17fa3fcf
DH
118122001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11813
11814 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11815
11816 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11817 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11818
feeedafb
MV
118192001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11820
11821 * extensions.c (scm_c_register_extension): Allow NULL as library
11822 name.
11823 (load_extension): Ignore NULL library names when comparing.
58bee6a8 11824
feeedafb
MV
11825 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11826 non-pointers are being compared. Thanks to Alexander Klimov!
11827
4bcdfe46
GH
118282001-06-04 Gary Houston <ghouston@arglist.com>
11829
11830 * rw.c (scm_write_string_partial): new procedure implementing
11831 write-string/partial in (ice-9 rw).
11832 * rw.h: declare scm_write_string_partial.
58bee6a8 11833
f480396b
MV
118342001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11835
feeedafb
MV
11836 * keywords.c (keyword_print): Substract 1 from length of symbol
11837 name, accounting for the silly dash.
11838
11839 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11840 Do not emit deprecation warning.
11841
f480396b
MV
11842 Added exception notice to all files.
11843
11844 * dynl.c: Include "deprecation.h".
11845
c794483c
MV
118462001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11847
11848 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11849 scm_clear_registered_modules): Deprecated.
11850
9454d8d5
RB
118512001-06-02 Rob Browning <rlb@cs.utexas.edu>
11852
11853 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11854 guile-snarf-docs-texi.
11855
11856 * fports.c: HAVE_ST_BLKSIZE changed to
11857 HAVE_STRUCT_STAT_ST_BLKSIZE.
11858 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11859 HAVE_STRUCT_STAT_ST_BLKSIZE.
11860
11861 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11862 HAVE_STRUCT_STAT_ST_RDEV.
11863 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11864 HAVE_STRUCT_STAT_ST_BLKSIZE.
11865 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11866 HAVE_STRUCT_STAT_ST_BLOCKS.
11867
114f9bab
MV
118682001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11869
b0c16cd9
MV
11870 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11871 of scm_eval_x to allow module changes between the forms in the
11872 string. Set/restore module using scm_c_call_with_current_module.
11873
114f9bab
MV
11874 * mkstemp.c: New file, slightly modified from libiberties
11875 mkstemps.c.
11876
c99f9605
ML
118772001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11878
11879 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11880 filter-doc-snarfage.c: new files.
11881
11882 * Makefile.am: add stuff to [build,] use and distribute
11883 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11884
11885 * guile-snarf.in: grok the new snarf output.
11886
11887 * snarf.h: make the output both texttools- and `read'-friendly.
11888
47bcd646
ML
11889 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11890 guile-snarf-docs. (should also deprecate, I guess. maybe not).
c99f9605 11891
7eb5d7b2
MV
118922001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11893
11894 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11895 error for unsupported format controls and for superflous
ec2667f0 11896 arguments. Thanks to Daniel Skarda!
7eb5d7b2
MV
11897
11898 * print.h, print.c (scm_print_symbol_name): Factored out of
11899 scm_iprin1.
11900 (scm_iprin1): Call it.
58bee6a8 11901
7eb5d7b2
MV
11902 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11903 weird names are printed correctly.
11904
11905 * print.c (scm_print_symbol_name): Symbols whose name starts with
11906 `#' or `:' or ends with `:' are considered weird.
11907
609c3d30
MG
119082001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11909
11910 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11911 and /.
11912
119132001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11914
11915 * debug.h: Removed prototype for scm_eval_string.
11916
8d09eb04
MG
119172001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11918
11919 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
58bee6a8 11920 (make-string 2000 #\!))' in an older version).
8d09eb04
MG
11921
11922 Change strncpy to memcpy to allow embedded NUL characters in
11923 symbol prefix.
11924
dd85ce47
ML
119252001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11926
fde50407
ML
11927 * hooks.c (scm_create_hook): deprecated.
11928 (make_hook): deleted.
11929 (scm_make_hook): all the hook creation code is now here.
11930
11931 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11932 a hook, make it permanent, and do a `scm_c_define' on it.
11933
dd85ce47
ML
11934 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11935
11936 * socket.c (s_scm_inet_pton): fix docstring quoting.
11937 (s_scm_inet_ntop): ditto.
11938
11939 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11940
11941 * hashtab.c (scm_internal_hash_fold): fix argument position in
11942 SCM_ASSERT.
11943
11944 * environments.c (s_scm_import_environment_set_imports_x): fix
11945 argument position in SCM_ASSERT.
11946
11947 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11948 (s_scm_make_iloc): ditto.
11949
729dbac3
DH
119502001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11951
11952 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11953
11954 * eval.c (promise_print): Read the promise's value as an object.
11955
11956 (SCM_CEVAL): Don't perform side-effecting operations in macro
11957 parameters.
11958
11959 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11960 conditional expression.
11961
11962 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11963 initializer.
11964
11965 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11966 text, removed redundant computation of effective_length and fixed
11967 the overflow check.
11968
11969 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11970 values.
11971
11972 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11973
11974 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11975
11976 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11977 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11978
11979 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11980
11981 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11982 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11983 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11984 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11985
11986 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11987
11988 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11989
ea2c3968 11990 * ramap.c (ramap_rp): Removed bogus `;'.
729dbac3
DH
11991
11992 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11993 problem.
11994
11995 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11996 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11997 Read SCM objects rather than scm_bits_t values.
11998
11999 * tags.h (SCM_VOIDP_TEST): Removed.
12000
12001 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
12002 value of 2 now corresponds to the former 1, the current 1
12003 corresponds to the former situation that SCM_VOIDP_TEST was
12004 defined.
12005
58bee6a8
TTN
12006 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
12007 If this appears to be not ANSI compliant, we will change it to
729dbac3
DH
12008 typedef struct scm_unused_struct { } * SCM;
12009 Thanks to Han-Wen Nienhuys for the suggestion.
12010
12011 * unif.c (scm_array_set_x): Fix typing problem, and use
12012 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
12013 dealing with uniform vectors.
12014
6b1b030e
ML
120152001-05-27 Michael Livshin <mlivshin@bigfoot.com>
12016
12017 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
12018 (scm_igc): mark from them, too (precisely, not conservatively!).
12019
12020 * root.h (scm_gc_registered_roots): new object in
12021 scm_sys_protects.
12022
12023 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
12024 `scm_protect_object'. shouldn't call it at all, though, it seems.
12025
12026 * gc.c (scm_[un]protect_object): deprecated.
12027 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
12028 (scm_gc_[un]register_root[s]): new.
12029
12030 * gc.h: add prototypes for scm_gc_[un]protect_object,
12031 scm_gc_[un]register_root[s].
12032
c014a02e
ML
120332001-05-26 Michael Livshin <mlivshin@bigfoot.com>
12034
12035 revert the controversial part of the 2001-05-24 changes.
12036
0120801d
MV
120372001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
12038
f4e0611e
MV
12039 * modules.c (scm_env_module): Exported to Scheme.
12040
0120801d 12041 * eval.c (scm_debug_opts): New option `show-file-name'.
729dbac3 12042
0120801d 12043 * debug.h (SCM_SHOW_FILE_NAME): New.
729dbac3 12044
0120801d
MV
12045 * backtrace.c: Include "libguile/filesys.h".
12046 (sym_base, display_backtrace_get_file_line,
12047 display_backtrace_file, display_backtrace_file_and_line): New.
12048 (display_frame): Call display_backtrace_file_and_line if that is
12049 requested.
12050 (display_backtrace_body): Call scm_display_backtrace_file if
12051 requested.
12052
12053 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
12054 Prototypes removed since there's no definition for these
12055 functions.
12056
880a7d13
MG
120572001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12058
12059 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
12060 Changed use of scm_array->scm_array_t and
12061 scm_array_dim->scm_array_dim_t to enable build with
12062 --disable-deprecated.
12063
1be6b49c
ML
120642001-05-24 Michael Livshin <mlivshin@bigfoot.com>
12065
12066 The purpose of this set of changes is to regularize Guile's usage
12067 of ANSI C integral types, with the following ideas in mind:
12068
d69c867a
ML
12069 - SCM does not nesessarily have to be long.
12070 - long is not nesessarily enough to store pointers.
1be6b49c
ML
12071 - long is not nesessarily the same size as int.
12072
12073 The changes are incomplete and possibly buggy. Please test on
12074 something exotic.
12075
12076 * validate.h
12077 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
12078 new macros.
12079
12080 * unif.h: type renaming:
12081 scm_array -> scm_array_t
12082 scm_array_dim -> scm_array_dim_t
12083 the old names are deprecated, all in-Guile uses changed.
12084
12085 * tags.h (scm_ubits_t): new typedef, representing unsigned
12086 scm_bits_t.
12087
12088 * stacks.h: type renaming:
12089 scm_info_frame -> scm_info_frame_t
12090 scm_stack -> scm_stack_t
12091 the old names are deprecated, all in-Guile uses changed.
12092
12093 * srcprop.h: type renaming:
12094 scm_srcprops -> scm_srcprops_t
12095 scm_srcprops_chunk -> scm_srcprops_chunk_t
12096 the old names are deprecated, all in-Guile uses changed.
12097
12098 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
12099 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
12100 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
12101 vectors.c, vports.c, weaks.c:
12102 various int/size_t -> size_t/scm_bits_t changes.
12103
12104 * random.h: type renaming:
12105 scm_rstate -> scm_rstate_t
12106 scm_rng -> scm_rng_t
12107 scm_i_rstate -> scm_i_rstate_t
12108 the old names are deprecated, all in-Guile uses changed.
12109
12110 * procs.h: type renaming:
12111 scm_subr_entry -> scm_subr_entry_t
12112 the old name is deprecated, all in-Guile uses changed.
12113
12114 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
12115 type renaming:
12116 scm_option -> scm_option_t
12117 the old name is deprecated, all in-Guile uses changed.
12118
12119 * objects.c: various long -> scm_bits_t changes.
12120 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
12121
12122 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
12123 SCM_I_FIXNUM_BIT.
12124
12125 * num2integral.i.c: new file, multiply included by numbers.c, used
12126 to "templatize" the various integral <-> num conversion routines.
12127
12128 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
12129 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
12130 deprecated.
12131 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
12132 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
12133 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
12134 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
12135 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
12136 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
12137 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
12138 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
12139 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
12140 scm_num2size): new functions.
12141
d69c867a 12142 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
1be6b49c
ML
12143
12144 * load.c: change int -> size_t in various places (where the
12145 variable is used to store a string length).
12146 (search-path): call scm_done_free, not scm_done_malloc.
12147
12148 * list.c (scm_ilength): return a scm_bits_t, not long.
12149 some other {int,long} -> scm_bits_t changes.
12150
12151 * hashtab.c: various [u]int -> scm_bits_t changes.
12152 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
12153 (scm_ihashx): n: uint -> scm_bits_t
12154 use scm_bits2num instead of scm_ulong2num.
12155
12156 * gsubr.c: various int -> scm_bits_t changes.
12157
12158 * goops.[hc]: various {int,long} -> scm_bits_t changes.
12159
d69c867a 12160 * gh_data.c (gh_num2int): no loss of precision any more.
1be6b49c
ML
12161
12162 * gh.h (gh_str2scm): len: int -> size_t
12163 (gh_{get,set}_substr): start: int -> scm_bits_t,
12164 len: int -> size_t
12165 (gh_<num>2scm): n: int -> scm_bits_t
12166 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
12167 (gh_length): return scm_bits_t, not unsigned long.
12168
12169 * gc.[hc]: various small changes relating to many things stopping
12170 being long and starting being scm_[u]bits_t instead.
12171 scm_mallocated should no longer wrap around.
12172
12173 * fports.h: type renaming:
12174 scm_fport -> scm_fport_t
12175 the old name is deprecated, all in-Guile uses changed.
12176
12177 * fports.c (fport_fill_input): count: int -> scm_bits_t
12178 (fport_flush): init_size, remaining, count: int -> scm_bits_t
12179
12180 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
12181 those prototypes, as the functions they prototype don't exist.
12182
12183 * fports.c (default_buffer_size): int -> size_t
12184 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
12185 default_size: int -> size_t
12186 (scm_setvbuf): csize: int -> scm_bits_t
12187
12188 * fluids.c (n_fluids): int -> scm_bits_t
12189 (grow_fluids): old_length, i: int -> scm_bits_t
12190 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
12191 scm_bits_t
12192 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
12193
12194 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
12195 the new and shiny SCM_NUM2INT.
12196
12197 * extensions.c: extension -> extension_t (and made a typedef).
12198
12199 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
12200 there are no nasty surprises if/when the various deeply magic tag
12201 bits move somewhere else.
12202
12203 * eval.c: changed the locals used to store results of SCM_IFRAME,
12204 scm_ilength and such to be of type scm_bits_t (and not int/long).
12205 (iqq): depth, edepth: int -> scm_bits_t
12206 (scm_eval_stack): int -> scm_bits_t
12207 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
12208 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
12209 i: int -> scm_bits_t
12210
12211 * environments.c: changed the many calls to scm_ulong2num to
12212 scm_ubits2num.
12213 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
12214
12215 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
12216
12217 * debug.h: type renaming:
12218 scm_debug_info -> scm_debug_info_t
12219 scm_debug_frame -> scm_debug_frame_t
12220 the old names are deprecated, all in-Guile uses changed.
12221 (scm_debug_eframe_size): int -> scm_bits_t
12222
12223 * debug.c (scm_init_debug): use scm_c_define instead of the
12224 deprecated scm_define.
12225
12226 * continuations.h: type renaming:
12227 scm_contregs -> scm_contregs_t
12228 the old name is deprecated, all in-Guile uses changed.
12229 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
12230 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
12231
12232 * continuations.c (scm_make_continuation): change the type of
d69c867a 12233 stack_size from long to scm_bits_t.
1be6b49c
ML
12234
12235 * ports.h: type renaming:
12236 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
12237 scm_port -> scm_port_t
12238 scm_ptob_descriptor -> scm_ptob_descriptor_t
12239 the old names are deprecated, all in-Guile uses changed.
12240 (scm_port_t.entry): int -> scm_bits_t.
12241 (scm_port_t.line_number): int -> long.
12242 (scm_port_t.putback_buf_size): int -> size_t.
12243
12244 * __scm.h (long_long, ulong_long): deprecated (they pollute the
d69c867a 12245 global namespace and have little value beside that).
1be6b49c
ML
12246 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
12247 SCM handle).
12248 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
d69c867a 12249 exist (for size_t & ptrdiff_t).
1be6b49c
ML
12250 (scm_sizet): deprecated.
12251
12252 * Makefile.am (noinst_HEADERS): add num2integral.i.c
12253
a6219f22
MV
122542001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
12255
12256 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
12257 SCM_VARIABLE_INIT since that it what it used to be.
12258
12259 * deprecation.c (scm_include_deprecated_features): Make docstring
9a5fa6e9 12260 ANSIsh. Thanks to Matthias Köppe!
a6219f22 12261
311b6a3c
MV
122622001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
12263
9dfc4faa
MV
12264 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
12265 needed for weak-key hashtables.
12266
12267 * procs.c (scm_make_subr_with_generic): Add missing last argument
12268 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
12269
12270 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
12271 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
311b6a3c
MV
12272
12273 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
12274
2fc933fe
MV
122752001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
12276
57ae112d
MV
12277 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
12278 `duplicate_string'. Do not use an indirect cell, store symbol
12279 directly in collision list of hash table.
12280 (duplicate_string): Removed.
58bee6a8 12281
57ae112d
MV
12282 * init.c (scm_init_guile_1): Call scm_init_extensions.
12283
12284 * Makefile.am: Add "extensions.c" and related files in all the
12285 right places.
12286
12287 * extensions.h, extension.c: New files.
12288
12289 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
12290
2fc933fe
MV
12291 * modules.h (scm_system_module_env_p): Move out of deprecated
12292 section.
12293
12294 * rw.h (scm_init_rw): Added prototype.
12295
12296 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
12297 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
12298 New functions. They replace scm_make_gsubr and
12299 scm_make_gsubr_with_generic. The `make' variants only create the
12300 gsubr object, while the `define' variants also put it into the
12301 current module. Changed all callers.
12302 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
12303
12304 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
12305 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
12306 functions. They replace scm_make_subr, scm_make_subr_opt and
12307 scm_make_subr_with_generic. The `make' variants only create the
12308 subr object, while the `define' variants also put it into the
12309 current module. Changed all callers.
12310 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
12311 Deprecated.
12312
12313 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
12314 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
12315 the comments above.
58bee6a8 12316
18928596
NJ
123172001-05-19 Neil Jerram <neil@ossau.uklinux.net>
12318
12319 * throw.c (scm_lazy_catch): Slight docstring clarification.
12320
21a13beb
MV
123212001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
12322
e2b6ddc6
MV
12323 * throw.c: Lazy-catch handlers are no longer allowed to return.
12324 Fixed comments throughout.
12325 (scm_ithrow): Signal an error when a lazy-catch handler returns.
12326 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
12327 recognized as such.
12328
21a13beb
MV
12329 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
12330 refered to s_scm_minor_version previously.
12331
12332 * modules.h, modules.c: Moved around a lot of code so that
12333 deprecated features appear at the bottom.
12334 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
12335 module_prefix, make_modules_in_var, beautify_user_module_x_var,
12336 scm_the_root_module, scm_make_module, scm_ensure_user_module,
12337 scm_load_scheme_module): Deprecated.
12338 (scm_system_module_env_p): Return SCM_BOOL_T directly for
12339 environments corresponding to the root module.
12340 (convert_module_name, scm_c_resolve_module,
12341 scm_c_call_with_current_module, scm_c_define_module,
12342 scm_c_use_module, scm_c_export): New.
12343 (the_root_module): New static variant of scm_the_root_module. Use
12344 it everywhere instead of scm_the_root_module.
58bee6a8 12345
21a13beb
MV
12346 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
12347 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
12348 (scm_c_with_fluid): New.
12349 (scm_with_fluids): Use scm_c_with_fluids instead of
12350 scm_internal_with_fluids.
58bee6a8 12351
21a13beb
MV
12352 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
12353 `scm_init_goops'. Do not explicitly create/switch modules.
12354 Return SCM_UNSPECIFIED.
12355 (scm_init_goops): Only register `%init-goops-builtins' procedure.
12356 (scm_load_goops): Use scm_c_resolve_module instead of
12357 scm_resolve_module.
58bee6a8 12358
21a13beb
MV
12359 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
12360 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
12361 `scm_init_rw' prior to loading the startup files.
12362
12363 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
12364 scm_init_rdelim. Do not explicitly create/switch modules.
12365 Return SCM_UNSPECIFIED.
12366 (scm_init_rdelim): Only register `%init-rdelim-builtins'
12367 procedure.
58bee6a8 12368
21a13beb
MV
12369 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
12370 explicitly create/switch modules. Return SCM_UNSPECIFIED.
12371 (scm_init_rw): Only register `%init-rw-builtins' procedure.
12372
12373 * script.c (scm_shell): Evaluate the compiled switches in the
12374 current module, not in the root module.
12375
123762001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
12377
12378 * fluids.c (scm_c_with_fluids): Rename from
12379 scm_internal_with_fluids.
12380 (scm_internal_with_fluids): Deprecated.
12381 (scm_c_with_fluid): New.
12382
09cb9e73
DH
123832001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12384
12385 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
12386
12387 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
12388 accessed with SCM_C[AD]R.
12389
12390 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
12391
c81ea65d
RB
123922001-05-16 Rob Browning <rlb@cs.utexas.edu>
12393
12394 * version.c (s_scm_major_version): doc fixes.
12395 (s_scm_minor_version): doc fixes.
12396 (s_scm_minor_version): new function.
12397
12398 * version.h (scm_init_version): new function.
12399
12400 * versiondat.h.in: add GUILE_MICRO_VERSION.
12401
887dfa7d
DH
124022001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
12403
12404 * deprecation.c (scm_init_deprecation): Renamed
12405 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
12406
78930a69
MV
124072001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
12408
12409 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
12410 dependent on cpp_cnvt.awk
12411
39cde5c5
MG
124122001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12413
12414 * script.c (scm_compile_shell_switches): New command line option
12415 `--use-srfi' for loading a list of SRFIs on startup.
12416 (scm_shell_usage): Added `--use-srfi' to help message.
12417
f3f9dcbc
MV
124182001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12419
78930a69 12420 Merged from mvo-vcell-cleanup-1-branch.
887dfa7d 12421
f3f9dcbc
MV
12422 The concept of vcells has been removed from Guile. With it,
12423 explicit obarrays and associated operations are gone. Use
12424 hashtables instead of obarrays.
887dfa7d 12425
f3f9dcbc
MV
12426 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
12427 result as variable instead of vcell. Glocs no longer point to a
12428 vcell but to a variable. Use scm_c_define instead of
12429 scm_sysintern and treat the result as a variable (which it is),
12430 not a vcell.
887dfa7d 12431
f3f9dcbc
MV
12432 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
12433 SCM_DEFVARIABLEP): Deprecated.
12434 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
12435 (variable_print): Do not print name of variable.
12436 (variable_equalp): Compare values, not vcells.
12437 (anonymous_variable_sym): Removed.
12438 (make_vcell_variable): Removed.
12439 (make_variable): New, as replacement.
12440 (scm_make_variable, scm_make_undefined_variable): Do not take name
12441 hint parameter.
12442 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
12443 error in that case.
12444 (scm_builtin_variable): Deprecated.
12445
12446 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
12447 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
12448 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
12449 scm_sysintern, scm_sysintern0, scm_symbol_value0,
12450 scm_string_to_obarray_symbol, scm_intern_symbol,
12451 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
12452 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
12453 Deprecated and moved to "symbols-deprecated.c".
12454 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
12455 (scm_init_symbols): Call scm_init_symbols_deprecated.
12456 * symbols-deprecated.c: New file.
12457 * Makefile.am: Added symbols-deprecated.c and related files in all
12458 the right places.
887dfa7d 12459
f3f9dcbc
MV
12460 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
12461 SCM_GLOBAL_VCELL_INIT): Deprecated.
12462 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
12463 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
887dfa7d 12464
f3f9dcbc
MV
12465 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
12466 SCM_GLOC_SYM.
12467
12468 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
12469 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
12470 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
12471 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
12472 Changed according to the `throughout' comments.
12473
12474 * modules.h, modules.c (scm_module_system_booted_p): Changed type
12475 to `int'.
12476 (scm_module_type): Removed.
12477 (the_root_module): Renamed to the_root_module_var. Now points to
12478 a variable instead of a vcell. Updated all uses.
12479 (scm_the_root_module): Return SCM_BOOL_F when module systems
12480 hasn't been booted yet.
12481 (SCM_VALIDATE_STRUCT_TYPE): Removed.
12482 (scm_post_boot_init_modules): Made static.
12483 (scm_set_current_module): Call scm_post_boot_init_modules on first
12484 call.
12485 (make_modules_in, beautify_user_module_x, resolve_module,
12486 try_module_autoload, module_make_local_var_x): Tacked on "_var"
12487 suffix. Now point to variables instead of vcells. Updated all
12488 uses.
12489 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
12490 and return SCM_BOOL_F in that case.
12491 (scm_module_transformer): Likewise.
12492 (sym_module, scm_lookup_closure_module, scm_env_module): New.
12493 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
12494 (scm_eval_closure_lookup): Do not allow new definitions when
12495 `interface' flag is set.
12496 (scm_standard_interface_eval_closure): New.
12497 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
12498 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
12499 scm_c_lookup, scm_c_module_define, scm_c_define,
12500 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
12501 scm_modules_prehistory): New.
12502 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
12503 instead of scm_intern0.
887dfa7d 12504
f3f9dcbc
MV
12505 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
12506 symbol.
12507
12508 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
12509 hashtable operations to maintain the keywords, not obarray ones.
12510
12511 * init.c (scm_load_startup_files): Do not call
12512 scm_post_boot_init_modules. This is done by
12513 scm_set_current_module now.
12514 (scm_init_guile_1): Call scm_modules_prehistory. Call
12515 scm_init_variable early on.
12516
12517 * goops.c (s_scm_sys_goops_loaded): Get
12518 var_compute_applicable_methods from scm_sym2var, not from a direct
12519 invocation of scm_goops_lookup_closure.
12520
12521 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
12522
12523 * gc.c: Added simple debugging hack to mark phase of GC: When
12524 activated, do not tail-call scm_gc_mark. This gives nice
12525 backtraces.
12526 (scm_unhash_name): Removed.
12527
12528 * feature.c (features): Renamed to features_var. Now points to a
12529 variable instead of a vcell. Updated all uses.
12530
12531 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
12532 `scm_current_module_lookup_closure' which will do the right thing
12533 when the module system hasn't been booted yet.
12534 (SCM_GLOC_SYM): Removed.
12535 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
12536 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
887dfa7d 12537
f3f9dcbc
MV
12538 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
12539 instead of with vcells. Do not overwrite `var' with the result of
12540 the lookup, use the new `real_var' instead. Remove `var2' in
12541 exchange (which was only used with threads).
12542 (sym_three_question_marks): New.
12543 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
12544 `SCM_GLOC_SYM'.
12545 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
12546 (scm_m_atfop): Expect the function definition to be a variable
12547 instead of a vcell.
12548 (scm_macroexp): Do not use `unmemocar', explicitely remember the
12549 symbol instead.
12550 (scm_unmemocopy): Removed thoughts about anti-macro interface.
12551 (scm_eval_args): Use more explicit code in the gloc branch of the
12552 atrocious struct ambiguity test. The optimizer will sort this
12553 out.
12554 (scm_deval_args): Likewise.
12555 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
12556 remember the symbol instead. Added some comments where
12557 scm_tc3_cons_gloc really exclusively refers to structs.
12558 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
12559 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
12560 of scm_sysintern in general.
12561
12562 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
12563 explicit magic.
12564
12565 * debug.c (s_scm_make_gloc): Only allow proper variables, no
12566 pairs. Put the variable directly in the gloc.
12567 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
12568 (scm_init_debug): Use scm_c_define instead scm_sysintern.
12569
12570 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
12571
12572 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
12573 scm_the_last_stack_fluid_var. It now points to a variable instead
12574 of a vcell. Updated all uses.
12575 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
12576 instead of a vcell. Updated all uses.
12577
12578 * _scm.h: Include "variables.h" and "modules.h" since almost
12579 everybody needs them now.
12580
12581 * root.h (scm_symhash, scm_symhash_vars): Removed.
12582 * gc.c (scm_init_storage): Do not initialize them.
887dfa7d 12583
7c33806a
DH
125842001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12585
12586 * eval.c (scm_init_eval): Initialize scm_undefineds and
58bee6a8 12587 scm_listofnull.
7c33806a
DH
12588
12589 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
12590 like the SCM_NEWCELL macro counterparts.
12591
12592 (scm_init_storage, scm_init_gc): Moved initialization of
12593 scm_tc16_allocated from scm_init_gc to scm_init_storage.
12594
12595 (scm_init_storage): Moved initialization of scm_undefineds and
12596 scm_listofnull to eval.c, initializion of scm_nullstr to
12597 strings.c, initializion of scm_nullvect to vectors.c.
12598
12599 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
12600 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
12601
12602 * init.c (scm_init_guile_1): Reordered some initializations and
12603 added dependcy information comments.
12604
12605 * load.c (scm_init_load): Use scm_nullstr.
12606
12607 * strings.c (scm_init_strings): Initialize scm_nullstr.
12608
12609 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
12610
11bbab47
MV
126112001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
12612
12613 * values.c (print_values): Print as a unreadable object, not as
9a5fa6e9 12614 multiple lines. Thanks to Matthias Köppe!
11bbab47 12615
5cd06d5e
DH
126162001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
12617
12618 * deprecation.c: Fixed copyright date.
12619
12620 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
12621 DEPRECATION_H to SCM_DEPRECATION_H.
12622
32bac999
TTN
126232001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
12624
12625 * guile-doc-snarf.in: Update copyright.
12626 Fix relative path bug. Thanks to Sergey Poznyakoff.
12627
c9dcc5ae
MV
126282001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12629
12630 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
12631 accept open ports. Thanks to Quetzalcoatl Bradley!
12632
7c582ec9
MG
126332001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12634
12635 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
12636 has 779 primitives on startup.
12637
284ab601
MV
126382001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
12639
12640 * eval.c (scm_i_eval): Copy expression before passing it to
12641 SCM_XEVAL. The copy operation was removed unintendedly during my
12642 change on 2001-03-25.
12643
910d1e40
ML
126442001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12645
9a5fa6e9 12646 from Matthias Köppe (thanks!):
910d1e40
ML
12647
12648 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12649 portable.
12650
12651 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12652 docstring.
12653
56e55ac7
DH
126542001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12655
12656 * gc.c (scm_init_gc): Added FIXME comment.
12657
12658 * hooks.c: Since hooks don't have a name any more, it is not
12659 necessary to include objprop.h.
12660
12661 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12662
12663 (symbol_name, scm_make_hook_with_name): Removed.
12664
12665 (scm_create_hook): Don't set the hook's name property.
12666
12667 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12668
12669 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12670
12671 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12672
12673 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12674 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12675 FLOBUFLEN and define it unconditionally.
12676
d204b24c
MV
126772001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12678
438201b4
MV
12679 * gh_data.c (gh_lookup): Call gh_module_lookup with
12680 `scm_current_module ()', not `#f'.
12681 (gh_module_lookup): Expect a module instead of an obarray as first
12682 argument and do lookup in that module.
56e55ac7 12683
d204b24c
MV
12684 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12685 arrays. The length of array is already determined differently and
12686 scm_uniform_vector_length does not work on arrays.
12687
26c1d549
MV
126882001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12689
fe7c2f88
MV
12690 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12691 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12692
26c1d549
MV
12693 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12694 they are not used. Changed `wrong type' error into `wrong num
12695 args' error. Changed all callers.
56e55ac7 12696
26c1d549
MV
12697 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12698 arguments are supplied.
12699
1c938eb8
TTN
127002001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12701
12702 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12703 describe `regexp/notbol' and `regexp/noteol' execution flags.
12704
3a6379f7
TTN
12705 * strop.c (scm_substring_move_x): Doc fix; nfc.
12706
c10ecc4c
MV
127072001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12708
12709 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12710 (scm_set_object_procedure_x): Use it to check argument. Fix
12711 docstring.
12712
12713 * evalext.c (scm_definedp): Fix docstring.
12714
a57a0b1e
GH
127152001-05-05 Gary Houston <ghouston@arglist.com>
12716
12717 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12718 support.
12719
7a095584
NJ
127202001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12721
12722 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12723 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12724 Change R4RS references to R5RS.
12725
12726 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12727 docstring source are correctly reproduced in the output (ii)
12728 we don't anymore get occasional trailing quotes. Also reorganized
12729 and commented the code a little.
12730
12731 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12732 fixes.
12733
dd2a6f3a
MG
127342001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12735
12736 * strop.c (scm_string_split): New procedure.
12737
12738 * strop.h (scm_string_split): Added prototype.
12739
00120130
GH
127402001-05-04 Gary Houston <ghouston@arglist.com>
12741
12742 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12743 Dale P. Smith.
12744
b65e6bfe
MV
127452001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12746
12747 * rw.c: Include "modules.h" and "strports.h".
12748
12749 * net_db.h (scm_gethost): Added prototype.
12750
12751 * deprecation.h, deprecation.c: New.
12752 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12753 (DOT_X_FILES): Added "deprecation.x".
12754 (modinclude_HEADERS): Added "deprecation.h".
12755
12756 * init.c: Include "deprecation.h".
12757 (scm_init_guile_1): Call scm_init_deprecation.
1c938eb8 12758
b65e6bfe
MV
127592001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12760
12761 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12762 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12763 New.
12764
b0e5fd8c
GH
127652001-04-29 Gary Houston <ghouston@arglist.com>
12766
12767 * rw.c: new file, implementing C part of module (ice-9 rw).
12768 (scm_read_string_x_partial): moved from ioext.c
12769 (scm_init_rw): new proc.
12770 * rw.h: new file.
12771 init.c: include rw.h and call scm_init_rw.
12772 Makefile.am: include rw.c and rw.h.
12773
0b2da99c
RB
127742001-04-28 Rob Browning <rlb@cs.utexas.edu>
12775
12776 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12777 know what's supposed to happen to it.
12778
12779 * list.h (scm_list_star): deprecation expired - removed.
12780
12781 * numbers.h (scm_dblproc): deprecation expired - removed.
12782 (SCM_UNEGFIXABLE): deprecation expired - removed.
12783 (SCM_FLOBUFLEN): deprecation expired - removed.
12784 (SCM_INEXP): deprecation expired - removed.
12785 (SCM_CPLXP): deprecation expired - removed.
12786 (SCM_REAL): deprecation expired - removed.
12787 (SCM_IMAG): deprecation expired - removed.
12788 (SCM_REALPART): deprecation expired - removed.
12789 (scm_makdbl): deprecation expired - removed.
12790 (SCM_SINGP): deprecation expired - removed.
12791 (SCM_NUM2DBL): deprecation expired - removed.
12792 (SCM_NO_BIGDIG): deprecation expired - removed.
12793
12794 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12795 (scm_tc_dblr): deprecation expired - removed.
12796 (scm_tc_dblc): deprecation expired - removed.
12797 (scm_tc16_flo): deprecation expired - removed.
12798 (scm_tc_flo): deprecation expired - removed.
12799
12800 * tag.h (scm_tag): deprecation expired - removed.
12801
12802 * tag.c: (scm_tag): deprecation expired - removed.
12803
12804 * ioext.c: (scm_fseek): deprecation expired - removed.
12805
12806 * ioext.h (scm_fseek): deprecation expired - removed.
12807
12808 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12809
12810 * gh.h (gh_int2scmb): deprecation expired - removed.
12811
e3334972
NJ
128122001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12813
12814 * stacks.c (scm_make_stack): Fix typo in docstring.
12815
a0f979ac
RB
128162001-04-27 Rob Browning <rlb@cs.utexas.edu>
12817
12818 * error.c (scm_sysmissing): deprecation expired - removed.
12819
12820 * error.h (scm_sysmissing): deprecation expired - removed.
12821
12822 * gc.c
12823 (scm_init_gc): gc-thunk deprecation expired - removed.
12824 (scm_gc_vcell): deprecation expired - removed.
12825 (gc_async_thunk): scm_gc_vcell related code removed.
12826
12827 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12828
12829 * strings.h
12830 (SCM_NSTRINGP): deprecation expired - removed.
12831 (SCM_NRWSTRINGP): deprecation expired - removed.
12832
12833 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12834
12835 * chars.h
12836 (SCM_ICHRP): deprecation expired - removed.
12837 (SCM_ICHR): deprecation expired - removed.
12838 (SCM_MAKICHR): deprecation expired - removed.
12839
12840 * ports.h
12841 (SCM_INPORTP): deprecation expired - removed.
12842 (SCM_OUTPORTP): deprecation expired - removed.
12843
253081cf
MV
128442001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12845
12846 * modules.c (scm_module_type): New.
12847 (scm_post_boot_init_modules): Initialize from Scheme value.
12848 (the_module, scm_current_module, scm_init_modules): the_module is
12849 now a C only fluid.
12850 (scm_current_module): Export to Scheme.
12851 (scm_set_current_module): Do not call out to Scheme, do all the
12852 work in C. Export procedure to Scheme. Only accept modules, `#f'
12853 is no longer valid as the current module. Only set
12854 scm_top_level_lookup_closure_var and scm_system_transformer when
12855 they are not deprecated.
12856 (scm_module_transformer, scm_current_module_transformer): New.
12857
12858 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12859 scm_current_module_transformer, scm_module_transformer): New.
1c938eb8 12860
253081cf
MV
12861 * gh_data.c: Removed FIXME comment about gh_lookup returning
12862 SCM_UNDEFINED. That's the right thing to do.
12863
12864 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12865 into the conditionally compiled sections.
12866 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12867 scm_current_module_transformer instead of scm_system_transformer.
12868 * init.c (start_stack): Move initialization of
12869 scm_system_transformer to the deprecated section.
1c938eb8 12870
1f7f9ed4
NJ
128712001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12872
12873 * throw.c (scm_throw): Correct docstring.
12874
66c73b76
GH
128752001-04-22 Gary Houston <ghouston@arglist.com>
12876
eefae538
GH
12877 * socket.c: attempted to improve the docstrings slightly.
12878
66c73b76
GH
12879 * net_db.c: remove bogus "close" declaration.
12880 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12881 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12882 moved to socket.c.
12883 * net_db.h: declarations moved too.
12884
12885 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12886 long.
12887 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12888 (VALIDATE_INET6): new macro.
12889 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12890 inet-pton and inet-ntop.
12891 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12892 (scm_addr_vector): use ipv6_net_to_num.
1c938eb8 12893
7a7f7c53
DH
128942001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12895
12896 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12897 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12898
12899 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12900 when compiled in debug mode.
12901
12902 (scm_gc_sweep): Only call smob's free function if it is defined.
12903
12904 * print.c (scm_iprin1): No need to check for validity of smob
12905 type or existence of print function.
12906
12907 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12908 Resizing will not work well with preemptive threading.
12909
12910 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12911
12912 (scm_make_smob_type): Extracted initialization of smob
12913 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12914 of the critical section.
12915
12916 (scm_smob_prehistory): Initialize all smob descriptors. By
12917 default, don't assign a smob free function: Most smob types don't
12918 need one.
12919
12920 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12921
e1368a8d
GH
129222001-04-21 Gary Houston <ghouston@arglist.com>
12923
12924 * socket.c (FLIP_NET_HOST_128): new macro.
12925 (scm_fill_sockaddr): use new macro.
12926 (scm_addr_vector): completed IPv6 address support. added const
12927 to the address parameter.
12928
5a525b84
GH
129292001-04-20 Gary Houston <ghouston@arglist.com>
12930
12931 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12932 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12933 is defined.
12934 (scm_addr_vector): use a switch instead of multiple if statements.
12935 Add support for IPv6 (incomplete) .
e1368a8d 12936 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5a525b84 12937
1a551638
DH
129382001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12939
12940 * struct.c (scm_free_structs): Only pairs may be accessed with
12941 SCM_C[AD]R.
12942
c07b3fef
MD
129432001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12944
a9d861e3
MD
12945 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12946
c07b3fef
MD
12947 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12948 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12949 parentheses in order to get the correct associativity.
12950
af7546eb
DH
129512001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12952
12953 * unif.c (scm_array_to_list): Added missing handling of arrays of
12954 bytes. Thanks to Masao Uebayashi for the bug report.
12955
4daecfee
DH
129562001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12957
12958 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12959 consistently.
12960
726d810a
DH
129612001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12962
12963 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12964
12965 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12966 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
1c938eb8 12967 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
726d810a
DH
12968 SCM_CLOSURE_FORMALS.
12969
12970 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12971 (scm_i_procedure_arity): Prefer stronger predicates like
12972 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12973
12974 * macros.c (macro_print): Extracted macro printing code from
12975 print.c and simplified it.
12976
12977 (scm_macro_type): Use SCM_MACRO_TYPE;
12978
12979 (scm_init_macros): Use macro_print for printing macros.
12980
12981 * print.c (scm_print_opts): Improved option documentation.
12982
12983 (scm_iprin1): Extracted printing of macros to macros.c.
12984 Simplified printing of ordinary closures.
12985
12986 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12987 Martin Grabmueller for the bug report.
12988
e038c042
DH
129892001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12990
12991 This patch eliminates some further applications of SCM_C[AD]R to
12992 non pair cells.
12993
12994 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12995 never been applied to real pairs.
12996
12997 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12998
12999 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
13000
13001 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
13002 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
13003 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
13004
13005 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
13006 Added.
13007
13008 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
13009 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
13010
13011 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
13012 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
13013 SCM_SET{AND,OR}_CAR.
13014
3453619b
GH
130152001-04-17 Gary Houston <ghouston@arglist.com>
13016
13017 * some initial support for IPv6:
1c938eb8 13018
3453619b
GH
13019 * socket.c (scm_fill_sockaddr): improve the argument validation.
13020 don't allocate memory until all args are checked. instead of
13021 unconditional memset of soka, try setting sin_len to 0 if
13022 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
13023 (scm_socket, scm_connect): extend docstrings for IPv6.
13024 (scm_init_socket): intern AF_INET6 and PF_INET6.
13025
216eedfc
DH
130262001-04-17 Niibe Yutaka <gniibe@m17n.org>
13027
13028 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
13029 matches SCM_DEFER_INTS at the beginning of the function.
13030
13031 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
13032
13033 * gc.c (scm_igc): Unconditionally call
13034 SCM_CRITICAL_SECTION_START/END.
13035
13036 * fluids.c (next_fluid_num): Unconditionally call
13037 SCM_CRITICAL_SECTION_START/END.
13038 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
13039
13040 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
13041 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
13042 Removed.
13043
13044 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
13045 Defined as nothing for the case of !defined(USE_THREADS).
13046 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
13047 Removed.
13048 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
13049 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
13050 LINE.
13051 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
13052 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
13053 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
13054 SCM_CRITICAL_SECTION_START/END.
13055 (SCM_REALLOW_INTS: Bug fix. Don't call
13056 SCM_THREAD_SWITCHING_CODE.
13057 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
13058 SCM_THREAD_SWITCHING_CODE directly.
13059 (SCM_ENTER_A_SECTION): Unconditionally use
13060 SCM_CRITICAL_SECTION_START/END. (was:
13061 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
13062
130632001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13064
13065 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
13066 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
13067 allowed to explicitly set this macro via the CFLAGS variable
13068 during make.
13069
13070 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
13071 (SCM_THREAD_CRITICAL_SECTION_START,
13072 SCM_THREAD_CRITICAL_SECTION_END): Renamed
13073 SCM_THREAD_CRITICAL_SECTION_START/END to
13074 SCM_CRITICAL_SECTION_START/END.
13075
f22ed5a0
KN
130762001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
13077
13078 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
13079 instead of bzero.
1c938eb8 13080
f22ed5a0 13081 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
1c938eb8 13082 (MISSING_BZERO_DECL): Remove the declaration.
f22ed5a0
KN
13083
13084 Thanks to NIIBE Yutaka.
13085
508ded1c
MD
130862001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13087
a087ba81
MD
13088 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
13089 goops module should be registered in order to work for an
13090 application which uses libguile statically linked.)
508ded1c 13091
e4b265d8
DH
130922001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
13093
13094 * numbers.[ch] (scm_num2long, scm_num2long_long,
13095 scm_num2ulong_long, scm_num2ulong): Argument position is an
13096 unsigned integer.
13097
13098 * environments.c (eval_environment_folder,
13099 import_environment_folder), gh_data.c (gh_scm2longs,
13100 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
13101 for integers and pointers, respectively.
13102
13103 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
13104 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
13105 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
13106 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
13107
13108 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
13109 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
13110 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
13111 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
13112 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
13113 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
13114
89d04205
NJ
131152001-04-09 Neil Jerram <neil@ossau.uklinux.net>
13116
13117 * strings.c (scm_read_only_string_p): Update docstring to reflect
13118 current (non-)usage of "read only" strings.
40f83c3e
NJ
13119 (scm_make_shared_substring): Clarify docstring by changing
13120 "semantics" to "arguments".
89d04205 13121
4d66be54
MG
131222001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13123
13124 * hooks.c (scm_make_hook, scm_make_hook_with_name),
13125 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
13126 improvements.
13127
1e6808ea
MG
131282001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13129
13130 The following changes make the documentation more consistent.
1c938eb8 13131
1e6808ea
MG
13132 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
13133 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
13134 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
13135 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
13136 ... @end lisp.
13137
13138 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
13139 (scm_array_dimensions, scm_make_shared_array),
13140 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
13141 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
13142 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
13143 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
13144 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
13145 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
13146 macros.c (scm_makmmacro), list.c (scm_append), environments.c
13147 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
13148 @example ... @end example to @lisp ... @end lisp.
13149
13150 * weaks.c (scm_weak_vector): Corrected docstring.
13151
13152 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
13153 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
13154 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
13155 (scm_hashx_set_x, scm_hashx_get_handle),
13156 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
13157 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
13158 vectors.c (scm_vector_fill_x), strings.c
13159 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
13160 objprop.c (scm_set_object_properties_x):
13161 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
13162 strports.c (scm_call_with_input_string), ports.c
13163 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
13164 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
13165 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
13166 (scm_make_weak_vector,scm_weak_vector_p),
13167 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
13168 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
13169 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13170 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
13171 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
13172 Made parameter names match documentation by renaming parameters
13173 and/or fixing docstrings.
1c938eb8 13174
1e6808ea
MG
13175 * numbers.c (scm_ash): Corrected Texinfo markup.
13176
13177 * strop.c (scm_string_index, scm_string_rindex),
13178 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
13179
13180 * vports.c (scm_make_soft_port), unif.c
13181 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
13182 (scm_dimensions_to_uniform_array, scm_transpose_array),
13183 (scm_array_in_bounds_p, scm_uniform_vector_ref),
13184 (scm_bit_count, scm_bit_position, scm_bit_count_star),
13185 (scm_array_to_list, scm_list_to_uniform_array),
13186 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
13187 (scm_open_input_string, scm_open_output_string),
13188 (scm_get_output_string), strop.c (scm_string_copy),
13189 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
13190 (scm_get_internal_real_time, scm_times),
13191 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
13192 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
13193 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
13194 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
13195 simpos.c (scm_system), random.c (scm_random_uniform),
13196 (scm_random_normal, scm_random_exp), ramap.c
13197 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
13198 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
13199 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
13200 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
13201 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
13202 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
13203 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
13204 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
13205 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
13206 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
13207 (scm_logand, scm_logior, scm_logxor, scm_lognot),
13208 (scm_integer_expt, scm_bit_extract, scm_logcount),
13209 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
13210 net_db.c (scm_inet_netof, scm_lnaof), modules.c
13211 (scm_interaction_environment), macros.c (scm_makacro),
13212 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
13213 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
13214 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
13215 (scm_fluid_ref), filesys.c (scm_open_fdes),
13216 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
13217 Docstring correction: `Returns' -> `Return'
13218
1c938eb8
TTN
13219 * gc.c (scm_set_debug_cell_accesses_x):
13220 (s_scm_gc_set_debug_check_freelist_x):
1e6808ea
MG
13221 * fluids.c (scm_fluid_p): Added texinfo markup.
13222
13223 * error.c (scm_strerror): Made docstring more precise.
13224
13225 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
13226 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
13227 (scm_symbol_p, scm_symbol_to_string), strorder.c
13228 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
13229 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
13230 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
13231 (scm_string_ci_geq_p), strop.c (scm_string_copy),
13232 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
13233
9a6976cd
DH
132342001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
13235
13236 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
13237 mode, as suggested by Michael Livshin.
13238
463b2219
ML
132392001-03-31 Michael Livshin <mlivshin@bigfoot.com>
13240
13241 * backtrace.c (display_backtrace_body): since the `print_state'
13242 variable is not used (instead its data field is used directly as
13243 `pstate'), protect it from the hungry compiler optimizations.
13244 thanks to Bill Schottstaedt for the report.
13245
61045190
DH
132462001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13247
13248 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
13249 It is only defined and used if guile is compiled with
13250 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
13251 let cells with a free_cell type tag be visible outside of the
13252 garbage collector when in debug mode.
13253
13254 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
13255
13256 (scm_assert_cell_valid): Use a local static variable to avoid
13257 recursion.
13258
13259 (MARK): Only check for rogue cell pointers in debug mode. Use
13260 scm_cellp for this purpose and place all checks for rogue pointers
13261 into that function. Further, since due to conservative scanning
13262 we may encounter free cells during marking, don't use the standard
13263 cell type accessor macro to determine the cell type.
13264
13265 (scm_cellp): Check if the cell pointer actually points into a
13266 card header.
13267
13268 (scm_init_gc): Initalize scm_tc16_allocated.
13269
13270 * gc.h (GCH): Renamed to SCM_GC_H.
13271
13272 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
13273 might be unnecessary, but I feel better this way :-)
13274
13275 (SCM_GC_CELL_TYPE): New macro.
13276
13277 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
13278 in guile, and it is unlikely that they will be applied to real
13279 pairs anyway.
13280
13281 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
13282
13283 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
13284 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
13285
13286 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
13287 make sure that in debug mode no free cell will ever be visible
13288 outside of the garbage collector.
13289
85d6df6a
DH
132902001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13291
13292 * async.c (scm_asyncs_pending): Don't use != to compare SCM
13293 values.
13294
13295 * async.c (scm_system_async), variable.c (scm_make_variable,
13296 scm_make_undefined_variable): Use scm_cons to create a pair.
13297
13298 * debug.c (scm_reverse_lookup): Perform proper type checking.
13299 Remove suspicious use of SCM_SLOPPY_CONSP.
13300
13301 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
13302 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
13303 the corresponding optimization.
13304
13305 * eval.c (iqq): Use proper type check.
13306
13307 (scm_m_expand_body): Remove redundant type checks.
13308
13309 (promise_print): Don't access promise cells as pairs.
13310
13311 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
13312 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
13313 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
13314 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
13315 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
13316
13317 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
13318 (scm_iprin1): Use new macro predicate and accessors.
13319
13320 * eval.h (scm_tc16_macro): Removed declaration. It is declared
13321 in macros.h.
13322
13323 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
13324 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
13325 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
13326 SCM_VARIABLE_H. Even the macros that are used to inhibit
13327 including a header file twice should be in the SCM_ namespace.
13328
13329 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
13330 properties.c (scm_primitive_property_ref,
13331 scm_primitive_property_del_x): Prefer stronger predicates like
13332 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13333
13334 * gc.c (MARK): Use proper macros to access procedure-with-setter
13335 cell elements and closure cell elements.
13336
13337 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
13338 access free cells as pairs.
13339
13340 (scm_unprotect_object): scm_hashq_get_handle returns #f if
13341 no hashtab entry is found.
13342
13343 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
13344 SCM_CLR_PORT_OPEN_FLAG.
13345
13346 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
13347 use SCM_SET_C[AD]R for uninitialized cells.
13348
13349 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
13350 If the hashtable has no slots, return #f instead of '(). This
13351 unifies the return value with most assoc-functions.
13352
13353 (scm_hash_fn_ref): Use proper type check.
13354
13355 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
13356 Removed references to non-existing functions from documentation.
13357
13358 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
13359 access keyword cell elements.
13360
13361 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
13362 macros.
13363
13364 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
13365
13366 * print.c (scm_iprlist): Added comment. Improved loop
13367 conditions.
13368
13369 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
13370 pairs.
13371
13372 * smob.c (scm_markcdr): Don't access smob cells as pairs.
13373
13374 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
13375
13376 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
13377 cells as pairs.
13378
13379 * variable.c (variable_print, variable_equalp, scm_variable_ref,
13380 scm_variable_set_x): Use proper macros to access variable cell
13381 elements.
13382
13383 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
13384
13385 * variable.h (SCM_VARVCELL): Don't access variable cells as
13386 pairs.
13387
13388 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
13389 added FIXME comment, removed register specifier.
13390
1b27e91a
KN
133912001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
13392
13393 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
13394 * init.c (scm_init_guile_1): Don't init goopscore module.
13395
16c634ec
MV
133962001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13397
13398 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
13399
91344ceb
MG
134002001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13401
13402 * strop.c (scm_string_to_list): Fixed docstring markup.
13403 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
13404 (scm_string_downcase, scm_string_capitalize_x),
13405 (scm_string_capitalize): Rewrote and corrected docstrings.
13406 (scm_string_ci_to_symbol): Made docstring more explicit.
13407
07576812
MV
134082001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13409
13410 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
13411 eval.c can use it.
13412 (scm_call_with_values): Removed.
13413 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
13414 so that it can be exported.
13415 (scm_call_with_values): Removed.
1c938eb8 13416
07576812
MV
13417 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
13418 * eval.c: Include "libguile/values.h"
13419 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
13420 New.
13421 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
13422 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
13423 New delcarations to support above change.
13424
13425 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
13426 errors with last change.
1c938eb8 13427
07576812
MV
134282001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
13429
13430 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
13431 scm_i_eval): Moved the application of the system transformer from
13432 scm_i_eval to scm_primitive_eval.
13433
a17bb5fd
NJ
134342001-03-23 Neil Jerram <neil@ossau.uklinux.net>
13435
a6be01a4
NJ
13436 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
13437
a17bb5fd
NJ
13438 * strop.c (scm_string_index): Fix docstring line break
13439 regression.
13440
13441 * list.c (scm_cons_star): Fix docstring typo.
13442
be54b15d
DH
134432001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13444
13445 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
13446 (big2str), ports.c (scm_drain_input), read.c (scm_read,
13447 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
13448 scm_make_string, scm_string_append), strports.c (st_resize_port,
13449 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
13450 scm_makstr with calls to scm_allocate_string.
13451
13452 * strings.[ch] (scm_allocate_string): New function.
13453
13454 * strings.[ch] (scm_makstr): Deprecated.
13455
789ecc05
GH
134562001-03-18 Gary Houston <ghouston@arglist.com>
13457
6d163216
GH
13458 * posix.c (scm_tmpnam): check that return value from tmpnam is not
13459 NULL. rewrote the docstring.
13460 (scm_mkstemp): new procedure implementing "mkstemp!".
13461 * posix.h: declare scm_mkstemp.
13462
789ecc05
GH
13463 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
13464 normally it would be found in netdb.h.
13465
c6c79933
GH
134662001-03-17 Gary Houston <ghouston@arglist.com>
13467
e9e225e5
GH
13468 * sort.c (scm_sort): move sortvec variable to avoid a compiler
13469 warning when HAVE_ARRAYS is not defined. move len too.
13470
13471 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
13472 (EXTRA_DOT_X_FILES): let configure set the value.
13473 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
13474
c6c79933
GH
13475 * gc.c (scm_must_malloc): changed the comment explaining when
13476 scm_must variants of malloc/free etc., should be used, based on
13477 explanation from Dirk Herrmann.
13478 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
13479 string with procedure name. use scm_must_malloc instead of malloc.
13480 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
13481 of malloc/free.
13482 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
13483 scm_ungetc): use scm_must variants of malloc/realloc/free.
13484 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
13485
b3fcac34
DH
134862001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13487
13488 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13489 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
13490 scm_wrong_type_arg instead.
13491
13492 (SCM_WNA): Deprecated.
13493
13494 * error.[ch] (scm_wta): Deprecated.
13495
13496 * numbers.c (s_i_log): Minor comment fix.
13497
13498 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
13499 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
13500 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
13501 wrong-num-args or misc errors.
13502
13503 * unif.c (scm_make_shared_array, scm_transpose_array,
13504 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
13505 Validate the rest argument (note: this is only done when guile is
13506 built with SCM_DEBUG_REST_ARGUMENT=1)
13507
13508 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
13509 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
13510
13511 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
13512 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
13513
68baa7e7
DH
135142001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13515
13516 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
13517 instead of scm_wrong_num_args.
13518
13519 * coop-threads.c: Don't include libguile/strings.h. (Was only
13520 needed for former implementation of SCM_WRONG_NUM_ARGS.)
13521
13522 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
13523 wrong-num-args errors.
13524
9f40cd87
DH
135252001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13526
13527 * error.[ch] (scm_error_num_args_subr): New function.
13528
5352393c
MG
135292001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13530
13531 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
13532 (scm_length, scm_append, scm_reverse, scm_list_ref),
13533 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
13534 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
13535 (scm_delete1_x), gc.c (scm_map_free_list),
13536 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
13537 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
13538 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
13539 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
13540 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
13541 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
13542 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
13543
13544 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
13545 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13546 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
13547 symbols.c (scm_symbol_interned_p), numbers.c
13548 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
13549 markup.
13550
a9205f07
KN
135512001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
13552
13553 * snarf.h (SCM_CONST_LONG): Deprecated.
13554 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
13555
6d583887
MV
135562001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13557
13558 * numbers.c (scm_num2ulong): Check that a bignum is positive
13559 before looking at the magnitude. Correctly check for overflow
13560 during conversion.
13561 (scm_num2long_long): Likewise.
13562 (scm_num2ulong_long): New.
13563 (ULONG_LONG_MAX): Define if not already defined.
13564 * numbers.h: (scm_num2ulong_long): New prototype.
1c938eb8 13565
e87a03fc
MG
135662001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13567
13568 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
13569
13570 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
13571 (SCM_OPOUTSTRPORTP): New predicate macros.
13572 (scm_open_input_string, scm_open_output_string),
13573 (scm_get_output_string): New prototypes.
1c938eb8 13574
e87a03fc
MG
13575 * strports.c (scm_open_input_string, scm_open_output_string),
13576 (scm_get_output_string): New procedures (SRFI-6 compliant).
13577 Made scm_tc16_strport non-static.
13578
160bb34a
DH
135792001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13580
13581 * macros.h (SCM_ASSYNT): Removed unused object argument from
13582 signature.
13583
13584 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
13585 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
13586 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
13587 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
13588 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
13589 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
13590 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
13591 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13592 scm_m_atdispatch): Removed unused object argument from call to
13593 SCM_ASSYNT.
13594
80dee77b
DH
135952001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13596
13597 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
13598 const int* to reflect that the input array of integers remains
13599 unchanged. Thanks to Brett Viren for the hint.
13600
d3dd80ab
MG
136012001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13602
13603 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
13604 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
13605 in various places.
13606 (gh_scm2newstr, gh_symbol2newstr): Change call to
13607 scm_must_malloc() to malloc(), because user-free()able memory is
13608 allocated.
13609
13610 * gc.c: Added declaration of `scm_debug_check_freelist'.
13611
26a3038d
MG
136122001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13613
13614 * ports.c (scm_port_mode): Changed `mode' array size to 4.
13615
1f3908c4
KN
136162001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
13617
13618 * strports.c (scm_object_to_string): New procedure.
13619 (scm_strprint_obj): Deprecated.
13620 * strports.h: Reflect the changes.
13621
e11208ca
DH
136222001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
13623
13624 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
13625
13626 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13627 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
13628 SCM_ASSYNT to check for correct argument types. Either use some
13629 SCM_VALIDATE_* macro or an explicit test.
13630
13631 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
13632 misc-errors.
13633
13634 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
13635 instead of calling scm_wta.
13636
67e8151b
MG
136372001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13638
13639 * load.c (scm_primitive_load, scm_primitive_load_path),
13640 (scm_sys_search_load_path): Corrected docstrings (file ->
13641 filename).
13642
13643 * eval.c (scm_force): Added texinfo markup to docstring.
13644 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13645
13646 * debug-malloc.c: Reinserted #include <stdio.h>.
13647
e0c08f17
KN
136482001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13649
e39c3de4
KN
13650 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13651
e0c08f17
KN
13652 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13653 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13654 Use SCM_LISTn instead of scm_listify.
13655
e6e2e95a
MD
136562001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13657
13658 * _scm.h: Removed #include <errno.h>.
13659
13660 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13661 errno variable (can be a macro on some systems, for example when
13662 using linux libc with threads).
13663
13664 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13665 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13666 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13667 #include <errno.h> in these 20 out of 100 files.
1c938eb8 13668
97d0e20b
GH
136692001-03-10 Gary Houston <ghouston@arglist.com>
13670
13671 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13672 not already defined.
13673
e75341b3
MD
136742001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13675
13676 * coop.c: Inserted #include <stdio.h>.
13677
13678 * iselect.c: Reinserted #include <stdio.h>.
13679
74355186
MV
136802001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13681
13682 * posix.c: Replaced `#define' of __USE_XOPEN right before
13683 including unistd.h with a define of _GNU_SOURCE at the very top of
13684 the file.
13685
783e7774
KN
136862001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13687
13688 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13689 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13690 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13691 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13692 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13693 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13694 print.c, procprop.c, procs.c, properties.c, ramap.c,
13695 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13696 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13697 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
1c938eb8 13698 Remove #include <stdio.h>
783e7774
KN
13699 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13700
13701 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13702
9a677c37
MG
137032001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13704
13705 * posix.c (scm_gethostname): Set initial name length to 256 for
13706 Solaris.
13707
94e6d793
MG
137082001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13709
13710 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13711 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13712 (scm_sethostname, scm_gethostname): New prototypes.
13713
13714 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13715 <sys/file.h>, if present.
13716 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13717 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13718 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13719 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13720 (scm_sethostname, scm_gethostname): New procedures.
13721
650a1cf9
NJ
137222001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13723
13724 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13725 not optional (ii) "recommend" spelling correction.
13726
9636b49c
MD
137272001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13728
5e4a4d09
MD
13729 * ramap.c (racp): Removed optimization which caused array copying
13730 to fail if the two arrays shared storage. Re-inserted the IVDEP
13731 macros removed in the change of 2000-03-09. (Don't really have a
13732 complete grasp of what they are for, but they seem to be necessary
13733 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13734
9636b49c
MD
13735 * hash.c (scm_string_hash): Don't downcase characters.
13736
04a4d666
MD
137372001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13738
9636b49c 13739 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
04a4d666
MD
13740 size from 277 --> 1009.
13741
13742 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13743 function.
13744
13745 * coop-threads.c: Fixed change of 2001-03-06.
1c938eb8 13746
04a4d666
MD
13747 * validate.h: Code formatting.
13748
66418d34
KN
137492001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13750
13751 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13752 (*.doc): Add dependency on guile-snarf.awk.in.
13753
13754 * guile-snarf.awk.in: Neglect spaces at the end of
13755 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13756 middle of docstrings. (To avoid the problem with gcc-2.96.)
13757
2ade72d7
DH
137582001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13759
13760 * coop-threads.c (scm_call_with_new_thread), load.c
13761 (scm_primitive_load, scm_sys_search_load_path), random.c
13762 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13763 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13764 (potentially) issue a scm-misc-error or wrong-num-args error
13765 message.
13766
13767 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13768 about the expected type with the wrong-type-arg error message.
13769
13770 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13771 a C level bug that can't be fixed from scheme anyway.
13772
586d7da2
MD
137732001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13774
13775 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13776 Duplicate bindings are OK in a let* since a let* is semantically
13777 equivalent to a nested set of let:s.
13778
1dd05fd8
MG
137792001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13780
13781 * print.c (scm_print_options): Fixed texinfo in docstring.
13782
13783 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13784 the underlying functions getservent, getprotoent or getnetent
13785 return NULL instead of signalling an error.
13786
439006bf
GH
137872001-03-04 Gary Houston <ghouston@arglist.com>
13788
13789 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13790 taking an unexpectedly large filename for an AF_UNIX socket from
13791 bind/connect/sendto (thanks to Martin Grabmueller).
1c938eb8 13792
439006bf
GH
13793 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13794 former and adjusted the latter.
13795 (scm_socket, scm_socketpair): cosmetic changes.
13796 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13797 size_t as socklen_t substitute. don't restrict args/return values
13798 to INUM: allow full range of int or size_t.
13799 (scm_fill_sockaddr): check arguments before allocating memory, to
13800 avoid leakage. use malloc, not scm_must_malloc.
13801 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13802 substitute. free the sockaddr structure before throwing an error.
13803 (scm_init_add_buffer): procedure removed, together with its static
13804 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13805 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13806 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13807 scm_sendto): use a local buffer instead of scm_addr_buffer.
13808 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13809 not size_t.
13810 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13811 call to detect whether recvfrom could be bothered to set the address.
13812 (scm_init_socket): don't call scm_init_addr_buffer.
13813
276dd677
DH
138142001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13815
13816 * debug.c (scm_procedure_source, scm_procedure_environment),
13817 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13818 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13819 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13820 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13821 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13822 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13823 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13824 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13825 scm_array_to_list, scm_array_prototype), validate.h
13826 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13827 scm_misc_error or scm_wrong_type_arg instead.
13828
13829 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13830
5e03762c
MD
138312001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13832
13833 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13834 (scm_sys_tag_body): Added.
13835
db4b4ca6
DH
138362001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13837
13838 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13839 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13840 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13841 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13842 options.c (scm_options), ports.c (scm_remove_from_port_table),
13843 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13844 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13845 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13846 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13847 instead.
13848
87e7741d
MD
138492001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13850
13851 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13852
d19b0aac
MV
138532001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13854
13855 * eval.c (scm_s_duplicate_bindings): New error message.
13856 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13857
2fd945df
MV
138582001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13859
13860 * eval.h (SCM_EVALIM2): New macro. Use it when a
13861 immediate, literal constant should be evaluated.
13862 * eval.c (scm_s_duplicate_formals): New error message string.
13863 (scm_c_improper_memq): New function.
13864 (scm_m_lambda): Check for duplicate arguments.
13865 (scm_ceval, scm_deval): When executing a body: only cons a new
13866 toplevel environment frame when it is different from the
13867 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13868 check for empty combinations; use SCM_EVALIM2 for the same reason
13869 in the non-toplevel loop.
13870 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13871 New labels with the meaning of their non-"nontoplevel" partners,
13872 but they are used when it is known that the body is not evaluated at
13873 top-level.
13874 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13875 reporting for empty combinations.
13876
9e6fc585
KN
138772001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13878
13879 * Remove dump facilities.
13880 * dump.c, dump.h: Removed.
13881 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13882 * init.c: Remove #include "libguile/dump.h".
13883 (scm_init_guile_1): Remove scm_init_dump.
13884 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13885 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13886 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13887 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13888
13889 * keywords.c: Remove #include "libguile/dump.h".
13890 (keyword_dump, keyword_undump): Removed.
13891 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13892
eae54bf0
MG
138932001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13894
13895 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13896 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13897 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13898 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13899 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13900 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13901 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13902 to @code{} as the texinfo manual recommends, converted the
13903 examples to use a @lisp{}-environment.
13904
13905 * strports.c (scm_eval_string): Cleaned up the docstring.
13906
13907 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13908 markup.
13909
13910 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13911 (scm_number_to_string, scm_string_to_number, scm_number_p)
13912 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13913 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13914 (scm_ash): Added texinfo markup and removed obsolete @refill.
13915 (scm_gr_p): Corrected comment.
13916 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13917 docstring) comments.
13918 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13919 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13920 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13921 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13922 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13923 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13924 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13925 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13926
23deee81
DH
139272001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13928
13929 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13930 (Obviously nobody compiles with SCM_RECKLESS defined...)
13931
13932 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13933
6fe692e9
MD
139342001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13935
13936 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13937
13938 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13939
27c37006
NJ
139402001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13941
13942 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13943 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13944 since use of `z' suggests that the arguments may be complex.
13945
13946 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13947 typos.
13948
2069af38
NJ
139492001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13950
13951 * dump.c (scm_binary_write, scm_binary_read), eval.c
13952 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13953 scm_guardian_greedy_p, scm_make_guardian), fports.c
13954 (scm_file_port_p): Minor docstring fixes.
13955
b42ff180
MV
139562001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13957
2069af38 13958 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
97ea55f8
MV
13959
13960 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13961 scm_i_eval.
13962 (make_class_from_template): Do not bother to set the current
13963 module around the call to DEFVAR, scm_eval takes care of that.
13964 (scm_init_goops): Make scm_module_goops and
13965 scm_goops_lookup_closure permanent objects.
1c938eb8 13966
97ea55f8
MV
13967 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13968 top level, create a fresh top-level environment for each
13969 expression instead of mutating the exisint frame. This is
13970 important when that frame is closed over.
13971
b42ff180
MV
13972 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13973 SCM_DIGSPERLONG instead of DIGSPERLONG.
13974
09f2ab1e
MV
139752001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13976
13977 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13978 before applying arrow procedure in `cond' and before applying
13979 receiver procedure in call-with-current-continuation.
13980 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13981 macro. The argument is expanded more than one time.
13982
13983 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13984 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13985
139862001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13987
13988 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13989 notice and license.
13990
7090240c
MG
139912001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13992
13993 * variable.c (scm_make_variable, scm_make_undefined_variable)
13994 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13995 (scm_variable_bound_p), values.c (scm_values)
13996 (scm_call_with_values), unif.c (scm_bit_count)
13997 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13998 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13999 (scm_read_only_string_p, scm_string_length, scm_string_ref)
14000 (scm_string_set_x, scm_substring, scm_string_append), stime.c
14001 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
14002 (scm_copy_random_state, scm_random), print.c (scm_newline)
14003 (scm_write_char, scm_simple_format), debug-malloc.c
14004 (scm_malloc_stats), environments.c (scm_environment_p)
14005 (scm_environment_bound_p, scm_environment_ref)
14006 (scm_environment_fold, scm_environment_define)
14007 (scm_environment_undefine, scm_environment_set_x)
14008 (scm_environment_cell, scm_environment_observe)
14009 (scm_environment_observe_weak, scm_environment_unobserve)
14010 (scm_make_eval_environment, scm_eval_environment_p)
14011 (scm_eval_environment_set_local_x, scm_eval_environment_local)
14012 (scm_eval_environment_imported)
14013 (scm_eval_environment_set_imported_x, scm_make_import_environment)
14014 (scm_import_environment_p, scm_import_environment_imports)
14015 (scm_import_environment_set_imports_x, scm_make_export_environment)
14016 (scm_export_environment_p, scm_export_environment_private)
14017 (scm_export_environment_set_private_x)
14018 (scm_export_environment_signature)
14019 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
14020 Added texinfo markup.
14021
14022 * ports.c (scm_drain_input): Lowercased argument to @var.
14023 (scm_current_input_port, scm_current_output_port): Filled in
14024 missing explanation.
14025 (scm_current_load_port, scm_set_current_output_port)
14026 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
14027 Added texinfo markup.
14028
14029 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
14030 (scm_release_arbiter): Added texinfo markup to docstrings.
14031 Changed `Returns' to `Return'.
14032 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
14033
25703850
NJ
140342001-02-16 Neil Jerram <neil@ossau.uklinux.net>
14035
14036 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
14037 by doubling them to `@@'.
14038
73c0fdce
MG
140392001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14040
14041 * numbers.c (scm_lognot), random.c (scm_random,
14042 scm_random_normal, scm_random_solid_sphere_x,
14043 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
14044 scm_random_exp), dynwind.c
14045 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
1c938eb8 14046
73c0fdce
MG
14047 * goops.c (scm_sys_initialize_object, scm_instance_p,
14048 scm_class_name, scm_class_precedence_list, scm_class_slots,
14049 scm_class_environment, scm_generic_function_name,
14050 scm_generic_function_methods, scm_method_generic_function,
14051 scm_method_specializers, scm_method_procedure, scm_make_unbound,
14052 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
14053 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
14054 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
14055 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
14056 scm_class_direct_supers, scm_class_direct_slots,
14057 scm_class_direct_subclasses, scm_class_direct_methods,
14058 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
14059 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
14060 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
14061 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
14062 scm_memoized_environment, scm_procedure_name,
14063 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
14064 objects.c
14065 (scm_class_of, scm_entity_p, scm_operator_p,
14066 scm_set_object_procedure_x, scm_object_procedure,
14067 scm_make_class_object), hooks.c (scm_make_hook_with_name,
14068 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
14069 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
14070 scm_hook_to_list), lang.c
14071 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
14072 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
14073 (scm_print_options, scm_port_with_print_state,
14074 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
14075 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
14076 scm_make_procedure_with_setter, scm_procedure), throw.c
14077 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
14078 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
14079 scm_stack_ref, scm_stack_length, scm_frame_p,
14080 scm_last_stack_frame, scm_frame_number, scm_frame_source,
14081 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
14082 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
14083 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
14084 (scm_dirname, scm_basename), dynwind.c
14085 (scm_wind_chain), read.c (scm_read_options, scm_read,
14086 scm_read_hash_extend), gc.c
14087 (scm_unhash_name), eval.c (scm_eval_options_interface,
14088 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
14089 (scm_display_error, scm_set_print_params_x,
14090 scm_display_application, scm_display_backtrace, scm_backtrace),
14091 async.c (scm_async, scm_system_async, scm_async_mark,
14092 scm_system_async_mark, scm_run_asyncs, scm_noop,
14093 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
14094 scm_mask_signals): Added docstrings.
14095
e228a203
KN
140962001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
14097
14098 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
14099 address of car/cdr. (Thanks to Dirk Herrmann)
14100 Use scm_sizet to obtain the length of strings.
14101 (Thanks to Matthias Koeppe)
14102
1552a59d
MV
141032001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
14104
14105 * symbols.c (scm_mem2symbol): Put a empty statement after the
14106 next_symbol label. This is mandated by ANSI, appearantly.
14107
3178f751
MV
141082001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14109
14110 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
14111 sense to compile for a specific kernel version. Do not include
14112 <asm/signal.h> while defining __KERNEL__. This hack should no
14113 longer be needed and caused problems.
14114
7af4defe
MV
141152001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
14116
14117 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
14118 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
14119 can not deal with immediates.
14120
5d6bb349
KN
141212001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
14122
14123 * list.c (scm_list_copy): Validate the first argument.
14124
ec9709f0
MV
141252001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
14126
14127 Fix evaluator so that top-level expressions are correctly
14128 evaluated with respect to the module system.
1c938eb8 14129
ec9709f0
MV
14130 * modules.h. modules.c (scm_current_module_lookup_closure): New
14131 function.
14132
14133 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
14134 prototypes.
14135 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
14136 names to better reflect their meaning.
14137
14138 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
14139 evaluated at top-level and synronize lookup closure before
14140 executing every subform.
14141 (scm_primitve_eval_x, scm_primitive_eval): New functions.
14142 (scm_eval_x, scm_eval): Reimplement in terms of
14143 scm_primitive_eval_x and scm_primitive_eval, respectively.
1c938eb8 14144
ec9709f0
MV
141452001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
14146
14147 * macros.c (scm_macro_name, scm_macro_transformer): Use
14148 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
14149 Thanks!
14150
42417394
KN
141512001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
14152
14153 * dump.c (scm_store_bytes): Store data size before data.
14154 (scm_restore_bytes): Restore data size. Takes a pointer to size.
14155 * dump.h (scm_restore_bytes): Updated.
14156
bf942687
KN
141572001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
14158
14159 * dump.c: Use double cells for update schedule.
14160
1be4270a
KN
141612001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
14162
14163 * ports.c (scm_unread_char): Take an optional argument.
14164
548728ea
MV
141652001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14166
14167 * modules.h (scm_selected_module, scm_current_module): Renamed
14168 scm_selected_module to scm_current_module to synchronize Scheme
14169 and C names.
14170 (scm_select_module, scm_set_current_module): Likewise. Changed
14171 all uses.
1c938eb8 14172
548728ea
MV
14173 * ports.c (scm_port_for_each): Make a snapshot of the port table
14174 before iterating over it. The table might change while the user
14175 code is running. With the snapshot, the user can depend on the
c5408bc3 14176 fact that each port that existed at the start of the iteration is
548728ea
MV
14177 encountered exactly once. (ice-9 popen) depends on this.
14178
cb0d8be2
DH
141792001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14180
14181 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
14182
14183 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
14184 range checking for the size parameter. Thanks to Martin
14185 Grabmueller for the hint.
14186
14187 (scm_makstr): Reordered string initialization to make interrupt
14188 deferring unnecessary.
14189
14190 * vectors.c (scm_make_vector): Fixed range checking.
14191
e382fdbe
DH
141922001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14193
14194 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
14195
14196 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
14197 checking of the size parameter for type correctness and valid
14198 range. Thanks to Rob Browning for reporting the problem. Instead
14199 of deferring interrupts, scm_remember_upto_here_1 is used.
14200
bf8f0922
KN
142012001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14202
14203 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
14204 (scm_dump_cell_update): Removed.
14205 (scm_dump_update): Renamed from scm_dump_object_update.
14206 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
14207 a pointer instead of returning a value.
14208 * keywords.c (keyword_undump): Updated.
14209
914cceec
KN
142102001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14211
14212 * dump.c, dump.h: Modified a lot.
5f17c66f 14213 (SCM_DUMP_COOKIE): Version 0.1
914cceec
KN
14214 (scm_dump_mark): Removed.
14215 (scm_restore_cell_object, scm_store_cell_object): New functions.
14216
14217 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
14218 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
14219 New slots: dump, undump.
14220 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
14221 Updated.
14222
14223 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
14224 (keyword_undump): Renamed from keyword_alloc.
14225 (scm_init_keywords): Set keyword_dump and keyword_undump.
14226
ecf470a2
ML
142272001-02-03 Michael Livshin <mlivshin@bigfoot.com>
14228
14229 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
14230 the deprecated SCM_DOUBLE_CELLP.
14231
14232 * tags.h (SCM_DOUBLE_CELLP): deprecated.
14233
03416a99
KN
142342001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
14235
14236 * dump.c, dump.h: New files.
14237 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
14238 * init.c: #include "libguile/dump.h".
14239 (scm_init_guile_1): Call scm_init_dump.
14240 * smob.h (scm_smob_descriptor): New slots: dump_mark,
14241 dump_dealloc, dump_store, undump_alloc, undump_restore,
14242 undump_init.
14243 * smob.c (scm_make_smob_type): Init the new slots.
14244 (scm_set_smob_dump, scm_set_smob_undump): New functions.
14245 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
14246
14247 * keywords.c: #include "libguile/dump.h".
14248 (keyword_dealloc, keyword_alloc): New functions.
14249 (scm_init_keywords): Set smob_dump and smob_undump.
14250
00ffa0e7
KN
142512001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
14252
14253 * vectors.c (scm_c_make_vector): New function.
14254 * vectors.h (scm_c_make_vector): Declared.
14255 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
14256 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
14257 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
14258 (scm_make_method_cache, scm_i_vector2list,
14259 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
14260 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
14261 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
14262 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
14263 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
14264 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
14265 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
14266 (scm_vector, scm_make_vector): Use scm_c_make_vector.
14267
14268 * hashtab.c (scm_c_make_hash_table): New function.
14269 * hashtab.h (scm_c_make_hash_table): Declared.
14270 * environments.c (scm_make_leaf_environment,
14271 scm_make_eval_environment), gc.c (scm_init_storage),
14272 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
14273 Use scm_c_make_hash_table.
14274
b8446ce8
MD
142752001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14276
14277 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
14278
e3239868
DH
142792001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14280
14281 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
14282 end of docstring.
14283
14284 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
14285 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
14286 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
14287 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
14288 srcprop.c (scm_source_properties, scm_set_source_properties_x,
14289 scm_source_property, scm_set_source_property_x), sort.c
14290 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
14291 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
14292 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
14293 docstrings.
14294
41ee56dd
MD
142952001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14296
14297 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
14298 really get that arg.
14299
b6311c08
KN
143002001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
14301
14302 * goops.c (s_scm_get_keyword): Bug fix.
14303
a49af0c0
DH
143042001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14305
14306 The following patch was sent by Martin Grabmueller. It makes sure
14307 that in case of parameter errors the correct function name is
14308 shown, and that parameter types are only checked once.
14309
14310 * strop.c (string_copy, string_upcase_x, string_downcase_x,
14311 string_capitalize_x): New functions. Each one performs the core
14312 functionality of the corresponding scm_* function.
14313
14314 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
14315 scm_string_downcase_x, scm_string_downcase,
14316 scm_string_capitalize_x, scm_string_capitalize): Reduced to
14317 parameter checking wrappers of the above functions.
14318
13070bd3
DH
143192001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14320
14321 * continuations.c, dynl.c, keywords.c, load.c: Include
14322 strings.h. Thanks to Bill Schottstaedt for the bug report.
14323
2f2b390c
DH
143242001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14325
14326 * backtrace.c (display_header): Make sure that line and column
14327 information is shown independent of whether the port the code was
14328 read from had an associated filename. Thanks to Martin
14329 Grabmueller for providing this patch.
14330
efa40607
DH
143312001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14332
14333 * fports.[ch] (scm_file_port_p): New primitive.
14334
a98bddfd
DH
143352001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14336
14337 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
14338 These are now defined in fports.c, strports.c and vports.c.
14339
14340 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
14341 vports.c (scm_tc16_sfport): Made variables (were macros defined in
14342 tags.h).
14343
14344 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
14345 (scm_make_sfptob): Made static. These return a type code now.
14346
14347 fports.c (scm_init_fports), strports.c (scm_init_strports),
14348 vports.c (scm_init_vports): Create the corresponding port types.
14349
14350 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
14351 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
14352
14353 * init.c (scm_init_guile_1): Make sure strports are initialized
14354 before gdbint.
14355
14356 * ports.[ch] (scm_make_port_type): Changed the return type to
14357 scm_bits_t.
14358
14359 * ports.c (scm_ports_prehistory): Don't create any port types
14360 here.
14361
14362 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
14363 against scm_tc16_fport directly.
14364
0419a528
DH
143652001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14366
14367 * srcprop.c (scm_set_source_property_x): Fix to handle
14368 (set-source-property! <obj> 'copy <datum>) correctly.
14369
6d36532c
GH
143702001-01-24 Gary Houston <ghouston@arglist.com>
14371
14372 * filesys.c (scm_link): docstring fix.
14373 * fports.h (scm_setfileno): obsolete declaration removed.
14374 * posix.c: bogus popen declaration removed.
14375
14376 * rdelim.c: new file, split from ioext.c.
14377 * rdelim.h: new file, split from ioext.h
14378 * Makefile.am: add rdelim.c and related files.
14379 * init.c: call scm_init_rdelim. include rdelim.h.
14380
3ba5a6c2
DH
143812001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14382
14383 This patch was sent by Martin Grabmueller and makes sure that
14384 parameter errors are reported correctly by the lexicographic
14385 ordering predicates.
14386
14387 * strorder.c (string_less_p, string_ci_less_p): New functions.
14388
14389 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
14390 functionality into string_less_p, string_ci_less_p respectively.
14391 The remaining code is just a wrapper to do the parameter
14392 checking.
14393
14394 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
14395 parameters and call string_less_p instead of scm_string_less_p.
14396
14397 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
14398 Check the parameters and call string_less_ci_p instead of
14399 scm_string_ci_less_p.
14400
e40a4095
DH
144012001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14402
ed6a2db9
DH
14403 This patch modifies scm_display_error to perform parameter
14404 checking. Thanks to Neil Jerram for the bug report.
14405
e40a4095
DH
14406 * backtrace.[ch] (scm_i_display_error): New function.
14407
14408 * backtrace.c (scm_display_error): Added parameter check and
14409 extracted the core functionality into function
14410 scm_i_display_error.
14411
14412 * throw.c (handler_message): Call scm_i_display_error to display
14413 the error message.
14414
f1e06a96
MD
144152001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14416
14417 * eval.c (SCM_APPLY): Added # args check for application of
14418 procedures with arity 3. (Thanks to Anders Holst.)
14419
30ea841d
DH
144202001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14421
14422 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
14423
14424 (SCM_OPDIRP): Deprecated.
14425
14426 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
14427 SCM_OPN.
14428
14429 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
14430 Instead, give an explicit error message in case the directory is
14431 closed.
14432
14433 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
14434 instead of SCM_OPENP and SCM_CLOSEDP.
14435
14436 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
14437
312ae976
DH
144382001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
14439
14440 * eval.c (inner_eval, scm_eval): Move all real functionality into
14441 inner_eval. Avoid to copy the expression twice by inlining some
14442 code from scm_i_eval.
14443
4567ed78
DH
144442001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
14445
14446 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
14447 now has to be the last clause, as required by R5RS. Thanks to
14448 Martin Grabmueller for the patch.
14449
10288a09
GH
144502001-01-18 Gary Houston <ghouston@arglist.com>
14451
14452 * ioext.c: further simplify scm_read_string_x_partial by defining
14453 a macro SCM_EBLOCK.
14454
8f379a8f
DH
144552001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14456
14457 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
14458
5c75b29f
DH
144592001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14460
14461 * __scm.h: Added comment about architecture and compiler
14462 properties that are required by guile.
14463
14464 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14465 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
14466
14467 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
14468
14469 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
14470
14471 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14472 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
14473
ac0c002c
DH
144742001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
14475
14476 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
14477 to the names in limits.h.
14478
14479 * numbers.c (abs_most_negative_fixnum): Added.
14480
14481 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
14482 fixnum-min) special case.
14483
14484 (scm_big_and): Fix for negative first parameter.
14485
14486 (scm_bit_extract): Fix for fixnum paramters.
14487 Thanks to Rob Browning for the bug report.
14488
14489 (scm_init_numbers): Initialize abs_most_negative_fixnum.
14490
debe0dc2
DH
144912001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
14492
14493 * symbols.c (scm_symbol_bound_p): Fixed comment.
14494 Thanks to Chris Cramer.
14495
8a39e3fc
DH
144962001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
14497
14498 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
14499 Thanks to Bill Schottstaedt.
14500
322ec19d
ML
145012001-01-11 Michael Livshin <mlivshin@bigfoot.com>
14502
9a5fa6e9 14503 from Matthias Köppe:
1c938eb8 14504
322ec19d
ML
14505 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
14506 casts its result, so doesn't yield an lvalue per ANSI C.
14507
14508 * goops.c (s_scm_sys_set_object_setter_x): use
14509 SCM_SET_ENTITY_SETTER.
14510 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
14511
14512 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
14513 its result, so doesn't yield an lvalue per ANSI C.
14514 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
14515 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
14516 SCM_GC_SET_CARD_FLAGS.
14517 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
14518
14519 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
14520
60d02d09
GH
145212001-01-08 Gary Houston <ghouston@arglist.com>
14522
14523 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
14524 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
14525 socket.c (scm_recvfrom): use the new macro, plus minor docstring
14526 changes.
14527 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
14528 for fdes. if current input port is used, check that it's a file
14529 port.
14530
c2da2648
GH
145312001-01-06 Gary Houston <ghouston@arglist.com>
14532
14533 * ioext.c (scm_read_string_x_partial): new procedure, implements
14534 read-string!/partial.
14535 * ports.c (scm_take_from_input_buffers): new procedure used by
14536 scm_read_string_x_partial.
14537 (scm_drain_input): use scm_take_from_input_buffers.
14538
4651d663
MV
145392001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
14540
14541 * validate.h (SCM_VALIDATE_NUMBER): New.
14542
c0a5d888
ML
145432001-01-03 Michael Livshin <mlivshin@bigfoot.com>
14544
14545 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
14546 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
14547 SET_DESTROYED): new defines/macros.
14548 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
14549 (add_to_live_list): takes a `guardian_t *' now, not SCM.
14550 (guardian_print): print more info.
14551 (guardian_apply): check if the guardian is destroyed, and throw an
14552 error if so. take one more optional argument `throw_p'.
14553 (scm_guard): depending on the value of `throw_p', return a boolean
14554 result.
14555 (scm_get_one_zombie): remove redundant property test.
14556 (guardian_t): represent the various (currently 3, I hope nothing
14557 more gets added) boolean fields as bit flags.
14558 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
14559 (scm_destroy_guardian_x): new procedure.
14560
14561 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
14562 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
14563
0c6d2191
GH
145642001-01-01 Gary Houston <ghouston@arglist.com>
14565
14566 * fports.c (fport_write): bugfix: handle short writes for
14567 unbuffered ports too. optimize the buffered case by minimizing
14568 the number of write/flush calls.
14569 (write_all): new helper procedure.
14570
a51fe247 14571The ChangeLog continues in the file: "ChangeLog-2000"
d9f71a07
LC
14572
14573;; Local Variables:
14574;; coding: utf-8
14575;; End: