Merge branch 'master' of git://git.sv.gnu.org/guile into nits
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
582a4997
LC
12008-08-25 Ludovic Courtès <ludo@gnu.org>
2
3 * Makefile.am (AM_CFLAGS): New.
4 (guile_CFLAGS, libguile_la_CFLAGS): Use it.
5
417566eb
LC
62008-08-20 Ludovic Courtès <ludo@gnu.org>
7
8 * eval.c, filesys.c, gc.c, numbers.c, stime.c, threads.c: Don't
9 define `_GNU_SOURCE' explicitly as it's now defined in
10 <config.h> thanks to `AC_USE_SYSTEM_EXTENSIONS'.
11
4a1db3a9
LC
122008-08-19 Han-Wen Nienhuys <hanwen@lilypond.org>
13 Ludovic Courtès <ludo@gnu.org>
14
15 * goops.c (scm_init_goops_builtins, go_to_hell): Fix allocation
16 of `hell' by passing "hell_size * sizeof (*hell)" instead of
17 "hell_size" to `scm_malloc ()' and `scm_realloc ()'.
18
76dae881
NJ
192008-08-02 Neil Jerram <neil@ossau.uklinux.net>
20
21 * numbers.c (scm_rationalize): Update docstring to match the
22 manual (which is more correct). Change argument "err" to "eps",
23 also to match the manual.
24
2b3df509
NJ
252008-07-17 Neil Jerram <neil@ossau.uklinux.net>
26
27 From Thiemo Seufer <ths@networkno.de>:
28
29 * gc_os_dep.c (CPP_WORDSZ, ALIGN_DOUBLE, DATAEND,
30 DYNAMIC_LOADING): Added #defines.
31 (_fdata, _end): Added declarations.
32 (DATASTART): Use _fdata instead of __data_start.
33 (STACKBOTTOM): Changed from 0x80000000 to 0x7fff8000.
34
450be18d
LC
352008-07-16 Ludovic Courtès <ludo@gnu.org>
36
37 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_STRUCT_DIRENT64): New.
38 * gen-scmconfig.c (main): Produce definitions of
39 `SCM_HAVE_STRUCT_DIRENT64' and `SCM_HAVE_READDIR64_R'.
40 * _scm.h (dirent_or_dirent64): Depend on
41 `SCM_HAVE_STRUCT_DIRENT64', for the sake of HP-UX 11.11.
42 (readdir_r_or_readdir64_r): Depend on `SCM_HAVE_READDIR64_R',
43 for HP-UX 11.11.
44
071bb6a8
LC
452008-07-05 Ludovic Courtès <ludo@gnu.org>
46
47 * strings.c (scm_c_symbol_length): New function.
48 * strings.h (scm_c_symbol_length): New declaration.
49
3e28462f
LC
502008-07-04 Ludovic Courtès <ludo@gnu.org>
51
b6137ed7
LC
52 * posix.h (scm_i_locale_mutex): Don't declare as `SCM_INTERNAL'
53 since it's needed by `libguile-i18n'. Reported by Patrick
54 Horgan <phorgan1@gmail.com>.
55
3e28462f
LC
56 * __scm.h (SCM_INTERNAL): Add `extern' so that these symbols are
57 not considered as "common" by GCC 4.3. Reported by Patrick
58 Horgan <phorgan1@gmail.com>.
59
95c6523b
LC
602008-06-28 Ludovic Courtès <ludo@gnu.org>
61
47871d5a
LC
62 * Makefile.am (INCLUDES): Renamed to...
63 (AM_CPPFLAGS): this, to match current Automake conventions.
64 Users updated.
65
95c6523b
LC
66 * tags.h (SCM_UNPACK): Disable type-checking for `__DECC' and
67 `__HP_cc'. Reported by Peter O'Gorman <pogma@thewrittenword.com>.
68
6eadcdab
LC
692008-06-02 Ludovic Courtès <ludo@gnu.org>
70
71 * deprecated.c (maybe_close_port): Rename EXCEPT to EXCEPT_SET
72 to workaround `#define except' on Tru64. Reported by Peter
73 O'Gorman <pogma@thewrittenword.com>.
74
102dbb6f
LC
752008-05-31 Ludovic Courtès <ludo@gnu.org>
76
77 * __scm.h (SCM_INTERNAL): New macro.
78 * *.h: Use it to mark as internal `scm_i_' and `scm_init_'
79 functions that are not used by public macros or inline
80 functions.
81
184af225
JG
822008-05-14 Julian Graham <joolean@gmail.com>
83
84 * threads.c (fat_mutex)[recursive]: New field.
85 (make_fat_mutex): Adjust initialization to reflect changes to
86 mutex lock level semantics.
87 (fat_mutex_lock, fat_mutex_unlock): Add support for unowned
88 mutexes and locking mutexes on behalf of other threads.
89 (scm_lock_mutex, scm_lock_mutex_timed): Update to reflect
90 signature change to fat_mutex_lock.
91 (scm_mutex_owner, scm_mutex_level, scm_mutex_locked_p): New /
92 re-enabled functions.
93 * threads.h (scm_mutex_owner, scm_mutex_level,
94 scm_mutex_locked_p): Prototypes for new functions.
95
e4c1d4cf
NJ
962008-05-12 Neil Jerram <neil@ossau.uklinux.net>
97
98 * discouraged.c: Expand DEFFROM and DEFTO macros, to avoid
99 compiler warnings about excess semicolons. (Reported by Didier
100 Godefroy.)
101
346e4402
NJ
1022008-05-08 Neil Jerram <neil@ossau.uklinux.net>
103
104 * throw.c (scm_ithrow): For IA64 add a return statement, to
105 appease GCC.
106
107 * threads.h (scm_i_thread): New IA64 fields:
108 register_backing_store_base and pending_rbs_continuation.
109
110 * threads.c (guilify_self_1): For IA64: cap RBS base address at
111 the current value of scm_ia64_ar_bsp, and store the capped value
112 in thread state.
113 (SCM_MARK_BACKING_STORE): Use thread->register_backing_store_base
114 instead of scm_ia64_register_backing_store_base().
115 (scm_threads_mark_stacks): Add "&" in "&t->regs", so that the code
116 works both for jmp_buf defined as an array, and jmp_buf defined as
117 a struct.
118
119 * continuations.h (scm_t_contregs): Remove `fresh' and `ctx'
120 fields; these are now inside the IA64 definition of `jmp_buf'.
121
122 * continuations.c (scm_make_continuation): Simplify, by moving
123 some of the IA64 code inside the definition of "setjmp", and by
124 some obvious commonizations. For IA64 register backing store
125 (RBS) stack base, use thread->register_backing_store_base instead
126 of scm_ia64_register_backing_store_base().
127 (copy_stack): For IA64, store pointer to continuation being
128 invoked in thread state, so we can restore the continuation's RBS
129 stack just before the next setcontext call.
130 (copy_stack_and_call): Don't restore RBS stack explicitly here.
131 It will be restored, if appropriate, inside the longjmp call.
132 (scm_ia64_longjmp): New function.
133
134 * __scm.h (setjmp, longjmp, jmp_buf): For IA64, implement using
135 getcontext and setcontext.
136
7a35784c
LC
1372008-05-07 Ludovic Courtès <ludo@gnu.org>
138
139 * numbers.c (scm_from_complex_double): Mark as `SCM_UNUSED'.
140 This fixes compilation with `-Werror' on FreeBSD 6.2 (i386).
141
6d4e1f62
NJ
1422008-05-05 Neil Jerram <neil@ossau.uklinux.net>
143
144 * c-tokenize.lex: #define YY_NO_INPUT.
145
bd22f1c7
LC
1462008-04-26 Ludovic Courtès <ludo@gnu.org>
147
148 * read.c (scm_read_sexp): Remove extraneous semi-colon at
149 end-of-line, which broke compilation with GCC 2.7. Reported by
150 Alain Guibert <alguibert+bts@free.fr>.
151
535b3592
LC
1522008-04-24 Ludovic Courtès <ludo@gnu.org>
153
154 * Makefile.am (DEFAULT_INCLUDES): New. Fixes compilation on
155 Tru64 where our "random.h" would shadown libc's one.
156 (INCLUDES): Add "-I$(top_buildir)", which is normally in
157 `DEFAULT_INCLUDES'.
158 * gen-scmconfig.c: Include <libguile/gen-scmconfig.h>, not
159 "gen-scmconfig.h" since that file is under `$(builddir)'.
160
f5c2af4b
LC
1612008-04-16 Ludovic Courtès <ludo@gnu.org>
162
163 * ports.c (scm_getc, scm_putc, scm_puts): Moved...
164 * inline.h: ... here. Noticeably improves `read' performance.
165
ef4cbc08
LC
1662008-04-15 Ludovic Courtès <ludo@gnu.org>
167 Julian Graham <joolean@gmail.com>
168
169 * read.c (scm_keyword_postfix): New.
170 (scm_read_opts): Update docstring for `keywords'.
171 (scm_read_mixed_case_symbol): Add support for postfix keywords.
172
07db6fcd
LC
1732008-04-13 Ludovic Courtès <ludo@gnu.org>
174
175 * inline.h (SCM_C_USE_EXTERN_INLINE): New macro. Use it to make
176 sure "extern" declarations are produced when "extern inline" is
9dca8935 177 used. Simplify macrology around inline definitions.
07db6fcd 178
7dc9ae71
LC
1792008-04-10 Ludovic Courtès <ludo@gnu.org>
180
181 * inline.h (SCM_C_EXTERN_INLINE): Special-case Apple's GCC
182 4.0-based compiler, which doesn't support GNU inline semantics
183 at all in C99 mode but doesn't define `__GNUC_STDC_INLINE__'.
184 See http://thread.gmane.org/gmane.network.gnutls.general/1135 .
185
54ee7cdf
AW
1862008-04-10 Andy Wingo <wingo@pobox.com>
187
4650d115
AW
188 * struct.c (scm_struct_ref, scm_struct_set_x): "Light" structs
189 have no hidden words (members of the SCM_STRUCT_DATA(x) array
190 accessed with negative indices). In that case, determine the
191 number of fields from the length of the struct layout
192 descriptor. (Most GOOPS instances are light structs.)
193
4125c767
AW
194 * goops.c (wrap_init): Initialize 'u' slots to 0, not some random
195 SCM value.
196
197 * goops.c (get_slot_value, set_slot_value): In the struct
54ee7cdf
AW
198 allocation case, don't poke the slots array directly -- we should
199 go through struct-ref/struct-set! code so that we get the
200 permissions and allocation ('u' versus 'p') correct.
201
979eade6
LC
2022008-04-03 Ludovic Courtès <ludo@gnu.org>
203
204 * inline.h (SCM_C_EXTERN_INLINE): New macro, addresses the
205 "extern inline" semantic change in C99 mode with GCC 4.3 and
206 later and the warning in C99 mode with GCC 4.2. Use it in the
207 inline function definitions.
208
2a1d0688
NJ
2092008-03-24 Neil Jerram <neil@ossau.uklinux.net>
210
211 Applying patch from Julian Graham, containing minor fixes to his
212 thread enhancements:
213
214 * threads.c (to_timespec): Change 1000000 multiplier to
215 1000000000.
216 (unchecked_unlock_sym, allow_external_unlock_sym,
217 recursive_sym): Use SCM_SYMBOL.
218 (scm_make_mutex_with_flags): When raising unsupported option
219 error, report what the unsupported option was.
220 (fat_mutex_unlock): When raising errors, unlock m->lock first.
221 (fat_cond_timedwait): Removed.
222 (scm_timed_wait_condition_variable): Call fat_mutex_unlock
223 directly instead of via fat_cond_timedwait.
224
c2ad98ad
LC
2252008-03-10 Ludovic Courtès <ludo@gnu.org>
226
227 * eval.c, filesys.c: Enclose `alloca' blob in `#ifndef alloca',
228 as per Gnulib's `alloca'. This should fix compilation on
229 FreeBSD 6.
230
bca69a9f
NJ
2312008-03-09 Neil Jerram <neil@ossau.uklinux.net>
232
233 * numbers.c: Only define scm_from_complex_double if it will
234 actually be used.
235
6180e336
NJ
2362008-03-08 Julian Graham <joolean@gmail.com>
237
241d9cea
NJ
238 * threads.c (scm_join_thread_timed, scm_thread_p,
239 scm_make_mutex_with_flags, scm_lock_mutex_timed,
240 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p): New
6180e336
NJ
241 functions.
242 (thread_mark): Updated to mark new struct field `mutexes'.
241d9cea 243 (do_thread_exit): Notify threads waiting on mutexes locked by exiting
6180e336 244 thread.
241d9cea
NJ
245 (scm_join_thread, scm_make_mutex, scm_make_recursive_mutex,
246 scm_mutex_lock): Reimplement in terms of their newer
6180e336
NJ
247 counterparts.
248 (scm_abandoned_mutex_error_key): New symbol.
249 (fat_mutex)[unchecked_unlock, allow_external_unlock]: New fields.
250 (fat_mutex_lock): Reimplement to support timeouts and abandonment.
251 (fat_mutex_trylock, scm_try_mutex): Remove fat_mutex_trylock and
252 reimplement scm_try_mutex as a lock attempt with a timeout of zero.
253 (fat_mutex_unlock): Allow unlocking from other threads and unchecked
254 unlocking; implement in terms of condition variable wait.
241d9cea 255 (scm_timed_wait_condition_variable): Reimplement in terms of
6180e336
NJ
256 fat_mutex_unlock.
257 * threads.h (scm_i_thread)[mutexes]: New field.
258 (scm_join_thread_timed, scm_thread_p, scm_lock_mutex_timed,
241d9cea 259 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p):
6180e336
NJ
260 Prototypes for new functions.
261
61b6542a
LC
2622008-03-06 Ludovic Courtès <ludo@gnu.org>
263
264 * eval.c (scm_eval): If MODULE_OR_STATE is not a dynamic state,
265 make sure it's a module. Reported by David I. Lehn.
266
3f520967
LC
2672008-03-02 Ludovic Courtès <ludo@gnu.org>
268
269 * pairs.h (scm_is_pair): Moved declaration to `inline.h'.
270 * inline.h: Make sure `extern' declarations are not produced
271 when `inline' is supported but GCC is not used. This
272 fixes "mixed linkage" errors with compilers such as
273 DEC/Compaq/HP CC.
274
fa80e280
NJ
2752008-02-27 Neil Jerram <neil@ossau.uklinux.net>
276
277 * _scm.h (errno): Remove declarations that have been there
278 forever, and are known to conflict on some platforms with that
279 provided by <errno.h>, which we include unconditionally. If
280 <errno.h> doesn't provide a errno declaration, what is the point
281 of it?
282
a2c25234
LC
2832008-02-23 Ludovic Courtès <ludo@gnu.org>
284
285 * numbers.c (scm_make_rectangular): Rename argument to
286 `real_part' and `imaginary_part' to work around Solaris 2.10
287 headers which define `imaginary' as a macro. Patch by Tim
288 Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
289
bfb64eb4
LC
2902008-02-22 Ludovic Courtès <ludo@gnu.org>
291
4fcb27c4
LC
292 * read.c (strncasecmp): Add declaration when
293 `HAVE_DECL_STRNCASECMP' is undefined. Fixes compilation on
294 NetBSD 1.6.
295
bfb64eb4
LC
296 * gc.c (scm_ia64_ar_bsp)[linux]: Don't discard `const' qualifier
297 of OPAQUE.
298
5305df84
LC
2992008-02-21 Ludovic Courtès <ludo@gnu.org>
300
301 Fix bug #22369.
302
303 * goops.c (scm_add_slot): Add `SCM_UNDEFINED' as last argument
a2c25234
LC
304 to `scm_list_n ()'. Thanks to René Köcher
305 <shirk87@googlemail.com>.
5305df84 306
25a640ca
LC
3072008-02-17 Ludovic Courtès <ludo@gnu.org>
308
309 * script.c (scm_compile_shell_switches): Update copyright year.
310
9a6fac59
LC
3112008-02-16 Ludovic Courtès <ludo@gnu.org>
312
313 * gc_os_dep.c: Add NetBSD/alpha support. Patch by Greg Troxel
314 <gdt@ir.bbn.com>.
315
5b5179f8
LC
3162008-02-12 Ludovic Courtès <ludo@gnu.org>
317
318 * guile-snarf.in (tempdir): Honor `$TMPDIR'.
319
4b26c03e
NJ
3202008-02-11 Neil Jerram <neil@ossau.uklinux.net>
321
322 * numbers.c (SCM_COMPLEX_VALUE): Use GUILE_I instead of _Complex_I
323 directly, and only if GUILE_I was defined by the configure step.
324 (scm_log, scm_log10, scm_exp, scm_sqrt): Use SCM_COMPLEX_VALUE
325 code only if SCM_COMPLEX_VALUE is defined.
326
7f74cf9a
LC
3272008-02-07 Ludovic Courtès <ludo@gnu.org>
328
329 Fix bug #21378.
330 Thanks to David Diffenbaugh <davediff@nbcs.rutgers.edu>.
331
332 * read.c (scm_read_quote): Don't use `__FUNCTION__' since it is
333 not supported by Sun CC on Solaris 9.
334 (scm_read_keyword): Likewise.
335 * strings.c (scm_take_locale_stringn): Remove
336 `SCM_C_INLINE_KEYWORD' to allow compilation with Sun CC.
337
86a597f8
NJ
3382008-02-07 Julian Graham <joolean@gmail.com>
339
241d9cea
NJ
340 * threads.c (do_thread_exit, scm_cancel_thread,
341 scm_set_thread_cleanup_x, scm_thread_cleanup): Lock on thread-specific
86a597f8
NJ
342 admin mutex instead of `thread_admin_mutex'.
343 * threads.h (scm_i_thread)[admin_mutex]: New field.
344 * throw.c (make_jmpbuf): Don't enter critical section during thread
345 spawn -- there is a possibility of deadlock if other threads are
346 exiting.
241d9cea 347
4a19ed04
NJ
3482008-02-06 Neil Jerram <neil@ossau.uklinux.net>
349
350 * gc-malloc.c (scm_gc_malloc): Return NULL if requested size is 0.
351 (scm_gc_free): Don't call `free' if mem is NULL.
352
189171c5
LC
3532008-02-06 Ludovic Courtès <ludo@gnu.org>
354
355 * numbers.c (scm_i_mkbig, scm_i_long2big, scm_i_ulong2big,
356 scm_i_clonebig, scm_i_bigcmp, scm_i_dbl2big, scm_i_dbl2num,
357 scm_i_normbig): Remove `SCM_C_INLINE_KEYWORD' since these are
358 declared as `extern' in `numbers.h'. This precluded compilation
359 on Solaris 9 with Sun CC (reported by David Halik
360 <dhalik@nbcs.rutgers.edu>).
361
d05bcb2e
NJ
3622008-02-05 Neil Jerram <neil@ossau.uklinux.net>
363
364 * fports.c (fport_seek): Make dependent on GUILE_USE_64_CALLS.
365
366 * _scm.h: Make definition of CHOOSE_LARGEFILE depend on
367 GUILE_USE_64_CALLS.
368
3ac8359a
NJ
3692008-02-01 Neil Jerram <neil@ossau.uklinux.net>
370
371 * modules.c (the_root_module): Moved before scm_current_module.
372 (scm_current_module): Return the root module if `the-module' fluid
373 gives #f.
374
d3cf93bc
NJ
3752008-01-22 Neil Jerram <neil@ossau.uklinux.net>
376
7df13834
NJ
377 * COPYING: Removed.
378
d3cf93bc
NJ
379 * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL.
380
15bd90ea
NJ
3812008-01-18 Neil Jerram <neil@ossau.uklinux.net>
382
383 * hashtab.c (scm_hash_fn_create_handle_x): If supplied assoc_fn
384 returns neither a pair nor #f, signal a wrong-type-arg error.
385 (Thanks to Gregory Marton for reporting this.)
386
5c004b6d
NJ
3872007-12-29 Neil Jerram <neil@ossau.uklinux.net>
388
389 * gc.c (mark_gc_async): Change "func_data" to "fn_data", to avoid
390 clash with AIX header file.
391 * hooks.c (scm_c_hook_add, scm_c_hook_remove): Same again.
392 * hooks.h (scm_t_c_hook_function, scm_c_hook_add,
393 scm_c_hook_remove): Same again.
394
9cc37597
LC
3952007-12-08 Ludovic Courtès <ludo@gnu.org>
396
397 * __scm.h (SCM_EXPECT, SCM_LIKELY, SCM_UNLIKELY): New macros.
398 (SCM_ASSERT, SCM_ASSERT_TYPE, SCM_ASRTGO, SCM_GASSERT0,
399 SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Use them.
400 * eval.c (ASSERT_SYNTAX, ASSERT_SYNTAX_2): Likewise.
401 * eval.i.c (CEVAL): Use branch prediction hints for syntax
402 errors, wrong number of arguments and similar.
403 * numbers.c (scm_sum): Use `SCM_LIKELY' for the sum of two
404 immediate numbers.
405 (scm_difference, scm_product, scm_i_divide): Likewise.
406 * validate.h (SCM_ASSERT_RANGE): Use `SCM_UNLIKELY'.
407
7d1fc872
LC
4082007-12-04 Ludovic Courtès <ludo@gnu.org>
409
693758d5
LC
410 * ports.c (scm_c_read): Validate PORT as an open input port.
411 (scm_c_write): Validate PORT as an open output port.
412
7d1fc872
LC
413 * socket.c (scm_accept): Leave guile mode using
414 `scm_std_select ()' before calling `accept(2)'. Reported by
415 dskr <dskr@mac.com>.
416
ee834df4
LC
4172007-10-27 Ludovic Courtès <ludo@gnu.org>
418
419 * fports.c (scm_i_evict_port): Expect a port, rather than a pair
420 containing the port. Fixes a bug in the new port table (2007-08-26).
421 (scm_evict_ports): Use `scm_c_port_for_each ()'.
422
acbfb594
NJ
4232007-10-21 Neil Jerram <neil@ossau.uklinux.net>
424
425 * eval.c (unmemoize_delay): Extend the environment before
426 unmemoizing the promise thunk. This fixes a segmentation fault
427 reported by Frank Schwidom.
428
2e77f720
LC
4292007-10-20 Julian Graham <joolean@gmail.com>
430
431 Add support for thread cancellation and user-defined thread
432 cleanup handlers. Small rework by Ludovic Courtès.
433
434 * null-threads.h (scm_i_pthread_cancel,
435 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
436 * pthread-threads.h (scm_i_pthread_cancel,
437 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
438 * scmsigs.c (scm_i_signal_delivery_thread,
439 signal_delivery_thread_mutex): New.
440 (signal_delivery_thread): Leave when `read_without_guile ()'
441 returns zero.
442 (start_signal_delivery_thread): Acquire SIGNAL_DELIVERY_THREAD
443 before spawning the thread. Initialize
444 SCM_I_SIGNAL_DELIVERY_THREAD.
445 (ensure_signal_delivery_thread): Renamed to...
446 (scm_i_ensure_signal_delivery_thread): this.
447 (scm_i_close_signal_pipe): New.
448 * scmsigs.h: Updated.
449 * threads.c (thread_mark): Mark `t->cleanup_handler'.
450 (guilify_self_1): Initialize `t->cleanup_handler' and
451 `t->canceled'.
452 (do_thread_exit): Invoke `t->cleanup_handler'.
453 (on_thread_exit): Call `scm_i_ensure_signal_delivery_thread ()'.
454 Call `scm_i_close_signal_pipe ()' when the next-to-last thread
455 vanishes.
456 (scm_leave_guile_cleanup): New.
241d9cea 457 (scm_i_with_guile_and_parent): Use `scm_i_pthread_cleanup_push ()'
2e77f720
LC
458 and `scm_leave_guile_cleanup ()' to leave guile mode, rather
459 than call `scm_leave_guile ()' after FUNC.
460 (scm_cancel_thread, scm_set_thread_cleanup_x,
461 scm_threads_cleanup): New.
462 (scm_all_threads): Remove SCM_I_SIGNAL_DELIVERY_THREAD from the
463 returned list.
464 * threads.h (scm_i_thread)[cleanup_handler, canceled]: New
465 fields.
466 Add declarations of new functions.
241d9cea 467
d41668fa
LC
4682007-10-17 Ludovic Courtès <ludo@gnu.org>
469
470 * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a
471 regression compared to 1.8.2. Reported by Puneet
472 <schemer@gmail.com>.
473
66302618
LC
4742007-10-10 Ludovic Courtès <ludo@gnu.org>
475
476 * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check
477 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
478 * gen-scmconfig.h.in
479 (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER): New.
480 * gen-scmconfig.c (main): Define
481 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
482
1445e449
LC
4832007-10-04 Ludovic Courtès <ludo@gnu.org>
484
485 * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
486 `leave_locale_section ()' on failure of
487 `enter_locale_section ()' since the mutex is not held and locale
488 settings are unchanged.
489 (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
241d9cea 490 `restore_locale_settings ()' instead of `leave_locale_section ()'
1445e449 491 since the mutex is not held.
241d9cea 492
29776e85
LC
4932007-10-02 Ludovic Courtès <ludo@gnu.org>
494
495 * threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
496 since we're already in non-guile mode. Reported by Greg Toxel
497 for NetBSD.
498
61d3568b
LC
4992007-10-01 Ludovic Courtès <ludo@gnu.org>
500
501 * ports.c (flush_output_port): Expect directly a port instead of
502 a pair. Fixes a bug in the new port table (2007-08-26).
503
68eccd8b
KR
5042007-09-11 Kevin Ryde <user42@zip.com.au>
505
506 * posix.c (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
507 putenv("NAME") as the fallback everywhere else. In particular this is
508 needed for solaris 9. Reported by Frank Storbeck.
241d9cea 509
454866e0
LC
5102007-09-03 Ludovic Courtès <ludo@gnu.org>
511
512 * read.c (flush_ws): Handle SCSH block comments.
513
f43f3620
LC
5142007-09-03 Ludovic Courtès <ludo@gnu.org>
515
516 Fix alignment issues which showed up at least on SPARC.
517
518 * socket.c (scm_t_max_sockaddr, scm_t_getsockopt_result): New.
519 (scm_inet_pton): Change DST to `scm_t_uint32' for correct
520 alignment.
521 (scm_getsockopt): Change OPTVAL to `scm_t_getsockopt_result' for
522 correct alignment.
523 (_scm_from_sockaddr): Change ADDRESS to `scm_t_max_sockaddr *'.
524 (scm_from_sockaddr): Cast ADDRESS to `scm_t_max_sockaddr *'.
525 (MAX_SIZE_UN, MAX_SIZE_IN6): Removed.
526 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
527 Use `scm_t_max_sockaddr' instead of "char max_addr[MAX_ADDR_SIZE]".
528
8d4d5dfc
KR
5292007-09-03 Kevin Ryde <user42@zip.com.au>
530
531 * numbers.c (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
532 before using clog(). It's possible for gcc to provide the "complex
533 double" type, but for the system not to have the complex funcs.
534 (scm_exp): Ditto HAVE_CEXP for cexp().
535 (clog, cexp, carg): Remove fallback definitions. These only
536 duplicated the code within scm_log and scm_exp, and the latter have to
537 exist for the case when there's no "complex double". So better just
538 fix up the conditionals selecting between the complex funcs and plain
539 doubles than worry about fallbacks.
540
1ac5fb45
LC
5412007-09-02 Ludovic Courtès <ludo@gnu.org>
542
543 * socket.c (scm_make_socket_address): Free C_ADDRESS after use.
544 This fixes a memory leak.
545
b87e6d04
HWN
5462007-08-26 Han-Wen Nienhuys <hanwen@lilypond.org>
547
5dbc6c06
HWN
548 * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
549 gc.c: replace port table with weak hash table. This simplifies
550 memory management, and fixes freed cells appearing in
551 port-for-each output.
552
b87e6d04
HWN
553 * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
554 held.
555
2baec6a9
LC
5562007-08-23 Ludovic Courtès <ludo@gnu.org>
557
492faee1 558 * read.c (scm_read_quote): Record position and copy source
8d4d5dfc 559 expression when asked to. Reported by Kevin.
492faee1 560
2baec6a9
LC
561 * stime.c: Define `_REENTRANT' only if not already defined.
562
1f11c61a
KR
5632007-08-21 Kevin Ryde <user42@zip.com.au>
564
565 * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
566 tc16 values so big, real, complex and fraction can be distinguished.
567
568 (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL. NULL
569 was making numbers come out as "type 23" in gc-live-object-stats.
570 Fix tests of the tc16 number types, they were checked under
571 scm_tc7_number, but the values went down the tag>=255 smob case.
572 Put smob case under scm_tc7_smob instead of using tag>=255, per
241d9cea 573 recommendation in comments with scm_tc7_smob to use symbolic values.
1f11c61a
KR
574 Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
575 code. Lose some unnecessary "break" statements.
576
577 (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
578 element returned, rather than two lookups scm_hashq_ref and
579 scm_hashq_set_x.
580
949ec9f9
KR
5812007-08-17 Kevin Ryde <user42@zip.com.au>
582
583 * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
584 solaris 2.6. Reported by anirkko.
585
6caac03c
LC
5862007-07-29 Ludovic Courtès <ludo@gnu.org>
587
588 * Makefile.am (INCLUDES): Added Gnulib includes.
589 (gnulib_library): New.
590 (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
591 `$(gnulib_library)'.
592 (libguile_la_LIBADD): Likewise.
593
594 * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
595 to define it when available.
596 * srfi-14.c: Likewise.
f7439099
LC
597 * i18n.c: Likewise. Include Gnulib's <alloca.h>
598 * eval.c: Include Gnulib's <alloca.h>.
599 * filesys.c: Likewise.
600 * read.c: Don't include <strings.h> and don't provide an
601 `strncasecmp ()' replacement; use Gnulib's <string.h> and
602 `strncasecmp ()' instead.
6caac03c 603
e08f3f7a
LC
6042007-07-25 Ludovic Courtès <ludo@gnu.org>
605
606 * eval.c (macroexp): When `scm_ilength (res) <= 0', return
607 immediately. This used to produce a circular memoized
608 expression, e.g., for `(set (quote x) #t)'.
609
7337d56d
LC
6102007-07-22 Ludovic Courtès <ludo@gnu.org>
611
612 Overhauled the reader, making it faster.
613
614 * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
615 (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
616 of `scm_lreadr ()'.
617
618 * read.c: Overhauled. No longer use a token buffer. Use a
619 on-stack C buffer in the common case and use Scheme strings when
620 larger buffers are needed.
621 * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
622 scm_lreadr, scm_lreadrecparen): Removed.
623 (scm_i_input_error): Marked as `SCM_NORETURN'.
624
df449722
LC
6252007-07-15 Ludovic Courtès <ludo@gnu.org>
626
627 * script.c (scm_compile_shell_switches): Updated copyright year.
628
b1f57ea4
LC
6292007-07-11 Ludovic Courtès <ludo@gnu.org>
630
631 * goops.c (scm_sys_method_more_specific_p): Added docstring.
632 Make sure LEN is greater than or equal to the minimum length of
633 specializers of M1 and M2. This fixes a segfault later on in
634 `more_specificp ()' if TARGS is too small. Reported by Marco
635 Maggi <marco.maggi-ipsu@poste.it>.
636
d3075c52
LC
6372007-06-26 Ludovic Courtès <ludo@gnu.org>
638
639 * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
640 sure to free the previous array after the new one has been
641 installed. This leak is made visible by running
642 "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
643 from the REPL within Valgrind.
644
7a5fb796
LC
6452007-06-12 Ludovic Courtès <ludo@chbouib.org>
646
647 * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
648 as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
649 bus error on SPARC (and possibly others) due to unaligned access.
650
a1ef7406
LC
6512007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
652
653 * posix.c (scm_ttyname): Check whether RESULT is NULL before
654 making a string from it (reported by Dan McMahill). Don't call
655 `scm_from_locale_string ()' before the mutex is released.
656
3dcf3373
LC
6572007-05-26 Ludovic Courtès <ludo@chbouib.org>
658
659 * eval.c (scm_m_define): Updated comment. Changed order for value
660 evaluation and `scm_sym2var ()' call, which is perfectly valid per
661 R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
662
608860a5
LC
6632007-05-05 Ludovic Courtès <ludo@chbouib.org>
664
665 Implemented lazy duplicate binding handling.
666
667 * modules.c (scm_export): Renamed to...
668 (scm_module_export): This. Now public.
669 (module_variable): Removed.
670 (default_duplicate_binding_procedures_var): New variable.
671 (default_duplicate_binding_handlers, resolve_duplicate_binding,
672 module_imported_variable, scm_module_local_variable,
673 scm_module_variable): New functions.
674 (scm_module_import_interface): Rewritten.
675 (scm_module_reverse_lookup): Exported as a Scheme function.
676 * modules.h (scm_module_index_duplicate_handlers,
677 scm_module_index_import_obarray): New macros.
678 (scm_module_variable, scm_module_local_variable,
679 scm_module_export): New declarations.
680
1911e3da
LC
6812007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
682
683 * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
684 `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
685
1d8ce4c0
HWN
6862007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
687
688 * numbers.c (carg): provide carg, cexp, clog in case they are
689 missing.
690
afb49959
LC
6912007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
692
693 * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
694 `FRAC_DIGITS', etc., which are GNU extensions. Reported by
695 Steven Wu.
696
b3aa4626
KR
6972007-03-08 Kevin Ryde <user42@zip.com.au>
698
699 * struct.c, struct.h (scm_make_vtable): New function, providing
700 `make-vtable'.
701 * stacks.c (scm_init_stacks): Use it.
702
7032007-03-06 Kevin Ryde <user42@zip.com.au>
704
705 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
706 allocating a tail array. If there's no such then those tail fields
707 are uninitialized and garbage SCMs there can cause a segv if printed
708 (after fetching with struct-ref).
709
7102007-02-22 Kevin Ryde <user42@zip.com.au>
711
712 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
713 (scm_usleep): Update docstring per manual, cross reference sleep.
714
715 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
716 scm_struct_init is not within that section. scm_struct_init can
717 thrown an error, which within a critical section results in an
718 abort().
719
03291373
NJ
7202007-02-19 Neil Jerram <neil@ossau.uklinux.net>
721
722 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
723 is included in the distribution.
652dbce6 724 (noinst_HEADERS): And the same for eval.i.c.
03291373 725
a2f00b9b
LC
7262007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
727
728 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
729 unconditionally. Include <langinfo.h> and <nl_types.h> when
730 available.
731 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
732 SCM_LIST_OR_INTEGER_P): New macros.
733 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
734 as powers of two instead of `(1 << LC_*)'.
735 (scm_i_locale_free): New function/macro.
736 (scm_global_locale): New global variable.
737 (smob_locale_free): Use `scm_i_locale_free ()'.
738 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
739 (get_current_locale_settings): Return `EINVAL' instead of `errno'
740 when `setlocale' fails.
741 (restore_locale_settings): Likewise.
742 (install_locale_categories): Likewise.
743 (install_locale): Likewise. Stop the locale stack traversal when
744 all categories have been handled.
745 (get_current_locale, category_to_category_mask,
746 category_list_to_category_mask): New function.
747 (scm_make_locale): Use them. Accept both lists of `LC_*' values
748 and single `LC_*' values as the first argument. Handle the case
749 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
750 duplicate C_BASE_LOCALE before using it.
751 (scm_nl_langinfo, define_langinfo_items): New functions.
752 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
753 `nl-langinfo' and invoke `define_langinfo_items ()'.
754 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
755 * posix.c: Include <xlocale.h> when available.
756 (scm_i_locale_mutex): Always define it. Statically initialized.
757 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
758 acquiring the locale mutex.
759 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
760
b3aa4626
KR
7612007-01-27 Kevin Ryde <user42@zip.com.au>
762
763 * ports.c (scm_port_line, scm_set_port_line_x), read.c
764 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
765 port line number type, should be "long" not "int", as per line_number
766 field of scm_t_port. (Makes a difference only on 64-bit systems, and
767 only then for a linenum above 2Gig.)
768
2a8d66b0
HWN
7692007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
770
771 * vector.c: remove comment as per kryde's request.
772
b3aa4626
KR
7732007-01-25 Kevin Ryde <user42@zip.com.au>
774
775 * sort.c (scm_stable_sort): Return empty list for input empty list, as
776 done in guile 1.6 and as always done by plain `sort'. Was falling
777 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
778
cb90e2cb
HWN
7792007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
780
8cb7939c
HWN
781 * vectors.c (s_scm_vector_move_right_x): complain about naming.
782
d00a0704
HWN
783 * srcprop.c: regularize comments.
784
3d178652
HWN
785 * eval.c: remove superfluous ifndef DEVAL.
786
243ebb61
HWN
787 * private-options.h: idem.
788
789 * eval.i.c: copyright nitpicking.
790
0ee05b85
HWN
791 * eval.c: distangle. move duplicate code to eval.i.c and include
792 twice.
793
794 * eval.i.c: new file.
795
22fc179a
HWN
796 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
797 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
798 read.h, stacks.c, symbols.c, throw.c: use private-options.h
799
800 * private-options.h: new file: contain hardcoded option
801 definitions.
802
cb90e2cb
HWN
803 * private-gc.h: add FSF header.
804
62560650
HWN
8052007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
806
72f19c26
HWN
807 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
808 memoize-symbol is set.
809
810 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
811
812 * eval.c (CEVAL): add memoize_symbol trap.
813
03347a97
HWN
814 * options.c (scm_options_try): new function. This allows error
815 reporting before changing options in a critical section.
816
b0763985
HWN
817 * srcprop.c: use double cell for storing source-properties. Put
818 filename in the plist, and share between srcprops if possible.
819 Remove specialized storage.
820
821 * srcprop.h: remove macros without SCM_ prefix from
822 interface. Remove specialized storage/type definitions.
823
62560650
HWN
824 * read.c: idem.
825
826 * print.c: idem.
827
828 * eval.c: terminate option lists with 0.
829
830 * options.c: remove n (for length) from scm_option_X
831 functions. Detect option list length by looking for NULL name.
832
42ddb3cb
LC
8332007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
834
835 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
836 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
837 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
838 added by `make-vtable-vtable'. Reported by Marco Maggi.
241d9cea 839
937038e8
HWN
8402007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
841
842 * throw.c (scm_ithrow): more refined error message: print symbols
843 too.
844
23d72566
KR
8452007-01-16 Kevin Ryde <user42@zip.com.au>
846
847 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
848 implementing `set-program-arguments'.
849
850 * filesys.c (scm_init_filesys): Use scm_from_int rather than
851 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
852 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
853 O_LARGEFILE. These are all int not long, per arg to open().
854 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
855 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
856 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
857 an int arg to fcntl.
858
859 * posix.c (scm_putenv): Correction to "len" variable, was defined only
860 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
861 Move it to where it's used. Reported by Hugh Sasse.
862
863 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
864 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
865 meant #\nul in the input (detected by scm_to_locale_string) and a bad
866 flags arg (detected by scm_to_int) would throw from a critical
867 section, causing an abort().
868
869 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
870 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
871 REG_NOTEOL; they're all ints not longs (per args to regcomp and
872 regexec).
873
a2c40dc7
HWN
8742007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
875
876 * throw.c (scm_ithrow): print out key symbol and string arguments
877 when error happens inside a critical section, and document why.
878
391f57e6
HWN
8792007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
880
881 * read.c (s_scm_read_hash_extend): document #f argument to
882 read-hash-extend.
883
23d72566
KR
8842007-01-04 Kevin Ryde <user42@zip.com.au>
885
886 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
887 scm_minor_version, scm_micro_version, scm_effective_version,
888 scm_version, scm_init_version): Use SCM_API instead of just extern,
889 for the benefit of mingw. Reported by Cesar Strauss.
890
93632e3c
HWN
8912007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
892
893 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
894 too.
895 (gc_update_stats): update scm_gc_cells_allocated_acc too.
896
23d72566
KR
8972006-12-27 Kevin Ryde <user42@zip.com.au>
898
899 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
900 the basic scm_get_stack_base. As advised by Nils Durner.
901
902 * threads.c (get_thread_stack_base): Add a version using
903 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
904 As advised by Heikki Lindholm.
905
906 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
907 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
908 Durner.
909
9102006-12-24 Kevin Ryde <user42@zip.com.au>
911
912 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
913 error if pid is not our own process, instead of silently doing nothing.
914
915 * print.c (scm_write, scm_display, scm_write_char): Disable port close
916 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
917 check in configure.in unintentionally enabled it. Believe that
918 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
919 can leave errno in that state. popen.test "no duplicates" output test
920 provoked that.
921
e2bf3b19
HWN
9222006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
923
924 * numbers.c (scm_i_fraction_reduce): move logic into
925 scm_i_make_ratio(), so fractions are only read.
926 scm_i_fraction_reduce() modifies a fraction when reading it. A
927 race condition might lead to fractions being corrupted by reading
928 them concurrently.
929
930 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
931 comparisons between reduced and unreduced fractions go wrong.
241d9cea 932
e2bf3b19
HWN
933 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
934 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
935 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
936 SCM_FRACTION_REDUCED.
937
23d72566
KR
9382006-12-16 Kevin Ryde <user42@zip.com.au>
939
940 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
941 more direct for a procedure called raise.
942 (kill): Remove mingw fake fallback.
943
9442006-12-15 Kevin Ryde <user42@zip.com.au>
945
946 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
947 _pipe on mingw.
948
9492006-12-14 Kevin Ryde <user42@zip.com.au>
950
951 * threads.c (thread_print): Cope with the case where pthread_t is a
952 struct, as found on mingw. Can't just cast to size_t for printing.
953 Reported by Nils Durner.
954
955 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
956 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
957
9582006-12-13 Kevin Ryde <user42@zip.com.au>
959
960 * eval.c (scm_m_define): Set 'name procedure property on any
961 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
962 procedures with setters as used in srfi-17.
963
964 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
965 linux man page says is a possibility.
966
f30e1bdf
LC
9672006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
968
969 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
42ddb3cb 970 instead of RES (reported by Szavai Gyula). This allows the use of
f30e1bdf
LC
971 negative lower bounds.
972 (scm_i_read_array): Make sure LEN is non-negative (reported by
42ddb3cb 973 Szavai Gyula).
f30e1bdf
LC
974
975 (scm_array_in_bounds_p): Iterate over S instead of always
976 comparing indices with the bounds of S[0]. This fixes
977 `array-in-bounds?' for arrays with a rank greater than one and
978 with different lower bounds for each dimension.
979
23d72566
KR
9802006-12-05 Kevin Ryde <user42@zip.com.au>
981
982 * numbers.c (scm_product): For flonum*inum and complex*inum, return
983 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
984 and as per R5RS section "Exactness".
985
9862006-12-03 Kevin Ryde <user42@zip.com.au>
987
988 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
989 allow $AWK from the environment to override. It had syntax gremlins,
990 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
991 Makefile stopped it having any effect. Use just $(AWK), which can be
992 overridden with "make AWK=xxx" in the usual way if desired.
993
22be72d3
LC
9942006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
995
996 * libguile/vectors.c (scm_vector_to_list): Fixed list
997 construction: elements were not copied when INC is zero (see
998 "shared array" example in `vectors.test'). Reported by
999 Szavai Gyula.
1000
b89c4943
LC
10012006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
1002
1003 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
1004 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
1005 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
1006 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
1007 (DOT_X_FILES): Added `gettext.x'.
1008 (DOT_DOC_FILES): Likewise.
1009 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
1010 (modinclude_HEADERS): Added `gettext.h'.
1011 (EXTRA_DIST): Added `libgettext.h'.
1012
1013 * gettext.h: Renamed to...
1014 * libgettext.h: New file.
1015
1016 * i18n.c: Renamed to...
1017 * gettext.c: New file.
1018
1019 * i18n.h: Renamed to...
1020 * gettext.h: New file.
1021
1022 * i18n.c, i18n.h, locale-categories.h: New files.
1023
1024 * init.c: Include "libguile/gettext.h" instead of
1025 "libguile/i18n.h".
1026 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
1027 `scm_init_i18n ()'.
1028
1029 * posix.c: Include "libguile/gettext.h" instead of
1030 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
1031 (USE_GNU_LOCALE_API): New macro.
1032 (scm_i_locale_mutex): New variable.
1033 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
1034
1035 * posix.h: Include "libguile/threads.h".
1036 (scm_i_locale_mutex): New declaration.
1037
f3e3f530
NJ
10382006-11-17 Neil Jerram <neil@ossau.uklinux.net>
1039
1040 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
1041
d9f71a07 10422006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
241d9cea 1043
d9f71a07
LC
1044 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
1045 "sweep_stats" arguments; use them instead of accessing the global
1046 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
1047
1048 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
1049 before each iteration of the loop.
1050 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
1051 (scm_i_get_new_heap_segment): Take an additional argument
1052 SWEEP_STATS. Compute MIN_CELLS as a function of it.
1053
1054 * libguile/gc.c (scm_gc_cells_collected,
1055 scm_gc_cells_collected_1): Removed.
1056 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
1057 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
1058 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
1059 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
1060 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
1061 `scm_gc_cells_(collected|swept)'.
1062 (gc_update_stats): New.
1063 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
1064 `scm_i_gc_sweep_stats_1' instead of the former globals.
1065 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
1066 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
1067 would keep allocating new segments instead of re-using collected
1068 cells (because `scm_gc_cells_collected' would remain zero).
1069
1070 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
1071 scm_gc_cell_yield_percentage): Removed.
1072
1073 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
1074 (scm_i_adjust_min_yield): Updated.
1075 (scm_i_get_new_heap_segment): Updated.
1076
dd18d312
NJ
10772006-11-02 Neil Jerram <neil@ossau.uklinux.net>
1078
1079 * modules.c: Correct comment saying that low-level environments
1080 will be used "in the next release".
1081
1082 * init.c: Comment out #include of environments.h.
1083 (scm_i_init_guile): Comment out scm_environments_prehistory() and
1084 scm_init_environments() calls.
1085
1086 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
1087 (DOT_X_FILES): Remove environments.x.
1088 (DOT_DOC_FILES): Remove environments.doc.
1089 (modinclude_HEADERS): Remove environments.h.
1090
9a5fa6e9
NJ
10912006-10-25 Neil Jerram <neil@ossau.uklinux.net>
1092
1093 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
241d9cea 1094
9a5fa6e9
NJ
1095 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
1096 scm_ia64_register_backing_store_base() instead of Linux-specific
1097 implementations.
1098
1099 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
1100 New declarations.
1101
1102 * gc.c (__libc_ia64_register_backing_store_base): Declaration
1103 removed.
1104 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
1105 implementations for Linux and HP-UX.
1106
1107 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
1108 and scm_ia64_register_backing_store_base() instead of
1109 Linux-specific implementations.
1110
1111 * continuations.h (__libc_ia64_register_backing_store_base):
1112 Declaration removed.
1113 (scm_t_contregs): New "fresh" field.
1114
1115 * continuations.c (ia64_getcontext): Removed.
1116 (scm_make_continuation): Use continuation fresh field instead of
1117 interpreting getcontext return values (which isn't portable). Use
1118 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
1119 instead of Linux-specific implementations.
1120 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
1121 instead of Linux-specific implementation.
1122
1123 * _scm.h (__ia64__): Also detect __ia64.
1124
8ab3d8a0
KR
11252006-10-03 Kevin Ryde <user42@zip.com.au>
1126
1127 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
1128 arguments or 3 or more arguments. Previously 0 called proc with
1129 SCM_UNDEFINED, and 3 or more silently used just the first 2.
1130
11312006-09-28 Kevin Ryde <user42@zip.com.au>
1132
1133 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
1134 for chsize fallback, instead of hard-coding mingw. Mingw in fact
1135 supplies ftruncate itself these days.
1136
1137 * ports.c (fcntl.h): Can include this unconditionally, no need for
1138 __MINGW32__.
1139
1140 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
1141 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
1142 "off_t" for parameters, per usual definition of this function, rather
1143 than "char *" and "int". Use ftruncate instead of chsize. Check for
1144 error on final close.
1145
11462006-09-27 Kevin Ryde <user42@zip.com.au>
1147
1148 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
1149 in mingw.
1150
1151 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
1152 const *" for mingw to suppress warnings from gcc (which are errors
1153 under the configure default -Werror). Reported by Nils Durner.
1154
11552006-09-26 Kevin Ryde <user42@zip.com.au>
1156
1157 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
1158 * fports.c (scm_open_file): Use open_or_open64.
1159 (fport_seek_or_seek64): New function, adapting fport_seek.
1160 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
1161 functions.
1162 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
1163 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
1164
1165 * ports.c (scm_truncate_file): Update docstring per manual.
1166
11672006-09-23 Kevin Ryde <user42@zip.com.au>
1168
1169 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
1170 functions.
1171
9a5fa6e9 11722006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
a17d2654
LC
1173
1174 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
1175 (make_predset, define_predset, make_strset, define_strset, false,
1176 true): Removed.
1177 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
1178 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
1179 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
1180 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
1181 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
1182 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
1183 (define_charset, scm_srfi_14_compute_char_sets): New functions.
1184 (scm_init_srfi_14): Use `define_charset ()' instead of
1185 `define_predset ()' and `define_strset ()'.
1186
1187 * srfi-14.h (scm_c_init_srfi_14): Removed.
1188 (scm_srfi_14_compute_char_sets): New declaration.
1189
1190 * posix.h: Include "srfi-14.h".
1191 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
1192 successful `setlocale ()' call.
1193
8ab3d8a0
KR
11942006-09-08 Kevin Ryde <user42@zip.com.au>
1195
1196 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
1197 (scm_recvfrom): Update docstring from manual.
1198
418122ce
RB
11992006-08-31 Rob Browning <rlb@defaultvalue.org>
1200
1201 * ports.c (scm_c_port_for_each): Add a
1202 scm_remember_upto_here_1(ports) at the end of the function to fix
1203 a GC bug.
1204
b5944f66
NJ
12052006-08-28 Neil Jerram <neil@ossau.uklinux.net>
1206
1207 * backtrace.c (scm_display_backtrace_with_highlights): Minor
1208 improvements to docstring.
1209 (scm_backtrace_with_highlights): Analogous improvements.
1210
8ab3d8a0
KR
12112006-08-12 Kevin Ryde <user42@zip.com.au>
1212
1213 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
1214 New, set from configure.
1215 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
1216 to scmconfig.h.
1217 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
1218 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
1219 Reported by Claes Wallin.
1220
b0b0deff
NJ
12212006-08-11 Neil Jerram <neil@ossau.uklinux.net>
1222
1223 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
1224 frame, not a stack).
1225
8ab3d8a0
KR
12262006-07-25 Kevin Ryde <user42@zip.com.au>
1227
1228 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
1229 on pthreads version, since pthread_getattr_np not available on solaris
1230 and macos. Reported by Claes Wallin.
1231
12322006-07-24 Kevin Ryde <user42@zip.com.au>
1233
1234 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
1235 it's a macro on MacOS X. Reported by Claes Wallin.
1236
1237 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
1238 for the benefit of Solaris 10. Reported by Claes Wallin.
1239
1240 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
1241 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
1242
12432006-07-21 Kevin Ryde <user42@zip.com.au>
1244
1245 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
1246 autoconf recommendation. Should fix Solaris 10 reported by Claes
1247 Wallin.
1248
1249 * threads.c: Include <string.h>, needed for memset() which is used by
1250 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
1251
b4912378
RB
12522006-07-18 Rob Browning <rlb@defaultvalue.org>
1253
1254 * continuations.c: Add __attribute__ ((returns_twice)) to the
1255 ia64_getcontext prototype so that gcc will make the right
1256 arrangements and avoid an illegal instruction during
1257 call-with-current-continuation.
1258
9a5fa6e9 12592006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
eaa94eaa
LC
1260
1261 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
1262 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
1263
8ab3d8a0
KR
12642006-07-08 Kevin Ryde <user42@zip.com.au>
1265
1266 * environments.c (core_environments_unobserve): Use if/else rather
1267 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
1268 about them not being rvalues. Reported by Mike Gran.
1269
1270 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
1271 portable and in particular fails on OpenBSD and AIX (see autoconf
1272 manual too). Reported by Mike Gran.
1273
12742006-06-25 Kevin Ryde <user42@zip.com.au>
1275
1276 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
1277 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
1278 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
1279 HAVE_TM_ZONE.
1280 (scm_strptime): Use tm_gmtoff from the strptime result when that field
1281 exists, it's set by glibc strptime "%s".
241d9cea 1282
9a5fa6e9 12832006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
d15ad007
LC
1284
1285 * eq.c: Include "struct.h", "goops.h" and "objects.h".
1286 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
1287 are not GOOPS instances.
1288 * struct.c: Include "eq.h".
1289 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
1290 hand-written code.
1291 (scm_i_struct_equalp): New.
1292 * struct.h (scm_i_struct_equalp): New declaration.
1293
c862d0e0
KR
12942006-06-06 Kevin Ryde <user42@zip.com.au>
1295
1296 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
1297 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
1298 reported by Mattias Holm.
b4912378 1299
c862d0e0
KR
13002006-06-03 Kevin Ryde <user42@zip.com.au>
1301
1302 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
1303 unused variable warning when elisp disabled. Reported by Ryan
1304 VanderBijl.
1305
1306 * throw.c (scm_handle_by_message): Add dummy return value to avoid
1307 compiler warning on cygwin. Reported by Ryan VanderBijl.
241d9cea 1308
c862d0e0
KR
1309 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
1310 duplicate of EXTRA_DOT_DOC_FILES.
1311 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
1312 Add scmconfig.h to dependencies, since these all run cpp. Helps a
1313 parallel "make -j2". Reported by Mattias Holm.
1314
13152006-05-30 Kevin Ryde <user42@zip.com.au>
1316
1317 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
1318 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
1319 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
1320 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
1321 port type descriptor, same as scm_make_port_type return value.
1322
af4f8612
MV
13232006-05-30 Marius Vollmer <mvo@zagadka.de>
1324
1325 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
1326 of the arguments is a array. This allows vectors to be equal to
1327 one-dimensional arrays.
1328
18bffcd0
MV
13292006-05-29 Marius Vollmer <mvo@zagadka.de>
1330
1331 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
1332 that we have a pair before accessing its cdr. Thanks to Bill
1333 Schottstaedt!
1334
c862d0e0
KR
13352006-05-28 Kevin Ryde <user42@zip.com.au>
1336
1337 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
1338 by "The Senator".
1339
13402006-05-27 Marius Vollmer <mvo@zagadka.de>
b0c0a310
MV
1341
1342 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
1343 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
1344
c862d0e0
KR
13452006-05-26 Kevin Ryde <user42@zip.com.au>
1346
1347 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
1348 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
1349 Reported by "The Senator".
1350 For select and ioctl, move fdes into those conditionals, to avoid
1351 unused variable warning when neither of those used.
1352
13532006-05-23 Kevin Ryde <user42@zip.com.au>
1354
1355 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
1356 It's unused and will be in stdio.h anyway (if it's anywhere).
1357
13582006-05-20 Kevin Ryde <user42@zip.com.au>
1359
1360 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
1361 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
1362
1363 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
1364 symlink). Probably can't create symlinks with mknod anyway though.
1365
1366 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
1367 generation.
1368
13692006-05-15 Kevin Ryde <user42@zip.com.au>
1370
1371 * simpos.c, simpos.h (scm_primitive__exit): New function.
1372 (scm_primitive_exit): Update docstring, no longer the best exit after
1373 a fork.
1374
13752006-05-09 Kevin Ryde <user42@zip.com.au>
1376
1377 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
1378 rather than converting to doubles, to avoid inf or nan when the inputs
1379 are too big for a double but the quotient does fit. This affects
1380 conversions exact->inexact of big fractions.
1381
1382 * filesys.c (scm_open_fdes): Use open64.
1383 (scm_init_filesys): Add O_LARGEFILE.
1384
1385 * ports.c (scm_seek): Use lseek64.
1386 (scm_truncate_file): Use ftruncate64.
1387
4a342b19
MV
13882006-05-08 Marius Vollmer <mvo@zagadka.de>
1389
1390 * private-gc.h (CELL_P): Also check that the potential pointer is
1391 correctly aligned for a cell. Thanks to Miroslav Lichvar!
1392
c862d0e0
KR
13932006-04-18 Rob Browning <rlb@defaultvalue.org>
1394
1395 * _scm.h: Add back error if the size of off_t is unknown. The bug
1396 was actually in guile-readline's configuration.
1397
13982006-04-18 Kevin Ryde <user42@zip.com.au>
1399
1400 * posix.c (scm_mkstemp): Update docstring from the manual, in
1401 particular file mode 0600 is not guaranteed.
1402
281ab5e2
KR
14032006-04-17 Kevin Ryde <user42@zip.com.au>
1404
1405 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
1406 size, to help the guile-readline build where off_t is unused.
1407
2b829bbb
KR
14082006-04-16 Kevin Ryde <user42@zip.com.au>
1409
1410 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
1411 (scm_readdir): Use readdir64.
1412 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
1413 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
1414 and ftruncate take off_t not size_t.
1415 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
1416 available.
1417
14182006-04-06 Kevin Ryde <user42@zip.com.au>
1419
1420 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
9a5fa6e9 1421 instead of toggling it. Reported by Ludovic Courtès.
241d9cea 1422
2b829bbb
KR
14232006-03-26 Marius Vollmer <mvo@zagadka.de>
1424
1425 * threads.c (get_thread_stack_base): Use scm_get_stack_base
1426 instead of accessing __libc_stack_end directly, and only do this
1427 when pthread_attr_getstack is known not to work for the main
1428 thread or when not using pthreads at all.
1429
1430 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
1431 unknown instead of returning NULL.
1432
9a5fa6e9 14332006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1434
1435 * numbers.c (scm_i_mem2number): Renamed to
1436 scm_c_locale_stringn_to_number.
1437 * numbers.c, print.c, read.c: Updated callers.
1438 * numbers.h: Update function declaration.
1439
14402006-03-11 Neil Jerram <neil@ossau.uklinux.net>
1441
1442 * unif.c (string_set): Don't return in a void function. (Reported
1443 by Mike Gran.)
1444
1445 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
1446 rather than void*, so we can do pointer arithmetic on it.
1447 (Reported by Mike Gran.)
1448 (s_scm_uniform_vector_write): Ditto.
1449
14502006-03-10 Neil Jerram <neil@ossau.uklinux.net>
1451
1452 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
1453 oldra is not an array. (Reported by Steve Juranich.)
1454
1455 * threads.c (do_unlock): Renamed from "unlock", which is defined
1456 in unistd.h on QNX. (Reported by Matt Kraai.)
1457
14582006-03-04 Kevin Ryde <user42@zip.com.au>
1459
1460 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
1461 not SCM_CRITICAL_SECTION_START.
1462
1463 * eval.c, posix.c: Change comments from C++ to C style. Reported by
1464 Mike Gran.
1465
14662006-02-28 Kevin Ryde <user42@zip.com.au>
1467
1468 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
1469
14702006-02-26 Kevin Ryde <user42@zip.com.au>
1471
1472 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
1473 NAME_MAX is not available, which is so on Solaris 10. Report and help
1474 by Bill Schottstaedt.
1475
1476 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
1477 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
1478 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
1479 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
1480 use "unsigned char", not signed char. This ensures comparisons are
1481 the same as `char<?' etc, and is also the same as guile 1.6 did.
1482 Reported by Sven Hartrumpf.
1483
4a9f83ff
MD
14842006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
1485
1486 * random.c: Test for SCM_HAVE_T_UINT64 instead of
1487 SCM_HAVE_T_INT64.
1488 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
1489 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
1490 scm_t_int32.
1491
29d8c124 14922006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
4c7016dc
HWN
1493
1494 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
1495 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
1496 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
1497 Take into account SEG->SPAN when computing CELLS_SWEPT.
1498 (scm_i_sweep_segment): Take one more argument, similarly.
1499 (scm_i_sweep_all_segments): Likewise.
1500 (scm_i_sweep_some_segments): Likewise.
1501 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
1502 refer to SCM_GC_CELLS_COLLECTED.
1503
1504 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
1505 argument, an `scm_i_sweep_statistics' object.
1506 Change the way DELTA is collected: don't take into account
1507 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
1508
1509 * gc-malloc.c (scm_realloc): Pass an extra argument
1510 to `scm_i_sweep_all_segments ()'.
1511
1512 * gc.c (gc_start_stats): Updated accordingly.
1513 (gc_end_stats): Take an additional SWEEP_STATS argument.
1514 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
1515 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
1516 Decrement SCM_CELLS_ALLOCATED.
1517 (scm_i_gc): Likewise.
1518
1519 * private-gc.h (scm_i_sweep_*): Updated function
1520 prototypes accordingly.
1521 (scm_t_sweep_statistics): New type.
1522 (scm_i_sweep_statistics_init): New macro.
1523 (scm_i_sweep_statistics_sum): New macro
1524
9a5fa6e9 15252006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1526
1527 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
1528 LEN. Without this, too much collectable memory gets unregistered,
1529 which results in an underflow of SCM_MALLOCATED in
1530 `decrease_mtrigger()'.
1531
1532 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
1533 equal to SCM_MALLOCATED.
1534
15352006-02-13 Marius Vollmer <mvo@zagadka.de>
1536
1537 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
1538 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
1539 configured --without-threads.
1540 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
1541
1aaa1c17
MV
15422006-02-12 Marius Vollmer <mvo@zagadka.de>
1543
1544 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
1545 filling when the fill parameter is omitted, as documented, but
1546 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
1547 can not store characters.
1548
d7c6575f
NJ
15492006-02-09 Neil Jerram <neil@ossau.uklinux.net>
1550
1551 * socket.c (scm_c_make_socket_address): Pass address_size pointer
1552 on to scm_fill_sockaddr call.
1553
43e01b1e
NJ
15542006-02-04 Neil Jerram <neil@ossau.uklinux.net>
1555
1556 * throw.h (scm_c_catch, scm_c_with_throw_handler,
1557 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
1558
1559 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
1560 (struct pre_unwind_data): New, replaces struct lazy_catch.
1561 (scm_c_catch): New, replaces scm_internal_catch as the primary
1562 catch API for C code; adds pre-unwind handler support.
1563 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
1564 compatibility.
1565 (tc16_pre_unwind_data, pre_unwind_data_print,
1566 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
1567 "lazy_catch" equivalents.
1568 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
1569 as the primary C API for a "lazy" catch.
1570 (scm_internal_lazy_catch): Now just a wrapper for
1571 scm_c_with_throw_handler, for back compatibility.
1572 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
1573 pre-unwind handler support.
1574 (scm_catch): Now just a wrapper for
1575 scm_catch_with_pre_unwind_handler, for back compatibility.
1576 (scm_with_throw_handler): New.
1577 (scm_lazy_catch): Update comment to say that the handler can
1578 return, and what happens if it does.
1579 (toggle_pre_unwind_running): New.
1580 (scm_ithrow): When identifying the throw target, take running
1581 flags into account. In general, change naming of things from
1582 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
1583 don't unwind the dynamic context first. Add dynwind framing to
1584 manage the running flag of a throw handler. If a lazy catch or
1585 throw handler returns, rethrow the same exception again. Add
1586 pre-unwind support to the normal catch case (SCM_JMPBUFP).
1587
1588 * root.c (scm_internal_cwdr): Add NULL args to
1589 scm_i_with_continuation_barrier call.
1590
1591 * dynwind.c: Change comment mentioning lazy-catch to mention
1592 pre-unwind data and throw handler also.
1593
1594 * continuations.h (scm_i_with_continuation_barrier): Add
1595 pre-unwind handler args.
1596
1597 * continuations.c (scm_i_with_continuation_barrier): Add
1598 pre-unwind handler args, and pass on to scm_c_catch (changed from
1599 scm_internal_catch).
1600 (c_handler): Remove scm_handle_by_message_noexit call.
1601 (scm_c_with_continuation_barrier): Call
1602 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1603 as the pre-unwind handler.
1604 (scm_handler): Remove scm_handle_by_message_noexit call.
1605 (s_scm_with_continuation_barrier): Call
1606 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1607 as the pre-unwind handler.
1608
2b829bbb
KR
16092006-02-04 Kevin Ryde <user42@zip.com.au>
1610
1611 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
1612
72098928
KR
16132006-02-03 Kevin Ryde <user42@zip.com.au>
1614
1615 * list.c, list.h (scm_list): Restore this function for use from C.
1616 It's a complete no-op but in theory might used by someone.
1617
aa092c5d
MV
16182006-01-30 Marius Vollmer <mvo@zagadka.de>
1619
1620 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
1621 so that it gets unlocked in all cases.
1622 (SCM_APPLY, CEVAL): Likewise.
1623
661ae7ab
MV
16242006-01-29 Marius Vollmer <mvo@zagadka.de>
1625
ee51ba31
MV
1626 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
1627 scm_is_typed_array instead.
1628
661ae7ab
MV
1629 Renamed the "frames" that are related to dynamic-wind to "dynamic
1630 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
1631 Updated documentation.
1632
99e370f6
MV
1633 Disabled "futures":
1634
1635 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
1636 * eval.c, init.c: Comment out all 'future' related things.
1637
15ccf10b
MV
16382006-01-28 Marius Vollmer <mvo@zagadka.de>
1639
1640 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
1641 to inline.h to make it inline.
1642
9a5fa6e9 16432005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
fd0a5bbc
HWN
1644
1645 * strings.c (scm_i_take_stringbufn): New.
1646 (scm_i_c_take_symbol): New.
1647 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
1648
1649 * strings.h (scm_i_c_take_symbol): New.
1650 (scm_i_take_stringbufn): New.
1651
1652 * symbols.c (lookup_interned_symbol): New function.
1653 (scm_i_c_mem2symbol): New function.
1654 (scm_i_mem2symbol): Use `lookup_symbol ()'.
1655 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
1656 creating a new Scheme string.
1657 (scm_from_locale_symboln): Likewise.
1658 (scm_take_locale_symbol): New.
1659 (scm_take_locale_symboln): New.
1660
1661 * symbols.h (scm_take_locale_symbol): New.
1662 (scm_take_locale_symboln): New.
1663
2ca2ffe6
HWN
16642006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1665
1666 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
1667 free_count.
1668
c255614e
HWN
16692005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
1670
1671 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
1672 upon error
1673
29295b0c
NJ
16742005-12-29 Neil Jerram <neil@ossau.uklinux.net>
1675
9a5fa6e9 1676 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
29295b0c
NJ
1677 the GC when allocated_fluids_len is zero.
1678
2824f4dc
NJ
16792005-12-14 Neil Jerram <neil@ossau.uklinux.net>
1680
ec3a8ace
NJ
1681 * load.c (the_reader, the_reader_fluid_num): New.
1682 (scm_primitive_load): Support custom reader.
1683 (scm_init_load): Init the_reader and the_reader_fluid_num; export
1684 the_reader as `current-reader'.
1685
2824f4dc
NJ
1686 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
1687 (rather than an uninitialized pointer on the stack).
1688
d9c36d2a
MV
16892005-12-07 Marius Vollmer <mvo@zagadka.de>
1690
6a88895b 1691 Reported by Bruce Korb:
241d9cea 1692
6a88895b
MV
1693 * init.c (invoke_main_func): Don't call exit here. Throws that
1694 are only caught by scm_with_guile will bypass us and would cause
1695 scm_boot_guile to return erroneously.
1696 (scm_boot_guile): Expect scm_with_guile to return and call exit
1697 here, passing it an appropriate exit code.
1698
1699 From Andy Wingo:
241d9cea 1700
d9c36d2a
MV
1701 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1702 unsigned char cast to an int, or -1 for EOS.
241d9cea 1703
b54df254
MV
17042005-12-06 Marius Vollmer <mvo@zagadka.de>
1705
08f489c9
MV
1706 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1707 non-const.
9a5fa6e9 1708 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
241d9cea 1709
b54df254
MV
1710 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1711 scm_enter_guile): Removed from public API. See comment at
1712 scm_without_guile for the rationale.
1713
1714 * scmsigs.c (read_without_guile): New.
1715 (signal_delivery_thread): Use it instead of
1716 scm_leave_guile/read/scm_enter_guile.
1717
9d9ce2b5
MV
1718 From Stephen Compall:
1719
1720 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1721 (CEVAL): Evaluate SRFI 61 cond clauses.
1722
9a5fa6e9 17232005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
9fb5c8f9
NJ
1724
1725 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1726 This was typically hit when running `gc-live-object-stats' right
1727 after starting Guile.
1728
efeac8ae
KR
17292005-11-30 Kevin Ryde <user42@zip.com.au>
1730
1731 * srfi-13.c (scm_string_append_shared): No copying if just one
1732 non-empty string in args.
1733
606183ba
KR
17342005-11-26 Kevin Ryde <user42@zip.com.au>
1735
1736 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
9a5fa6e9 1737 by Ludovic Courtès.
606183ba
KR
1738
1739 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1740 "register".
1741
1742 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1743 scm_malloc returning NULL, it never does that.
1744 * putenv.c (putenv): Likewise.
1745
1746 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1747 much too big to want to inline.
1748
9a5fa6e9 17492005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
dbb5de29
NJ
1750
1751 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1752 the value at its top. This fixes a reference leak.
1753 (PUSH_REF): Perform `pstate->top++' after calling
1754 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1755 effects.
1756
9a5fa6e9 17572005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
3f98874a
NJ
1758
1759 * gc.c (scm_weak_vectors): Removed.
1760
f07d2b20
KR
17612005-11-12 Kevin Ryde <user42@zip.com.au>
1762
1763 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
9a5fa6e9 1764 by Ludovic Courtès.
f07d2b20 1765
bedd3f5f
MV
17662005-11-07 Marius Vollmer <mvo@zagadka.de>
1767
1768 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1769 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1770 section might exit non-locally.
1771
7c9c0169
NJ
17722005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1773
1774 * eval.c (sym_instead): New symbol.
1775 (ENTER_APPLY): Remove optional use of a continuation when making
1776 trap call.
1777 (scm_debug_opts): Change doc for 'cheap option to make clear that
1778 it is now obsolete.
1779 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1780 making trap calls, and implement substitution of eval expressions
1781 and return values using the values that the trap call handlers
1782 return.
1783
1784 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1785
9a5fa6e9 17862005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
64cdbfc7
KR
1787
1788 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1789 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1790 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1791 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1792 scm_c_make_socket_address): New functions.
1793 * socket.h: Add prototypes.
1794
fc9f596c
KR
17952005-10-24 Kevin Ryde <user42@zip.com.au>
1796
1797 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1798 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1799 POSIX spec examples, the latter are not available on for instance
1800 NetBSD.
1801
1802 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1803 posix.texi.
1804
1805 * stime.c (scm_strftime): Update docstring from posix.texi.
1806
0460c6e1
MV
18072005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1808
1809 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
241d9cea 1810
0460c6e1
MV
1811 * null-threads.h, pthread-threads.h
1812 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1813 (scm_i_pthread_mutexattr_recursive): New.
1814
1815 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1816 (scm_i_critical_section_mutex): Do not initialize statically.
1817 (scm_threads_prehistory): Initialize
1818 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1819 here.
241d9cea 1820
0460c6e1
MV
1821 * eval.c (source_mutex): Do not initialiaze statically.
1822 (scm_init_eval): Do it here, using
1823 scm_i_pthread_mutexattr_recursive.
1824
7b4a9e52
MV
18252005-09-05 Marius Vollmer <mvo@zagadka.de>
1826
1827 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1828 New.
1829 (sym_reader): New.
1830 (scm_print_opts): Added "quote-keywordish-symbols" option.
1831 (quote_keywordish_symbol): New, for evaluating the option.
1832 (scm_print_symbol_name): Use it.
1833 (scm_init_print): Initialize new option to sym_reader.
241d9cea 1834
5defc05d
NJ
18352005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1836
1837 * eval.c (eval_letrec_inits): New.
1838 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1839
036482e9
MV
18402005-08-12 Marius Vollmer <mvo@zagadka.de>
1841
1842 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1843 Peter Gavin!
1844
5c347f8c
KR
18452005-08-12 Kevin Ryde <user42@zip.com.au>
1846
1847 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1848
bc721aa2
KR
18492005-08-06 Kevin Ryde <user42@zip.com.au>
1850
1851 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1852 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1853 scm_string_index, scm_string_index_right, scm_string_skip,
1854 scm_string_skip_right, scm_string_count, scm_string_map,
1855 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1856 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1857 procedures called in loops.
1858
126c81db
KR
18592005-08-02 Kevin Ryde <user42@zip.com.au>
1860
1861 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1862 avoid lots of copying where previoulsy growing by only 80 bytes at a
1863 time.
1864
7f278dc6
MV
18652005-08-01 Marius Vollmer <mvo@zagadka.de>
1866
1867 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1868 already have scm_lookup_closure_module, which does the same thing.
241d9cea 1869
cb5c4b07
MV
18702005-08-01 Marius Vollmer <mvo@zagadka.de>
1871
1872 New marking algorithm for weak hashtables that fixes the problem
1873 that references from the non-weak value to the associated weak
1874 key (for example) would prevent the entry from ever being dropped.
1875
1876 Guardians have been changed back to their original semantics and
1877 are no longer greedy and no longer drop cycles.
241d9cea 1878
cb5c4b07
MV
1879 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1880 hashtable and guardian machinery but call the relevant functions
1881 directly.
1882
1883 * guardians.h, guardians.c, deprecated.h,
1884 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1885 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1886 Deprecated and moved into deprecated.[ch].
1887
1888 * guardians.h, guardians.c: Mostly rewritten.
1889 (scm_i_init_guardians_for_gc,
1890 scm_i_identify_inaccessible_guardeds,
1891 scm_i_mark_inaccessible_guardeds): New.
930888e8 1892 (scm_make_guardian): Removed greedy_p argument.
241d9cea 1893
cb5c4b07
MV
1894 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1895 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1896 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1897 (scm_weaks_prehistory): Removed.
1898 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1899 scm_i_mark_weak_vectors_non_weaks,
1900 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1901 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1902 scm_scan_weak_vectors): Removed.
241d9cea 1903
cb5c4b07
MV
1904 * hashtab.h (scm_i_scan_weak_hashtables): New.
1905 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1906 SCM_WVECTF_NOSCAN.
1907 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1908 t->n_items.
1909 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1910 to latter. Do not scan the alists themselves, this is done by the
1911 weak vector code now. Just update the element count.
1912
1913 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1914 to latter. The type is now only part of the cell word.
1915 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1916
1917 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1918
3e2073bd
MD
19192005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1920
1921 Some changes towards making it possible to run Guile on the EM64T
1922 platform.
1923
1924 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1925 mallocating for (unsigned long *bounds).
1926
1927 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1928 scm_t_bits before storing them in the type word.
241d9cea 1929
3e2073bd
MD
1930 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1931 scm_t_bits to int.
1932
e8ac8e75
KR
19332005-07-12 Kevin Ryde <user42@zip.com.au>
1934
1935 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1936 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1937 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1938 than scm_makfrom0str.
1939 Reported by Ken Raeburn.
241d9cea 1940
e8ac8e75
KR
1941 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1942 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1943 returning SCM_GC_CARD_BVEC.
241d9cea 1944
e8ac8e75
KR
1945 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1946 rather than latin-1 acute accent, the latter may not print on all
1947 terminals.
1948
1949 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1950 trailing deletions, so as to return a substring if those are the only
1951 changes.
1952
adc0677d
KR
19532005-07-10 Kevin Ryde <user42@zip.com.au>
1954
1955 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1956 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1957 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1958 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1959
8fecbb19
HWN
19602005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1961
1962 * gc-card.c (scm_i_card_statistics): init tag.
1963
1964 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1965
fc9c5d06
HWN
19662005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1967
8fecbb19
HWN
1968 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1969 string.
fc9c5d06 1970
08fce816
KR
19712005-06-25 Kevin Ryde <user42@zip.com.au>
1972
1973 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1974 last change, use plain copy-on-write substrings, the individual
1975 descriptions in the srfi don't mention shared storage (only the
1976 introduction does).
1977
1978 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1979 null-terminator, rather than mallocing a whole new block.
1980 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1981
fc4abd0e
MV
19822005-06-12 Marius Vollmer <mvo@zagadka.de>
1983
e3da8a30
MV
1984 * ramap.c (scm_array_index_map_x): First test for real arrays,
1985 then check for generalized vectors. This ensures that the
1986 generalized vector case need only work with zero-origin ranges.
12097c77
MV
1987 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1988 to access the target array, making these functions work with all
1989 kinds of arrays, not just bit arrays.
e3da8a30 1990
fc4abd0e
MV
1991 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1992 gh_list.c, gh_predicates.c: Deprecated everything.
1993
1994 * environments.c (environment_default_folder,
1995 environment_default_observer): Do not use gh_call3, gh_call1.
1996
e4da0740
HWN
19972005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1998
1999 * modules.c (s_scm_eval_closure_module): new function. Return the
2000 module inside an eval-closure.
2001
2002 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
2003 table. This means that procedure properties are GC'd if the
2004 procedure dies.
2005
27667158
KR
20062005-06-11 Kevin Ryde <user42@zip.com.au>
2007
2008 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
2009 charset cases, count chars kept and build a string in a second pass,
2010 rather than using a cons cell for every char kept. Use a shared
2011 substring when nothing removed (such sharing is allowed by the srfi).
2012
8a00ba71
HWN
20132005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
2014
2015 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
241d9cea 2016 string, so live object stats can be sorted with string<?.
8a00ba71 2017
a677679f
MV
20182005-06-06 Marius Vollmer <mvo@zagadka.de>
2019
2ff668b0
MV
2020 * print.c (iprin1): When writing a string, collect all characters
2021 that can be printed directly into one call to scm_lfwrite.
2022 Previously, every character was output with its own call to
2023 write(2) on unbuffered ports.
2024
589f22f6
MV
2025 * eval.c (scm_eval_options_interface): Use
2026 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
2027 and SCM_CRITICAL_SECTION_END.
2028
a677679f
MV
2029 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
2030 check for generalized vectors. This ensures that the generalized
2031 vector case need only work with zero-origin ranges.
2032
f8cda9ee
KR
20332005-06-06 Kevin Ryde <user42@zip.com.au>
2034
2035 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
2036 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
2037 matched.
2038
cdac1be4
MV
20392005-06-05 Marius Vollmer <mvo@zagadka.de>
2040
6642f7ac
MV
2041 * eval.c: Added comment on how to make case 1.1 of
2042 r5rs_pitfall.test succeed.
2043
cdac1be4
MV
2044 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
2045
2046 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
241d9cea 2047
cdac1be4
MV
2048 * socket.c: Remove obsolete comment about socklen_t.
2049 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
241d9cea 2050
cdac1be4 2051 * numbers.h (isnan)[__MINGW32__]: Remove.
241d9cea 2052
cdac1be4
MV
2053 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
2054 DEFAULT_INCLUDES when cross compiling.
241d9cea 2055
cdac1be4
MV
2056 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
2057
a677679f 2058 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
cdac1be4
MV
2059 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
2060 from Jan's patch.)
241d9cea 2061
9e664475
MV
20622005-05-22 Marius Vollmer <mvo@zagadka.de>
2063
188d0c5e
MV
2064 * unif.c (scm_make_shared_array): Add old base to new base since
2065 scm_array_handle_pos does not include the base.
2066 (scm_aind): Likewise.
2067
9e664475
MV
2068 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
2069 output port.
2070
5a6d139b
NJ
20712005-05-12 Neil Jerram <neil@ossau.uklinux.net>
2072
2073 Mac OS X compile warning fixes, reported by Richard Todd.
241d9cea 2074
5a6d139b
NJ
2075 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
2076 that it is signed.
2077
2078 * strports.c (st_resize_port): Add unsigned char cast.
2079 (scm_mkstrport): Make read/write_buf cast unsigned.
2080
2081 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
2082
2083 * rdelim.c (scm_read_line): Initialize slen.
2084
2085 * load.c (scm_search_path): Remove weird >=1, and add
2086 parentheses to clarify conditions.
2087
2088 * hash.c (scm_hasher): Add const unsigned char cast.
2089
2090 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
2091
b01532af
NJ
20922005-05-11 Neil Jerram <neil@ossau.uklinux.net>
2093
9a5fa6e9 2094 Fix C99isms reported by Ludovic Courtès:
241d9cea 2095
b01532af
NJ
2096 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
2097 code.
2098
2099 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
2100 of code.
2101
2102 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
2103 of code.
2104 (scm_i_card_statistics): Add block for declarations of tag_as_scm
2105 and current.
2106
229a0710
NJ
21072005-05-10 Neil Jerram <neil@ossau.uklinux.net>
2108
2109 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
2110 compile warning reported by Werner Scheinast.
2111
645dd3fc
HWN
21122005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
2113
80038021
HWN
2114 * list.h: remove scm_list()
2115
645dd3fc
HWN
2116 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
2117 SCM_DEBUG_CELL_ACCESSES
2118 (FLUID_NEXT_LOC): idem.
2119
9a68a4a8
KR
21202005-04-30 Kevin Ryde <user42@zip.com.au>
2121
2122 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
2123 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
2124 zero when re==0 and im<0. Reported by Jean Crepeau.
2125
0640cdaa
KR
21262005-04-25 Kevin Ryde <user42@zip.com.au>
2127
2128 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
4d54ee35
KR
2129 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
2130 few sensible uses (like filling with a random number generator say),
2131 but has been allowed in the past and so should be kept.
0640cdaa 2132
c0b85e9c
KR
21332005-04-23 Kevin Ryde <user42@zip.com.au>
2134
2135 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
2136 scm_hash_fn_remove_x.
2137
2138 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
2139 the caller when cons* is reached through apply.
2140
2141 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
2142 list is called using apply, under the debugging evaluator.
2143 (scm_list): Remove.
2144
c51682b4
KR
2145 * list.c, list.h (scm_make_list): New code, moving make-list from
2146 boot-9.scm.
8cb2eff8 2147
c0575bde
KR
21482005-04-14 Kevin Ryde <user42@zip.com.au>
2149
2150 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
2151 converted from scheme code in boot-9.scm.
2152
47a298d9
KR
21532005-04-11 Kevin Ryde <user42@zip.com.au>
2154
2155 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
2156 Validate list argument, scm_string_append and scm_string_append_shared
2157 don't do that to their rest argument (in a normal build).
2158
8ea3dc2e
MV
21592005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2160
2161 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
2162 closure can not be stored since it is no longer valid at GC time.
2163 (make_hash_table): Initialize 'hash_fn' field.
2164 (scm_i_rehash): Only store hash_fn in hash table when closre is
2165 NULL.
2166 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
2167 non-NULL. Always use a NULL closure.
2168 (scm_hash_fn_create_handle_x): Also rehash when table contains too
2169 few entries.
241d9cea 2170
08d2020d
MV
21712005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2172
2173 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
2174 argument; always use scm_delq_x. The delete_fn function works on
2175 the handle, not the key, and it therefore makes no sense to make
2176 it configurable. Changed all callers.
2177 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
2178 (scm_hash_clear): Accept plain vectors as hashtables.
2179 (scm_delx_x): Removed.
241d9cea 2180
cb975c21
HWN
21812005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
2182
2183 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
2184 compatibility with gcc -std=c99.
2185
4c908f2c
MD
21862005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2187
2188 * async.h (scm_mask_ints): Removed left over reference to
2189 scm_root.
2190
2191 * threads.c: Removed fprintf debug statements.
241d9cea 2192
d193b04b
NJ
21932005-03-24 Neil Jerram <neil@ossau.uklinux.net>
2194
2195 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
2196
c29748cd
NJ
21972005-03-23 Neil Jerram <neil@ossau.uklinux.net>
2198
2199 * debug.c (scm_make_memoized): Remove unnecessary critical
2200 section, and simplify by using SCM_RETURN_NEWSMOB.
2201
e654b062
MD
22022005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2203
2204 * strings.h (SCM_STRING_UCHARS): Added missing argument.
2205
4bc6f1c6
KR
22062005-03-18 Kevin Ryde <user42@zip.com.au>
2207
2208 * arbiters.c (FETCH_STORE) [generic C]: Should be
9a5fa6e9 2209 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
4bc6f1c6 2210
f1531813
KR
22112005-03-13 Kevin Ryde <user42@zip.com.au>
2212
2213 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
2214 srfi-60.
2215
2216 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
2217 because OR-ing bits into a negative can reduce the value to an inum.
2218
2219 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
2220 casting inum to double since that can lose precision.
2221
a9fae247
MV
22222005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2223
2224 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
2225 (guilify_self_1): Initialize it.
2226
2227 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
2228 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
2229 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
2230 field.
2231 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
2232 recursively.
2233 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
2234 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
2235 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
2236 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
2237 scm_after_gc_c_hook here.
2238 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
2239 scm_after_gc_c_hook when a full GC has in fact been performed.
2240 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
2241
2242 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
2243 scm_gc_heap_lock.
2244
2245 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
2246 scm_gc_running_p while the scm_i_sweep_mutex is locked.
2247
2248 * inline.h (scm_cell, scm_double_cell): Do not check
2249 scm_gc_running_p, allocation during sweeping is OK.
2250
2251 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
2252 not set scm_block_gc.
2253
2254 * init.c (scm_i_init_guile): Do not set scm_block_gc.
2255
2256 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
2257 instead of scm_malloc. The latter can not be used during GC.
2258
d1c38e11
MV
22592005-03-09 Marius Vollmer <mvo@zagadka.de>
2260
2261 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
2262 years.
2263
99ec43c1
MV
22642005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2265
2266 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
2267 scm_gc_running_p. Sweeping can happen in parallel with
2268 allocation.
2269
2270 * inline.h: Updated comments for current threading implementation.
2271
2272 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
2273 (scm_i_thread): Removed unused signal_asyncs field.
2274 (threads_mark): Do not mark it.
2275 (guilify_self_1): Do not initialize it. Do initialize
2276 continuation_root field.
2277 (do_thread_exit): Do not remove thread from all_threads list.
2278 (on_thread_exit): Do it here, after leaving guile mode.
2279 (sleep_level): Removed.
2280 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
2281 returning. Do not support recursive sleeps.
2282 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
2283 entry. Do not support recursive sleeps.
2284
2285 * fluids.c (ensure_state_size, ensure_all_state_sizes,
2286 resize_all_states): Collapsed ensure_state_size and
2287 ensure_all_state_sizes into one function named resize_all_states.
2288 Allocate new vectors outside of single threaded region. Do only
2289 simple things inside that region.
2290 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
2291 while adding to the global lists.
241d9cea 2292
99ec43c1 2293
461f34aa
MV
22942005-03-08 Marius Vollmer <mvo@zagadka.de>
2295
2296 libltdl is no longer distributed. We expect it to be installed
2297 already.
241d9cea 2298
461f34aa
MV
2299 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
2300 (libguile_la_LIBADD): Removed @LIBLTDL@.
2301
4e047c3e
MV
23022005-03-07 Marius Vollmer <mvo@zagadka.de>
2303
2304 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
2305 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
2306 they also block/unblock execution of asyncs and call
2307 scm_async_click which is declared in async.h but threads.h can not
2308 include async.h since async.h already includes threads.h.
2309 (scm_i_critical_section_level): New, for checking mistakes in the
2310 use of the SCM_CRITICAL_SECTION_* macros.
2311 (scm_i_critical_section_mutex): Make it a recursive mutex so that
2312 critical sections can be nested.
2313
2314 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
2315 not zero.
241d9cea 2316
4e047c3e
MV
2317 * threads.h, threads.c (scm_frame_lock_mutex): New.
2318 (scm_frame_critical_section): Take mutex as argument.
2319 (framed_critical_section_mutex): New, used as default for above.
2320 (scm_init_threads): Initialize it.
2321 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
2322 scm_i_critical_section_mutex; both are initialized statically.
241d9cea 2323
4e047c3e
MV
2324 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
2325 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
b9d9ad3a
MV
2326 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
2327 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
4e047c3e
MV
2328
2329 * debug.c (scm_debug_options): Replace
2330 SCM_CRITICAL_SECTION_START/END with a frame and
2331 scm_frame_critical_section.
2332
2333 * continuations.c (scm_make_continuation): No longer a critical
2334 section.
2335 (scm_dynthrow): Abort when scm_i_critical_section_level is
2336 not zero.
241d9cea 2337
d0a45bff
MV
23382005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2339
db6673e5
MV
2340 * threads.c (scm_try_mutex): Renamed argument for consistency.
2341
d0a45bff
MV
2342 * root.c (scm_call_with_dynamic_root): New docstring.
2343
2344 * eval.c: Define _GNU_SOURCE.
2345
9de87eea
MV
23462005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2347
2348 Big merge from the mvo-thread-cleanup branch. The main changes
2349 are:
241d9cea 2350
9de87eea
MV
2351 - The dynamic roots functionality has been split into dynamic
2352 states and continuations barriers. Fluids have been
2353 reimplemented and can now be garbage collected.
241d9cea 2354
9de87eea
MV
2355 - Initialization of Guile now works in a multi-thread friendly
2356 manner. Threads can freely enter and leave guile mode.
2357
2358 - Blocking on mutexes or condition variables or while selecting
2359 can now be reliably interrupted via system asyncs.
2360
2361 - The low-level threading interface has been removed.
2362
2363 - Signals are delivered via a pipe to a dedicated 'signal delivery
2364 thread'.
241d9cea 2365
9de87eea
MV
2366 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
2367
2368 * throw.c (scm_handle_by_message): Exit only the current thread,
2369 not the whole process.
2370 (scm_handle_by_message_noexit): Exit when catching 'quit.
241d9cea 2371
9de87eea
MV
2372 * scmsigs.c (take_signal, signal_delivery_thread,
2373 start_signal_delivery_thread, ensure_signal_delivery_thread,
2374 install_handler): Reimplemented signal delivery as explained in
2375 the comments.
2376
2377 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
2378 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
2379 scm_i_sched_yield, scm_i_pthread_sigmask,
2380 SCM_I_PTHREAD_MUTEX_INITIALIZER,
2381 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
2382 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
2383 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
2384 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
2385 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
2386 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
2387 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
2388 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
2389 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
2390 scm_i_pthread_key_create, scm_i_pthread_setspecific,
2391 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
2392 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
2393 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
2394 when using pthreads.
2395 * null-threads.c, null-threads.h: Provide dummy definitions for
2396 the above symbols when not using pthreads.
241d9cea 2397
9de87eea
MV
2398 * modules.h, modules.c (scm_frame_current_module): New.
2399
2400 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
2401 instead of scm_internal_dynamic_wind.
2402
2403 * init.h, init.c (restart_stack, start_stack): Removed.
2404 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
2405 (scm_boot_guile_1): Removed.
2406 (scm_i_init_mutex): New.
2407 (really_cleanup_for_exit, cleanup_for_exit): New.
2408 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
2409 Moved around some init funcs. Call
2410 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
2411 with atexit.
241d9cea 2412
9de87eea
MV
2413 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
2414 Use "!scm_is_eq" instead of "!=".
2415
2416 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
2417 SCM_USE_COOP_THREADS): Removed.
2418
2419 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
2420 maintained. Unlock scm_i_sweep_mutex before running
2421 scm_after_gc_c_hook.
2422 (scm_permanent_object): Allocate outside of critical section.
2423 (cleanup): Removed.
241d9cea 2424
9de87eea
MV
2425 * fluids.h, fluids.c: Reimplemented completely.
2426 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
2427 SCM_FAST_FLUID_SET): Reimplemented as functions.
2428 (scm_is_fluid): New.
2429 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
2430 (scm_make_dynamic_state, scm_dynamic_state_p,
2431 scm_is_dynamic_state, scm_current_dynamic_state,
2432 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
2433 scm_c_with_dynamic_state, scm_with_dynamic_state,
2434 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
241d9cea 2435
9de87eea
MV
2436 * feature.c (progargs_fluid): New.
2437 (scm_program_arguments, scm_set_program_arguments): Use it instead
2438 of scm_progargs.
2439 (scm_init_feature): Allocate it. Also, only add "threads" feature
2440 when SCM_USE_PTHREAD_THREADS is true.
241d9cea 2441
9de87eea
MV
2442 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
2443 scm_make_rec_mutex, with all the consequences.
2444 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
2445 scm_internal_dynamic_wind. Handle dynamic states as second
2446 argument.
241d9cea 2447
9de87eea
MV
2448 * threads.h, threads.c (scm_internal_select): Renamed to
2449 scm_std_select and discouraged old name.
2450 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
2451 and scm_std_usleep.
2452 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
2453 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
2454 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
2455 SCM_THREAD_DATA): Removed.
2456 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
2457 (scm_i_thread): New.
2458 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2459 Use scm_assert_smob_type.
2460 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
2461 scm_thread_self, scm_thread_yield, scm_mutex_init,
2462 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
2463 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
2464 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
2465 scm_cond_init, scm_cond_destroy, scm_cond_wait,
2466 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
2467 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
2468 scm_thread_select): Removed. Replaced with scm_i_pthread
2469 functions as appropriate.
2470 (scm_in_guile, scm_outside_guile): Removed.
2471 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
2472 take a ticket.
2473 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
2474 New.
2475 (scm_i_frame_single_threaded): New.
2476 (scm_init_threads_default_dynamic_state): New.
2477 (scm_i_create_thread): Removed.
2478 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
2479 (scm_make_recursive_mutex): New.
2480 (scm_frame_critical_section): New.
2481 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
2482 latter, changed all uses.
2483 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
2484 scm_i_set_last_debug_frame): New, use them instead of scm_root
2485 stuff.
2486 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
2487 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
2488 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
2489 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
2490 (remqueue): Allow the removal of already removed cells. Indicate
2491 whether a real removal has happened.
2492 (scm_thread): Removed, replaced with scm_i_thread.
2493 (make_thread, init_thread_creatant): Removed.
2494 (cur_thread): Removed.
2495 (block_self, unblock_from_queue): New.
2496 (block, timed_block, unblock): Removed.
2497 (guilify_self_1, guilify_self_2, do_thread_exit,
2498 init_thread_key_once, init_thread_key,
2499 scm_i_init_thread_for_guile, get_thread_stack_base,
2500 scm_init_guile): New initialisation method.
2501 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
2502 thread creation.
2503 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
2504 "fair" to fat and implemented new semantics, including reliable
2505 interruption.
2506 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
2507 (scm_threads_mark_stacks): Explicitly mark handle.
2508 (scm_std_select): Allow interruption by also selecting on the
2509 sleep_pipe.
2510 (scm_i_thread_put_to_sleep): Handle recursive requests for
2511 single-threadedness.
2512 (scm_threads_prehistory, scm_init_threads): Put current thread
2513 into guile mode via guileify_self_1 and guileify_self_2,
2514 respectively.
2515
2516 * fluid.h (SCM_FLUIDP): Deprecated.
241d9cea 2517
9de87eea 2518 * coop-threads.c: Removed.
241d9cea 2519
9de87eea
MV
2520 * continuations.h, continuations.c (scm_with_continuation_barrier,
2521 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
2522 New.
2523
2524 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
2525 (async_mutex): New.
2526 (scm_async_click): Protected with async_mutex. Do not deal with
2527 signal_asyncs, which are gone. Set cdr of handled async cell to
2528 #f.
2529 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
2530 current sleep.
2531 (scm_system_async_mark_for_thread): Do not use scm_current_thread
2532 since that might not work during early initialization.
241d9cea 2533
9de87eea
MV
2534 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
2535 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
2536 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
2537 and SCM_CRITICAL_SECTION_END.
2538 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
2539 SCM_CRITICAL_SECTION_START/END.
241d9cea 2540
9de87eea
MV
2541 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
2542 (libguile_la_SOURCES): Added null-threads.c
2543 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
2544 threads-plugin.c.
2545 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
2546
2547 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
2548 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
2549 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
2550 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
2551 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
2552 scm_make_root): Removed or deprecated. Replaced with references
2553 to the current thread, dynamic state, continuation barrier, or
2554 some fluid, as appropriate.
2555 (root_mark, root_print): Removed.
2556 (scm_internal_cwdr): Reimplemented guts with
2557 scm_frame_current_dynamic_state and
2558 scm_i_with_continuation_barrier.
2559 (scm_dynamic_root): Return current continuation barrier.
241d9cea
NJ
2560
2561
ad3d5a65
MV
25622005-02-28 Marius Vollmer <mvo@zagadka.de>
2563
2564 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
2565 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
2566 cleanliness.
2567 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
2568 IP_DROP_MEMBERSHIP.
2569 Thanks to Greg Troxel!
2570
73a90115
MD
25712005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2572
2573 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
2574 block.
2575
5d2cb3ab
MV
25762005-02-25 Marius Vollmer <mvo@zagadka.de>
2577
2578 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
2579 so that no two weak alist vectors share a spine.
2580 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
2581 during GC before inserting the new alist cell.
2582
838c4126
MV
25832005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2584
2585 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
2586 the hashtable.
2587 (scm_hash_fn_create_handle_x): Likewise.
2588 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
241d9cea 2589
29fed193
MD
25902005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2591
2592 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
2593 the prototypical examples mentioned in the old reference manual.
2594 Instead keep the old semantics of dispatching on type. (Yes, this
2595 is extremely ugly, but the whole point of keeping the deprecated
2596 interface is not to break old code.)
2597
9cc49060
MD
25982005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2599
2600 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
2601 scm_i_array_dims.
2602
8447f463
KR
26032005-01-28 Kevin Ryde <user42@zip.com.au>
2604
2605 * numbers.c (scm_ash): Rewrite using shifts, much faster than
2606 integer-expt and multiply/divide. Inexacts and fractions no longer
2607 supported (they happened to work before for left shifts, but not
2608 right). Don't really need inexacts and fractions, since ash is
2609 documented as a "bitwise operation", and all the rest of those only
2610 take exact integers.
2611
1367aa5e
HWN
26122005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
2613
856fca7e
HWN
2614 * gc-card.c (scm_i_card_statistics): map structs, closures and
2615 subrs to one tag.
2616
1367aa5e 2617 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
856fca7e 2618 (tag_table_to_type_alist): ignore unknown types.
1367aa5e
HWN
2619
2620 * gc-segment.c (scm_i_all_segments_statistics): new function.
2621 (scm_i_heap_segment_statistics): new function
2622
2623 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
2624 statistics on the number of live objects of each type.
2625
2626 * gc-card.c (scm_i_tag_name): new function.
241d9cea 2627 (scm_i_card_statistics): new function.
1367aa5e 2628
333db3b8
KR
26292005-01-24 Kevin Ryde <user42@zip.com.au>
2630
2631 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
2632 POSIX and C99 don't document errno being set. Reported by Bruno
2633 Haible.
2634 (scm_flock): Update docstring from manual.
2635
8447f463
KR
2636 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
2637 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
2638 a 64-bit system.
2639
2640 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
2641 sa_handler, needs to be a long on 64-bit systems where int is only 32
2642 bits.
2643
88f59e53
MV
26442005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2645
0eeb2611
MV
2646 * environments.c (obarray_enter, obarray_replace): Call
2647 SCM_HASHTABLE_INCREMENT when adding a new entry.
2648
88f59e53
MV
2649 * objects.c: Include goops.h for the scm_class_of prototype.
2650
2651 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
2652 sizes to be smaller than the maximum lengths of vectors.
2653
219b2868
MV
26542005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2655
2656 * ports.c, smob.c: Include "libguile/goops.h".
2657
2658 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
2659 scm_class_char, scm_class_pair, scm_class_procedure,
2660 scm_class_string, scm_class_symbol,
2661 scm_class_procedure_with_setter, scm_class_primitive_generic,
2662 scm_class_vector, scm_class_null, scm_class_real,
2663 scm_class_complex, scm_class_integer, scm_class_fraction,
2664 scm_class_unknown, scm_port_class, scm_smob_class,
2665 scm_no_applicable_method, scm_class_of): Moved from objects to
2666 goops since they are only useable once goops has been loaded.
2667 (scm_classes_initialized): Removed.
2668 (scm_class_of): Do not check it.
2669 (create_standard_classes): Do not set it.
241d9cea 2670
009c6b9c
MV
26712005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2672
50472546
MV
2673 * objects.h, objects.c (scm_classes_initialized): New.
2674 (scm_class_of): Signal error when scm_classes_initialized is zero.
2675 * goops.c (create_standard_classes): Set scm_classes_initialized
2676 to one.
241d9cea 2677
009c6b9c
MV
2678 * random.c (scm_random_solid_sphere_x): Use
2679 scm_c_generalized_vector_length instead of
2680 scm_uniform_vector_length.
2681
7719cbe9
MV
26822005-01-16 Marius Vollmer <mvo@zagadka.de>
2683
2684 * script.c (scm_compile_shell_switches): Removed debugging output.
2685
1ec44fed
KR
26862005-01-15 Kevin Ryde <user42@zip.com.au>
2687
2688 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
2689 docstrings from manual.
2690 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
2691
6e4cd850
MV
26922005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2693
0b5a0521
MV
2694 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
2695 its value.
2696
2697 Implement u64 and s64 uniform numeric vectors with bignums when
2698 scm_t_uint64 and scm_t_int64 are not available.
2699
2700 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2701 scm_array_handle_u64_elements,
2702 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2703 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2704 is not available.
2705 (scm_take_s64vector, scm_array_handle_s64_elements,
2706 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2707 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2708 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2709 scm_t_int64/scm_t_uint64 are not available.
2710 (uvec_mark): New, to mark the bignums.
2711 (alloc_uvec): Initialize bignums.
2712 (uvec_fast_ref): Return bignums directly.
2713 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2714 assert_exact_integer): New.
2715 (uvec_fast_set): Use them to validate the bignums.
2716 (scm_init_srfi_4): Set mark function of smob when needed.
2717 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2718 scm_int64_max.
241d9cea 2719
6e4cd850 2720 Recognize 1.4 -e syntax.
241d9cea 2721
6e4cd850
MV
2722 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2723 (scm_compile_shell_switches): Use them to recognize and convert
2724 1.4 "-e" syntax.
241d9cea 2725
3b698afe
MV
27262005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2727
2728 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2729 deprecated features that once were macros but are now functions
2730 back into macros.
2731
d6dc83a9
MV
27322005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2733
49086691
MV
2734 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2735 * deprecation.c (scm_issue_deprecation_warning,
2736 scm_c_issue_deprecation_warning_fmt): Use it.
2737 (mode): Removed.
2738 (print_summary): New.
2739 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2740 mode.
241d9cea 2741
d6dc83a9 2742 Deprecated SCM_ARRAY* macros.
241d9cea 2743
d6dc83a9
MV
2744 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2745 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2746 version. Changed all uses.
2747 (scm_tc16_array, scm_i_tc16_array,
2748 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2749 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2750 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2751 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2752 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2753 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2754 SCM_ARRAY_V, SCM_I_ARRAY_V,
2755 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2756 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2757 scm_t_array, scm_i_t_array): Likewise.
2758 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2759 Moved from unif.h to unif.c.
2760 (scm_c_array_rank): New.
2761 (scm_array_rank): Reimplement using it.
241d9cea 2762
d6dc83a9
MV
2763 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2764 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2765 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
241d9cea 2766
dc91d8de
MV
27672005-01-11 Marius Vollmer <mvo@zagadka.de>
2768
2769 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2770 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2771 scm_c_generalized_vector_ref and scm_cvref, and
2772 scm_c_generalized_vector_set_x, respectively.
2773 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2774 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2775
2776 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2777 former to latter and made public. Changed all uses.
2778 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2779 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2780 (scm_i_shap2ra): New internal version of scm_shap2ra.
2781 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2782 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2783 (scm_ra_set_contp): Deprecated, changed all uses to
2784 scm_i_ra_set_contp.
2785 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
241d9cea 2786
66d33784
MV
27872005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2788
b06f099d
MV
2789 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2790 Trotts!
2791
5d35ad81
MV
2792 * unif.c (scm_list_to_typed_array): Allow the specification of the
2793 upper bound as well. This is needed for empty arrays.
2794 (l2ra): Give needed number of elements in error message.
2795 (scm_i_print_array): Print length information for arrays that need
2796 it.
2797 (scm_i_read_array): Parse it.
241d9cea 2798
66d33784
MV
2799 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2800 scm_i_object_chars, scm_i_object_length): Brought back from the
2801 dead.
2802
d7d7d401
MV
28032005-01-10 Marius Vollmer <mvo@zagadka.de>
2804
74c58fce
MV
2805 * ramap.c: Replaced single-index uses of scm_array_set_x with
2806 scm_c_generalized_vector_set_x.
2807
d7d7d401
MV
2808 * unif.c (scm_array_rank, scm_array_dimensions,
2809 scm_shared_array_offset, scm_shared_array_increments,
2810 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2811 to simplify code and make it more general.
2812 (scm_shared_array_root): Work with all kinds of arrays, including
2813 naked vectors.
2814 (indices_to_pos): New.
74c58fce
MV
2815 (scm_make_shared_array): Use it instead of scm_aind; use handle
2816 for oldra.
2817
4475d3fe
KR
28182005-01-10 Kevin Ryde <user42@zip.com.au>
2819
2820 * posix.c (scm_mkstemp): Update docstring from manual.
2821
d3ddc95e
KR
2822 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2823
8c8491f5
MV
28242005-01-09 Marius Vollmer <mvo@zagadka.de>
2825
b89ecc6f
MV
2826 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2827 scm_i_uniform_vector_set_proc): New.
2828 (u8ref, u8set, s8ref, s8set, etc): New.
2829 (uvec_reffers, uvec_setters): New.
2830 (uvec_to_list): Use generic scm_array_handle_ref instead of
2831 uvec_fast_ref since scm_array_handle_ref should be faster now.
8cb01d9f
MV
2832 (coerce_to_uvec, scm_c_uniform_vector_ref,
2833 scm_c_uniform_vector_set_x): Likewise.
241d9cea 2834
b89ecc6f
MV
2835 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2836 New.
2837 (scm_t_array_handle): Added ref, set, elements and
2838 writable_elements for fast inline operation of
2839 scm_array_handle_ref and scm_array_handle_set.
2840 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2841 and replaced with inline code that simply calls the ref/set
2842 members of the handle.
2843 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2844 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2845 New.
2846 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2847 and memoize_set.
2848 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2849 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2850 scm_bit_invert_x): Correctly multiply index with increment in the
2851 general case.
241d9cea 2852
8c8491f5
MV
2853 * unif.c (scm_array_handle_set): Correctly execute only one
2854 alternative. D'Oh!
2855 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2856 the array; this covers all cases with much simpler code.
241d9cea 2857
8c8491f5
MV
2858 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2859 as well.
2860
cd5d55c7
MV
28612005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2862
2863 * srfi-4.c (uvec_type): New.
2864 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2865 scm_c_uniform_vector_x): Use it to get concrete type.
2866
2867 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2868 fit the docs.
2869
2870 * unif.c (ra2l): Handle zero rank arrays.
2871 (scm_i_print_array): Print zero rank arrays specially.
2872 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2873 (scm_i_read_array): Allow zero rank arrays.
241d9cea 2874
a4aad74e
MV
28752005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2876
2877 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2878 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2879 and SCM_SET_HASHTAB_BUCKET.
2880
2881 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2882 Removed ref_stack field.
2883 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2884 of a print state. Use them everywhere instead of ref_stack.
241d9cea 2885
3a40d5e1 2886 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
241d9cea 2887
a4aad74e
MV
2888 * srfi-4.c: Include deprecation.h.
2889
2890 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2891 deprecated.c, eq.c
2892 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2893 (scm_vector_elements, scm_vector_writable_elements,
2894 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2895 unif.[hc].
2896 (SCM_SIMPLE_VECTOR_LOC): Removed.
2897 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2898 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2899 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2900 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2901 latter. Changed use in eq.c.
241d9cea 2902
f01fe441
MV
29032005-01-07 Marius Vollmer <mvo@zagadka.de>
2904
2905 Make the uniform vector routines also deal with one dimensional
2906 arrays.
241d9cea 2907
f01fe441
MV
2908 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2909 SCM_SMOB_PREDICATE in this file.
2910 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2911 of the right type.
2912 (scm_is_uniform_vector): Likewise.
2913 (uvec_fast_ref): Made BASE param const.
2914 (uvec_writable_elements, uvec_elements): New.
2915 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2916 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2917 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2918 arrays.
2919 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2920 argument convention.
2921 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2922 checking.
2923 (scm_uniform_vector_length): Use uvec_length.
241d9cea 2924
2aaf5726
MV
29252005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2926
2927 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2928 scm_c_uniform_vector_size): Removed.
2929 (scm_array_handle_uniform_element_size): New.
241d9cea 2930
2aaf5726
MV
2931
2932 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2933 type of POS parameter to be signed, positions can be negative.
2934 (scm_array_handle_release): New, changed all uses of
2935 scm_t_array_handle to properly call it.
2936 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2937 Renamed former to latter, changed all uses.
241d9cea 2938
34ae52fc
MV
29392005-01-05 Marius Vollmer <mvo@zagadka.de>
2940
2941 Updated bitvector routines to also use scm_t_array_handles.
241d9cea 2942
34ae52fc
MV
2943 * unif.h (scm_bitvector_elements,
2944 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2945 deliver offset, length and increment to caller. Changed all uses.
2946 (scm_bitvector_release_elements,
2947 scm_frame_bitvector_release_elements,
2948 scm_bitvector_release_writable_elements,
2949 scm_frame_bitvector_release_writable_elements): Removed.
2950 (scm_array_handle_bit_elements,
2951 scm_array_handle_bit_writable_elements,
2952 scm_array_handle_bit_elements_offset): New.
2953 (scm_make_typed_array): The special value for non-initialized
2954 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2955 was a valid value to fill bitvectors with, so it can't really be
2956 specialed out.
241d9cea 2957
c4cb7628
KR
29582005-01-04 Kevin Ryde <user42@zip.com.au>
2959
2960 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2961 Reported by Bill Schottstaedt.
2962
0356881d
MV
29632005-01-02 Marius Vollmer <mvo@zagadka.de>
2964
2965 * sort.c (quicksort): Added INC parameter for non-contigous
2966 vectors.
2967 (quicksort1): New, for contigous vectors. Both functions are
2968 generated from the same code by including "quicksort.i.c".
2969 (scm_restricted_vector_sort_x): Call one of quicksort and
2970 quicksort1, depending on increment of vector.
2971 (scm_sort): Simply call scm_sort_x on a copy of the list or
2972 vector.
2973 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2974 size_t, added inc parameter.
2975 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2976 so that it doesn't leak.
2977 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2978 list or vector.
241d9cea 2979
0356881d
MV
2980 * ramap.c (scm_array_map_x): Do not try to convert fill value
2981 before filling, any necessary conversion is done while storing.
2982
2983 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2984 doing it inline.
2985
2986 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2987 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2988 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2989
2990 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2991 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2992 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2993 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2994 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2995 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2996 vector elements API or simple vector API, as appropriate. Removed
2997 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2998 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
241d9cea 2999
0356881d
MV
3000 * srfi-4.h, srfi-4.c,
3001 srfi-4.i.c (scm_array_handle_uniform_elements,
3002 scm_array_handle_uniform_writable_elements,
3003 scm_uniform_vector_elements,
3004 scm_uniform_vector_writable_elements):
3005 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
3006 scm_t_array_handle, deliver length and increment.
3007 (scm_array_handle_<foo>_elements,
3008 scm_array_handle_<foo>_writable_elements): New.
241d9cea 3009
0356881d
MV
3010 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
3011 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
241d9cea 3012
0356881d
MV
3013 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
3014 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
3015 scm_array_handle_set, scm_array_handle_elements
3016 scm_array_handle_writable_elements, scm_vector_get_handle): New.
3017 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
3018 scm_dimensions_to_uniform_array): Deprecated for real.
3019 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
3020 snarfing wont allow a mismatch between C and Scheme arglists.
3021 (scm_make_shared_array, scm_enclose_array): Correctly use
3022 scm_c_generalized_vector_length instead of
3023 scm_uniform_vector_length.
241d9cea 3024
0356881d
MV
3025 * validate.h (SCM_VALIDATE_VECTOR,
3026 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
3027 of SCM_VECTORP.
3028
3029 * weaks.h, weaks.c: Use new internal weak vector API from
3030 vectors.h.
3031
3032 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
3033 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
3034 'extra' to being regular sources.
3035 (noinst_HEADERS): Added quicksort.i.c.
3036 * quicksort.i.c: New file.
3037
3038 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
3039 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
3040 and reimplemented. Replaced all uses with scm_vector_elements,
3041 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
3042 appropriate.
3043 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
3044 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
3045 SCM_SIMPLE_VECTOR_LOC): New.
3046 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
3047 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
3048 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
3049 Removed.
3050 (scm_vector_copy): New.
3051 (scm_vector_elements, scm_vector_writable_elements): Use
3052 scm_t_array_handle, deliver length and increment. Moved to
3053 unif.h. Changed all uses.
3054 (scm_vector_release_elements,
3055 scm_vector_release_writable_elements,
3056 (scm_frame_vector_release_elements,
3057 scm_frame_vector_release_writable_elements): Removed.
3058 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
3059 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
3060 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
3061 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
3062 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
3063 weak vectors.
3064
0336d18b
MV
30652004-12-29 Marius Vollmer <mvo@zagadka.de>
3066
3067 No longer use creators to specify the type of an array. Creators
3068 expose the fact that arrays are wrapped around vectors, but that
3069 might change.
241d9cea 3070
0336d18b
MV
3071 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
3072 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
3073 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
3074 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
3075 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
3076 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
3077 uvec_proc_vars): Removed.
3078 (scm_i_generalized_vector_creator): Removed.
3079 (scm_i_generalized_vector_type): New.
3080
3081 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
3082 scm_make_typed_array, scm_array_type, scm_list_to_array,
3083 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
3084 (scm_array_creator): Removed.
3085 (scm_array_p): Deprecated second PROT argument.
3086 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
3087 Deprecated, reimplemented in terms of scm_make_typed_array and
3088 scm_list_to_typed_array.
3089 (scm_i_proc_make_vector, scm_i_proc_make_string,
3090 scm_i_proc_make_bitvector): Removed.
3091 (type_creator_table, init_type_creator_table, type_to_creator,
3092 make_typed_vector): New.
3093 (scm_i_convert_old_prototype): Removed.
3094 (prototype_to_type): New.
3095 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
3096 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
3097 minor added clarity.
3098 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
3099 instead of scm_make_uve.
3100 (tag_creator_table, scm_i_tag_to_creator): Removed.
3101 (tag_to_type): New.
3102 (scm_i_read_array): Use scm_list_to_typed_array instead of
3103 scm_list_to_uniform_array.
241d9cea 3104
277e8472
MV
31052004-12-27 Marius Vollmer <mvo@zagadka.de>
3106
32b26202
MV
3107 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
3108 (scm_bitvector_writable_elements): New.
3109 (scm_bitvector_release, scm_bitvector_release_elements):
3110 Renamed former to latter. Added explicit call to
3111 scm_remember_upto_here_1.
3112 (scm_frame_bitvector_release,
3113 scm_frame_bitvector_release_elements): Renamed former to latter.
3114 (scm_bitvector_release_writable_elements,
3115 scm_bitvector_release_writable_elements): New.
3116 Changed all uses as required by the changes above.
3117
3118 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
3119 scm_u8vector_elements, etc): Made return value "const".
3120 (scm_uniform_vector_writable_elements,
3121 scm_u8vector_writable_elements, etc): New.
3122 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
3123 Renamed former to latter. Added explicit call to
3124 scm_remember_upto_here_1.
3125 (scm_frame_uniform_vector_release,
3126 scm_frame_uniform_vector_release_elements): Renamed former to latter.
3127 (scm_uniform_vector_release_writable_elements,
3128 scm_frame_uniform_vector_release_writable_elements): New. Takes
3129 crown of longest identifier yet.
3130 Changed all uses as required by the changes above.
241d9cea 3131
277e8472
MV
3132 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
3133 void.
3134 (scm_is_vector, scm_vector_p, scm_vector_length,
3135 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
3136 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
3137 scm_vector_move_left_x, scm_vector_move_right_x,
3138 scm_vector_fill_x): handle one-dimensional arrays.
32b26202
MV
3139 (scm_vector_elements, scm_vector_release_elements,
3140 scm_vector_frame_release_elements, scm_vector_writable_elements,
3141 scm_vector_release_writable_elements,
3142 scm_vector_frame_release_writable_elements): New.
3143 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
3144 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
277e8472
MV
3145
3146 * ramap.c (scm_ramapc, scm_raeql): Use
3147 scm_c_generalized_vector_length instead of
3148 scm_uniform_vector_length.
3149 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
3150 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
241d9cea 3151
49c51610
MV
31522004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3153
3154 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
3155 member for relocating debug frames.
3156 (scm_make_continuation): Set it.
3157
3158 * stacks.c (read_frame, read_frames, scm_make_stack,
3159 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
3160 of continuations instead of calculating the offset ourselves.
3161 Relocate 'vect' member of scm_t_debug_frame.
241d9cea 3162
3b2ee265
KR
31632004-12-16 Kevin Ryde <user42@zip.com.au>
3164
3165 * ramap.c (scm_array_map_x): Check for at least one source argument.
3166
e120686a
KR
31672004-12-14 Kevin Ryde <user42@zip.com.au>
3168
3169 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
3170 the C code so for the final call to the predicate procedure is a tail
3171 call, per SRFI-13 spec.
3172
680b5237
KR
31732004-12-10 Kevin Ryde <user42@zip.com.au>
3174
3175 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
3176 recent revision to the reference manual.
3177
3178 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
3179 with "%", C99 says it's well-defined.
3180
3181 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
3182 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
3183 bother trying to fit scm_from_ulong, not really worth the trouble if
3184 addresses are more than 4 bytes usually.
3185
446d320c
KR
31862004-11-30 Kevin Ryde <user42@zip.com.au>
3187
3188 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
3189 arm32. Reported by Greg Troxel.
3190
f2654760
MV
31912004-11-14 mvo <mvo@zagadka.de>
3192
3193 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
3194
3195 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
3196
d550e35f
MV
31972004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3198
3199 Enclosed arrays are now their own smob. This has been done to
3200 make the code more explicit about them and to prepare for the time
f2654760
MV
3201 when generalized vectors include arbitrary one-dimensional
3202 arrays. (Uptonow, enclosed arrays have been recognized by their
3203 use of an array as their storage 'vector'. When all generalized
3204 vectors are allowed as storage, including one-dimensional arrays,
3205 this will no longer work.)
241d9cea 3206
d550e35f
MV
3207 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
3208 New.
3209 (exactly_one_third, singp): Removed.
3210 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
3211 scm_shared_array_offset, scm_shared_array_increments): Handle
3212 enclosed arrays explicitely.
3213 (scm_array_rank): Likewise. Also, do not return zero for
3214 non-arrays, signal an error instead since arrays with rank zero do
3215 exist.
3216 (scm_i_make_ra): New, for specifying the tag of the new array.
3217 (scm_make_enclosed_array): Use it.
3218 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
3219 (scm_make_shared_array): Use scm_c_generalized_vector_length
3220 instead of scm_uniform_vector_length.
3221 (scm_array_in_bounds_p): Rewritten to be much cleaner.
3222 (scm_i_cvref): New, doing the job of scm_cvref.
3223 (scm_cvref): Use scm_i_cvref.
3224 (scm_array_ref): Do not accept non-arrays when no indices are
3225 given. Use scm_i_cvref to do the actual access.
3226 ("uniform-array-set1"): Do not register.
3227 (scm_array_set_x, scm_uniform_array_read_x,
3228 scm_uniform_array_write): Handle enclosed arrays explicitly.
3229 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
3230 handle enclosed arrays.
3231 (scm_array_to_list): Handle enclosed arrays explicitly.
3232 (rapr1): Removed.
3233 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
3234 enclosed arrays.
3235 (scm_i_print_enclosed_array): New.
3236 (tag_proto_table, tag_creator_table): Renamed former to latter.
3237 Added "a" and "b" for strings and bitvectors, resp.
3238 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
3239 latter. Tag "a" is in the table now, no need to handle it as a
3240 legacy tag.
3241 (scm_raprin1): Just call scm_iprin1.
3242 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
3243 explicitly.
3244 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
3245 Use scm_i_print_array as printer for scm_tc16_array.
241d9cea 3246
2ed34885
MV
32472004-11-10 Marius Vollmer <mvo@zagadka.de>
3248
823086c1
MV
3249 * ramap.c (cind): Changed second arg to be pointer to long instead
3250 of uniform vector.
3251 (scm_ramapc): Allocate index vector with scm_malloc and not as
d550e35f 3252 uniform vector. Wrap it in a frame so that it gets properly freed.
823086c1
MV
3253 (scm_array_index_map_x): Likewise.
3254
3255 * unif.c: Changed all uses of scm_array_prototype to
3256 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
3257 prototype is known.
3258 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
3259 in terms of scm_uniform_vector_read_x and
3260 scm_uniform_vector_write, respectively. Strings and
3261 bitvector support has been dropped.
241d9cea 3262
2ed34885
MV
3263 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
3264 needed files directly. Include config.h, <unistd.h> and <io.h>
3265 when available.
3266 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
3267
2c72f253
MV
32682004-11-09 Marius Vollmer <mvo@zagadka.de>
3269
3270 * gh_data.c (gh_uniform_vector_length): Properly use
3271 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
3272
3cc0a296
MV
32732004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3274
3275 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
3276 New.
3277 (scm_i_uniform_vector_creator): Removed.
3278 (scm_i_generalized_vector_creator): New.
3279 (scm_uniform_vector_length, scm_uniform_element_size): Do not
3280 handle generalized vectors, only uniform numeric vectors.
3281 (alloc_uvec): Do length check here...
3282 (make_uvec): ...but not here.
3283 (coerce_to_uvec): Use new generalized vector functions to handle
3284 all kinds of vectors in one go.
241d9cea 3285
3cc0a296
MV
3286 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
3287 remaining scm_tc7_unused tags to get a neatly ordered list.
3288
3289 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
3290 longer handle scm_tc7_bvect bitvectors.
3291
3292 * ramap.c: Use the new generalized vector functions to handle all
3293 vector like things.
3294
3295 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
3296 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
3297 scm_generalized_vector_length, scm_generalized_vector_ref,
3298 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
3299 scm_is_generalized_vector, scm_c_generalized_vector_length,
3300 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
3301 New.
241d9cea 3302
3cc0a296
MV
3303 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
3304 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
3305 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
3306 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
3307 scm_c_bitvector_length, scm_c_bitvector_ref,
3308 scm_c_bitvector_set_x, scm_bitvector_elements,
3309 scm_bitvector_release, scm_frame_bitvector_release,
3310 scm_tc16_bitvector, bitvector_free, bitvector_print,
3311 bitvector_equalp, count_ones, find_first_one): New.
3312 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
3313 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
3314 using the new C API for bitvectors and maybe count_ones or
3315 find_first_one, as appropriate.
3316 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
3317 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
3318 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
3319 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
3320 new functions from above.
3321 (scm_i_proc_make_vector, scm_i_proc_make_string,
3322 scm_i_proc_make_bitvector): Made non-static for use in
3323 scm_i_generalized_vector_creator.
3324 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
3325 (scm_make_uve): Validate that the created object is a generalized
3326 vector.
3327 (scm_i_legacy_tag): Removed.
3328 (scm_i_print_array): Do it here.
3329 (scm_raprin1): Only print enclosed arrays.
3330
3331 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
3332
c24d026b
MV
33332004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3334
1f2328fe
MV
3335 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
3336 added portability.
3337
3338 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
3339 for "space". Thanks to Bruce Korb!
3340
c24d026b
MV
3341 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
3342 only after dest has been set. Thanks to Hyper Division!
3343
3344 * gh_data.c (gh_uniform_vector_length): Use
3345 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
3346
d4ea47c8
MV
33472004-11-03 Marius Vollmer <mvo@zagadka.de>
3348
3349 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
3350 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
3351 SCM_SET_UVECTOR_LENGTH): Removed.
3352
236288e2
MV
33532004-11-02 Marius Vollmer <mvo@zagadka.de>
3354
9a5fa6e9 3355 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
236288e2
MV
3356 Thanks!
3357
3358 * backtrace.c (scm_display_backtrace_with_highlights): Join the
3359 first and the second line of the SCM_DEFINE macro call, since old
3360 preprocessors cannot handle definitions that are split into two
3361 lines.
3362
3363 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
3364 declarations.
3365
3366 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
3367 scm_t_uint32 to fix the mismatch between the function declaration
3368 and definition.
3369
3370 * sort.c (quicksort): Don't use C99 variable declarations.
3371
3372 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
3373 SCM_BOOL_F if no type matches.
3374
3375 * threads.c (thread_print): Cast a pointer to size_t when printing
3376 with scm_uintprint.
3377
3378 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
3379 defined.
3380 (scm_array_prototype): Deprecated.
3381
f738b51d
MV
33822004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3383
5d1015ec
MV
3384 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
3385 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
3386 more efficient access to the u32vector.
241d9cea 3387
034486df
MV
3388 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
3389 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
3390 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
3391
3392 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
3393 instead of the old-style dvectors.
3394
3395 * gh_data.c: Use new-style uniform arrays in place of old-style
3396 ones.
3397
3398 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
3399 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
3400
3401 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
3402 instead of old-sytle uvectors.
241d9cea 3403
034486df
MV
3404 * convert.c, convert.i.c: Rewritten completely, using
3405 scm_any_to_u8vector, etc and other new-style uniform vector
3406 functions.
3407
3408 * random.c (scm_random_solid_sphere_x,
3409 scm_random_hollow_sphere_x): Do not validate vector argument, this
3410 is already done elsewhere.
3411
3412 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
3413 scm_any_to_u8vector, etc): New.
3414 (scm_uniform_element_size, scm_uniform_vector_length): Do no
3415 longer handle old-style uniform vectors.
3416
f738b51d
MV
3417 * read.c (scm_lreadr): Bugfix: include the last bit in the
3418 bit vector.
3419
5e9c05a1
MV
34202004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3421
327114a2
MV
3422 * unif.h, unif.c (scm_array_creator): New.
3423 (scm_i_get_old_prototype): New.
3424 (scm_array_prototype): use it to return old-style prototype, never
3425 return creators.
3426 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
3427 arg of SCM_UNDEFINED. The latter is wrong.
241d9cea 3428
5e9c05a1
MV
3429 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
3430 (make_uve): Removed.
3431 (scm_i_proc_make_vector, scm_i_proc_make_string,
3432 scm_i_proc_make_u1vector): New.
3433 (scm_init_unif): Initialize them.
3434 (scm_i_convert_old_prototype): New.
3435 (scm_make_uve): Use it to get the creator procedure. Removed all
3436 old code that created old-style uniform vectors.
3437 (scm_array_p): Handle generic vectors.
3438 (scm_dimensions_to_uniform_array): Do not fill new array with
3439 prototype when that is a procedure.
3440 (scm_list_to_uniform_array): Also accept a list of lower bounds as
3441 the NDIM argument.
3442 (scm_i_print_array): Print rank for shared or non-zero-origin
3443 vectors.
3444 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
3445 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
3446 which I do not understand yet.
3447 (scm_array_prototype): Explicitely handle generic vectors.
327114a2 3448
5e9c05a1
MV
3449 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
3450 (iflo2str): Use icmplx2str for complex numbers.
3451
3452 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
3453 scm_i_uniform_vector_prototype): Removed.
3454 (scm_i_uniform_vector_creator): New.
3455 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
3456 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
3457 Updated all tables and generic functions to support them.
3458 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
3459 (scm_init_srfi_4): Initialize them.
241d9cea 3460
5e9c05a1
MV
3461 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
3462 sizeof(CTYPE) as explained in the comment.
3463
3464 * read.c (scm_lreadr): Call scm_i_read_array for all characters
50472546 3465 following '#' that can start an array. Explicitely disambiguate
5e9c05a1
MV
3466 'i' and 'e' between introducing numbers and uniform vectors. Do
3467 not call scm_i_read_homogenous_vector, since that is also handled
3468 by scm_i_read_array now.
3469
f984af07
MV
34702004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3471
3472 First cut at integrating uniform vectors from srfi-4 with the rest
3473 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
3474 vector. The plan is to gradually replace one type after the other
3475 until none is left and then to consider general cleanups and
3476 optimizations.
241d9cea 3477
f984af07
MV
3478 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
3479
3480 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
3481 scm_uniform_vector_ref, scm_uniform_vector_set_x,
3482 scm_uniform_vector_to_list, scm_is_uniform_vector,
3483 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
3484 scm_uniform_vector_elements, scm_uniform_vector_element_size,
3485 scm_uniform_vector_release): New.
3486 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
3487 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
3488 from unif.h, unif.c and extended to handle both the old and new
3489 uniform vectors.
3490
3491 * tags.h (scm_tc7_byvect): Commented out.
3492
3493 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
3494 the former to the latter.
3495 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
3496 srfi-4.h, srfi-4.c.
3497 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
3498 (scm_array_p, scm_array_rank, scm_array_dimensions,
3499 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
3500 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
3501 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
3502 vectors. Removed code for scm_tc7_byvect.
3503 (scm_dimensions_to_uniform_array): Fill array with 0 when
3504 prototype is #\nul.
3505 (scm_i_print_array_dimension, scm_i_legacy_tag,
3506 scm_i_print_array): New.
3507 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
3508 for scm_tc7_byvect.
3509
3510 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
3511 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
3512 uniform vectors. Removed code for scm_tc7_byvect
3513
3514 * print.c (iprin1): Removed code for scm_tc7_byvect.
3515 * objects.c (scm_class_of): Likewise.
3516 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
3517 * gc-card.c (scm_i_sweep_card): Likewise.
3518 * evalext.c (scm_self_evaluating_p): Likewise.
3519 * eq.c (scm_equal_p): Likewise.
3520
3521 * gh_data.c (gh_chars2byvect): Reimplemented with
3522 scm_make_s8vector.
3523 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
3524
3525 * srfi-4.c (take_uvec): New.
3526 (alloc_uvec): Use it.
3527 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
3528
3529 * random.c (vector_scale, vector_scale_x): Renamed former to the
3530 latter, since it modifies its argument.
3531 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
3532 Do not use scm_universal_vector_length for non-uniform vectors.
3533 Use scm_f64vector_elements to access innards of uniform vectors.
3534
3535 * convert.i.c: Convert srfi-4 style uniform vectors when
3536 requested.
3537 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
3538 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
241d9cea 3539
79d52182
MV
35402004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3541
3542 * numbers.h, numbers.c (scm_i_print_double): New.
3543
3544 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
3545 ../srfi/ but heavily modified.
3546 * Makefile.am: Add them in all the right places.
3547 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
3548 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
3549 '#u', and '#s'.
3550
3551 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
3552 and made non-static. Changed all uses.
3553
6191ccec
MV
35542004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3555
e64e80b0
MV
3556 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
3557 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
3558 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
3559 scm_uintprint to print unsigned integers, raw heap words, and
3560 adresses, using a cast to scm_t_bits to turn pointers into
3561 integers.
3562
3563 * unif.c: Include "libguile/print.h".
3564
c90ac3a8
MV
3565 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
3566 scm_t_intmax values.
3567 (scm_uint2str): New, for scm_t_uintmax.
3568 (scm_iint2str): Argument type changed to scm_t_intmax,
3569 reimplemented in terms of scm_uint2str.
241d9cea 3570
c90ac3a8
MV
3571 * print.c, print.h (scm_uintprint): New, for printing
3572 scm_t_uintmax values.
3573 (scm_intprint): Argument type changed to scm_t_intmax.
241d9cea 3574
77c2594f
MV
3575 * sort.c (quicksort, scm_merge, scm_merge_list_x,
3576 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
3577 strategic places so that the loops can be interrupted.
3578
6191ccec
MV
3579 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
3580 "-I$(top_srcdir)/libguile-ltdl".
3581 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
3582 "../libguile-ltdl/libguile-ltdl.a".
241d9cea 3583
6191ccec
MV
3584 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
3585 all references to scm_lt_* with just lt_*. Include <ltdl.h>
3586 instead of <libguile-ltdl.h>.
3587
77600f3e
MV
35882004-10-20 Marius Vollmer <mvo@zagadka.de>
3589
3590 * sort.c (quicksort): Copy pivot out of the array while
3591 constructing the partitions; it could get overwritten otherwise.
3592 Because of the ultimate insertion sort, this bug did not cause
3593 quicksort to fail, it just put all the burdon on the insertion
3594 sort and was thus very slow. Thanks to Rolan Orre for reporting
3595 the slowness!
241d9cea 3596
5000379b
MV
35972004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3598
192cd792
MV
3599 * numbers.c (scm_i_range_error): New.
3600 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
241d9cea 3601 scm_out_of_range.
192cd792
MV
3602
3603 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
6191ccec 3604 endpos. State inclusiveness/exclusiveness of bounds in docstring.
192cd792
MV
3605
3606 * unif.c (scm_array_p): When no prototype is given, explicitely
3607 test for allowable types, do not simply return true. Thanks to
3608 Roland Orre for reporting this!
3609
5000379b
MV
3610 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
3611
3612 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
3613 segment to scm_max_segment_size.
3614
497eb0b7
HWN
36152004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
3616
1367aa5e
HWN
3617 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
3618
497eb0b7
HWN
3619 * inline.h (scm_double_cell): abort if GC running.
3620 (scm_cell): idem.
3621
aef0bdb4
MV
36222004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3623
3624 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
3625 pos == 0.
3626
3627 Keywords no longer store a 'dash symbol'. Instead, they store a
3628 symbol with their real name.
241d9cea 3629
aef0bdb4
MV
3630 * keywords.h, keywords.c, deprecated.h, deprecated.c
3631 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
3632 terms of scm_is_keyword and scm_keyword_dash_symbol.
241d9cea 3633
aef0bdb4
MV
3634 * keywords.h, keywords.c, discouraged.h, discouraged.c
3635 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
3636 scm_c_make_keyword): Discouraged.
3637
3638 * keywords.h, keywords.c (scm_symbol_to_keyword,
3639 scm_keyword_to_symbol): Implemented in C.
3640 (scm_is_keyword, scm_from_locale_keyword,
3641 scm_from_locale_keywordn): New.
3642
241d9cea 3643 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
aef0bdb4
MV
3644
3645 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
3646 scm_from_locale_keyword instead of scm_c_make_keyword.
3647
3648 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
3649 better error message.
3650
3651 * deprecated.c: Include discouraged.h and keywords.h.
3652
3653 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
3654 reading '#:' or ':'. See NEWS for consequences.
3655
818deb11
MV
36562004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3657
43c25626
MV
3658 * read.c (scm_lreadr): Revert change from 2004-09-22: string
3659 literals are now read-write again (until SCM_STRING_CHARS is
3660 removed).
3661
3662 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
3663 strings with an error message that blames SCM_STRING_CHARS.
3664
3665 * options.c (change_option_setting): Use scm_car instead of
3666 explicit type check plus SCM_CAR.
3667
3668 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
3669 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
3670 (scm_iprin1): Use them instead of the previoulsy hardcoded
3671 strings.
3672 (scm_init_print): Initialize them.
3673
3674 * backtrace.c (display_frame_expr): Do not remove control
3675 characters from the final string. Print it directly using
3676 scm_display.
3677
818deb11
MV
3678 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
3679 Thanks to Roland Orre!
3680
d748089e
KR
36812004-09-29 Kevin Ryde <user42@zip.com.au>
3682
3683 * regex-posix.c (scm_regexp_exec): Correction to last change, should
3684 be whole original string in match struct, not offsetted substring.
3685
0ff7e3ff
HWN
36862004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
3687
3688 * gc.c (scm_gc_unprotect_object): abort if called during GC.
3689
ad7de4b8
MV
36902004-09-24 Marius Vollmer <mvo@zagadka.de>
3691
2edf319f
MV
3692 * Makefile.am (EXTRA_DIST): Added gettext.h.
3693
d180337b
MV
3694 * smob.c, smob.h (scm_assert_smob_type): New.
3695
05d7cf89 3696 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
ad7de4b8
MV
3697 Include GUILE_CFLAGS.
3698 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3699 now.
3700 (libpath.h): Put GUILE_CFLAGS in the build-info.
241d9cea 3701
c9fedf8a
MV
37022004-09-23 Marius Vollmer <mvo@zagadka.de>
3703
3704 * print.h (scm_print_state): Added highlight_objects.
3705 * print.c (make_print_state, scm_free_print_state): Initialize it
3706 to SCM_EOL.
3707 (scm_iprin1): Wrap output in '{...}' when object is contained in
3708 highlight_objects.
3709
3710 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3711 scm_backtrace_with_highlights): New. Set highlight_objects of
3712 printstate.
241d9cea 3713
c9fedf8a
MV
3714 * error.c (scm_error_scm): Document new meaning of data/rest
3715 argument for out-of-range and wrong-type-arg errors.
3716 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3717 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3718 exception so that it gets highlighted in the backtrace.
3719 Don't talk about "argument" when not giving a position.
241d9cea 3720
c9fedf8a
MV
3721 * throw.c (handler_message): The rest argument is the fourth
3722 argument, not everything after the third. Call
3723 scm_display_backtrace_with_highlights, passing the rest argument
3724 when appropriate.
3725
d5ac9b2a
MV
37262004-09-22 Marius Vollmer <mvo@zagadka.de>
3727
3728 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3729 <bruno@clisp.org>:
3730
3731 * i18n.c: Handle --disable-nls (thanks Bruno).
3732
3733 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3734 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3735
3736 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3737 LC categories.
05d7cf89 3738 * posix.c (scm_setlocale): Use it.
d5ac9b2a
MV
3739
3740 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3741 scm_bind_textdomain_codeset): Make wrappers similar to C function
3742 they wrap.
3743
3744 * i18n.h: New file.
3745 * i18n.c: New file.
3746 * gettext.h: New file, taken from GNU gettext.
3747 * init.c: Include libguile/i18n.h.
3748 (scm_init_guile_1): Add call to scm_init_i18n().
3749 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3750 (DOT_X_FILES): Add i18n.x.
3751 (DOT_DOC_FILES): Add i18n.doc.
3752 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3753 (modinclude_HEADERS): Add i18n.h.
3754
d2e53ed6
MV
37552004-09-22 Marius Vollmer <mvo@zagadka.de>
3756
2cdfe016
MV
3757 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3758
d2e53ed6
MV
3759 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3760 discouraged.h. Replaced all uses with scm_is_pair.
3761 (SCM_I_CONSP): New name for SCM_CONSP.
3762
3763 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3764 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3765 scm_cadr, etc): New.
3766 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3767 uses with scm_is_null.
5dd82006 3768
d2e53ed6
MV
3769 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3770 instead of explicit code.
5dd82006 3771
5dfdf243
MV
37722004-09-22 Marius Vollmer <mvo@zagadka.de>
3773
b50c53e5
MV
3774 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3775 Reworded logic a bit so that #f is returned immediately when s1 is
3776 too short to contain s2.
3777
5dfdf243 3778 * regex-posix.c (scm_regexp_exec): Convert string to
05d7cf89 3779 zero-terminated locale string before matching against it.
5dfdf243
MV
3780
3781 * strings.h, strings.c (scm_substring_read_only,
3782 scm_c_substring_read_only, scm_i_substring_read_only): New.
3783 (RO_STRING_TAG, IS_RO_STRING): New.
241d9cea
NJ
3784 (scm_i_string_writable_chars): Bail on read-only strings.
3785
5dfdf243
MV
3786 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3787 literals, thus making them read-only as specified by R5RS.
3788
22ab5ba3
MV
37892004-09-22 Marius Vollmer <mvo@zagadka.de>
3790
3791 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3792 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3793
2663421c
MV
37942004-09-21 Marius Vollmer <mvo@zagadka.de>
3795
0d83cb90
MV
3796 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3797 numbers.c.
3798 (scm_to_mpz, scm_from_mpz): New.
9a5fa6e9 3799 Thanks to Andreas Vögele!
241d9cea 3800
2663421c
MV
3801 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3802 just on a line of its own.
3803
3804 * srfi-13.c (scm_string_any, scm_string_every,
3805 scm_string_tabulate, string_upcase_x, string_down_case_x,
3806 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3807 size_t instead of int for indices into strings. Make sure that no
9a5fa6e9 3808 over- or underflow occurs. Thanks to Andreas Vögele!
2663421c
MV
3809 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3810 indices, which can also be negative.
241d9cea 3811
b00b73f9
MV
38122004-09-20 Marius Vollmer <mvo@zagadka.de>
3813
3814 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3815
3816 * threads.c (scm_threads_mark_stacks): Call
3817 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3818 only used once.
3819
adba74f3
HWN
38202004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3821
05d7cf89 3822 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
adba74f3
HWN
3823 Bugfix: when subtracting unsigned values, make sure that result
3824 does not wrap.
3825
f6de32c8
KR
38262004-09-09 Kevin Ryde <user42@zip.com.au>
3827
3828 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3829 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
9a5fa6e9 3830 by Andreas Vögele.
f6de32c8 3831
e548be5f
MV
38322004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3833
eb8d0af1
MV
3834 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3835
e548be5f
MV
3836 * eq.c (real_eqv): Pretend that all NaNs are equal.
3837
3838 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3839
e7acba81
MV
38402004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3841
874fbad1
MV
3842 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3843 use size_t for some locals instead of int.
3844
e7acba81
MV
3845 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3846 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3847 (skip_scsh_block_comment): Use scm_input_error instead of
3848 scm_misc_error in case of EOF.
241d9cea 3849
5de12658
KR
38502004-09-07 Kevin Ryde <user42@zip.com.au>
3851
3852 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
3853 Bug report by Bill Schottstaedt.
3854
3855 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3856 column.
3857 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3858
3859 * posix.c (scm_access): Update docstring per manual.
3860
3861 * posix.c (scm_nice): Correction to error detection. Reported by
3862 Matthias Koeppe.
3863
3864 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3865 throw error before unlocking mutex with SCM_ALLOW_INTS.
3866
e227addf
KR
38672004-09-06 Kevin Ryde <user42@zip.com.au>
3868
3869 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3870 available. This also gets around CLK_TCK being absent when
3871 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3872
edea856c
SJ
38732004-09-03 Stefan Jahn <stefan@lkcc.org>
3874
3875 * threads.c (scm_threads_mark_stacks): Fixed local variable
3876 definitions.
3877
e7acba81 3878 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
3879 local variable definitions.
3880
3881 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3882 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
3883 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3884 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
3885 scm_makfrom0str().
3886
874fbad1 3887 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
3888 part.
3889
3890 * numbers.c (scm_init_numbers): Removed check_sanity() call
3891 inside GUILE_DEBUG. The function has been removed somewhen...
3892
3893 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3894 MinGW32 because it conflicts with its pthread headers.
3895
d9eb2d67
MV
38962004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3897
3898 * strings.c (SCM_STRINGP): Accept all strings.
3899 (SCM_STRING_CHARS): Reject shared substrings here.
3900
3901 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3902 the Copyright years.
3903
c495c342
KR
39042004-08-27 Kevin Ryde <user42@zip.com.au>
3905
3906 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3907 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3908 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3909
57aa5515
MV
39102004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3911
3912 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3913 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3914 scm_i_symbol_is_interned, scm_i_mem2symbol,
3915 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3916
ce25760f
MV
39172004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3918
19ff6ffc
MV
3919 * srfi-13.c: First cut at thread-safeness and proper use of
3920 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3921 been inserted. Made sure that no internal string pointer is used
3922 across a SCM_TICK or a possible GC.
241d9cea 3923
ce25760f
MV
3924 * script.c (scm_compile_shell_switches): Use
3925 scm_from_locale_string instead of scm_makfrom0str.
3926
3927 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3928 always been.
3929
c5080b51
MV
39302004-08-25 Marius Vollmer <mvo@zagadka.de>
3931
3932 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3933 strop.c.
3934
3935 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3936 * strop.h, strop.c: Removed, they are now empty.
3937 * Makefile.am: Updated for new and removed files.
241d9cea 3938
c5080b51
MV
3939 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3940 to scm_string_to_symbol.
3941
3942 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3943 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3944 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3945 charset instead of libc functions.
3946
3947 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3948 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3949 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3950 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3951 instead of explicit code.
241d9cea 3952
c5080b51
MV
3953 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3954 "srfi-13.h" instead of "strop.h".
3955
3956 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3957 scm_init_srfi_14. Do not call scm_init_strop.
3958
4b0d27f2
MV
39592004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3960
3961 * numbers.c (scm_inf_p): Synced docstring back from manual.
3962
3ece39d6
MV
39632004-08-22 Marius Vollmer <mvo@zagadka.de>
3964
3965 * strings.c (get_str_buf_start): New helper function.
3966 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3967 scm_i_string_char, scm_i_string_writable_chars): Use it.
3968 (scm_i_substring_copy): Make START argument optional for C
3969 callers, for upcoming SRFI-13 integration.
241d9cea 3970
3ece39d6
MV
39712004-08-21 Marius Vollmer <mvo@zagadka.de>
3972
3973 From Richard Todd, Thanks!
241d9cea 3974
3ece39d6
MV
3975 * script.c (scm_compile_shell_switches): added '-L' switch to add
3976 to the %load-path.
241d9cea 3977
5fa0939c
DH
39782004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3979
3980 * eval.c (unmemoize_exprs): When dropping internal body markers
3981 from the output during unmemoization, also drop those that are not
3982 immediately at the beginning of a body.
3983
2146fdeb
MV
39842004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3985
c1f54b3d
MV
3986 * eval.c (scm_lookupcar1): Report "Variable used before given a
3987 value" insetad of an "Unbound" one for variables that are found
3988 but still contain SCM_UNDEFINED.
2146fdeb
MV
3989
3990 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3991 expects a null-terminated string in the locale encoding, but
3992 scm_i_string_writable_chars doesn't give that. Fixed by letting
3993 mkstemp modify a locale version of the tmpl argument and copying
3994 the result back into tmpl.
241d9cea 3995
2146fdeb
MV
3996 * strop.c (scm_substring_move_x): Store into str2, not str1.
3997
d4f76919
KR
39982004-08-20 Kevin Ryde <user42@zip.com.au>
3999
4000 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
4001 to modify the input string.
4002
b5247a6b
MV
40032004-08-19 Marius Vollmer <mvo@zagadka.de>
4004
4005 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
4006 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
4007 scm_c_symbol_length.
4008
f26b9395
MV
40092004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4010
4011 New string implementation, with copy-on-write strings and
4012 mutation-sharing substrings, and a new internal string API.
4013 Symbols can now share memory with strings.
241d9cea 4014
f26b9395
MV
4015 * tags.h (scm_tc7_stringbuf): New tag.
4016
4017 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
4018 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
4019 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
4020 uses.
4021 (scm_i_make_string, scm_c_make_string): New, to replace
4022 scm_allocate_string. Updated all uses.
4023 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
4024 SCM_STRING_LENGTH): Deprecated.
4025 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
4026 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
4027 Discouraged. Replaced all uses with scm_from_locale_string or
4028 similar, as appropriate.
4029 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
4030 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
4031 scm_substring_shared, scm_substring_copy): New.
4032
4033 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
4034 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
4035 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
4036 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
4037 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
4038 Deprecated.
4039 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
4040 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
4041 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
4042 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
4043 Updated all uses.
4044 (scm_gensym): Generate only the number suffix in the buffer, just
4045 string-append the prefix.
4046
4047 * error.c (scm_memory_error): Do not try to throw, just abort.
4048 Throwing will not work anyway.
4049
4050 * gh.h, gh-data.c (gh_set_substr): Made src const.
4051
4052 * ports.c (scm_i_mode_bits_n): New, for counted strings.
4053 (scm_mode_bits): Use it.
4054 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
4055 a vector normally and fill that instead of consing a list with a
4056 blocked GC.
4057
4058 * read.c (scm_i_casei_streq): New, for counted strings.
4059
4060 * threads.c (gc_section_count): Removed, thread-sleeping can not
4061 be nested.
4062 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
4063 admin mutex so that we can be put to sleep by other threads while
4064 blocking on that mutex. Lock all the heap mutex of all threads,
4065 including ourselves.
4066 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
4067 call scm_i_enter_guile.
4068 (scm_thread_mark_stacks): Expect all threads to be suspended.
241d9cea 4069
f26b9395
MV
4070 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
4071 scm_gc_mallocated, for now.
4072 (scm_init_storage): Initialize it.
4073 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
241d9cea 4074
f26b9395
MV
4075 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
4076 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
4077 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
4078 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
4079
cd505b38
MV
4080 * strop.c (scm_string_copy): Use scm_c_substring to get a
4081 copy-on-write string.
4082
8a807b26
KR
40832004-08-18 Kevin Ryde <user42@zip.com.au>
4084
4085 * arbiters.c (FETCH_STORE): New macro.
4086 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
4087 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
4088 scm_try_arbiter and scm_release_arbiter.
4089 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
4090 for speed on i386, otherwise using mutex.
4091
4092 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
4093 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
4094 exact and inexact is #f.)
4095
4096 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
4097 to get thread safety of scm_ttyname.
4098
4099 * ports.c (ttyname): Remove prototype, unused.
4100
d6cd4c36 4101 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 4102 Reported by Michael Tuexen.
d6cd4c36 4103
fa0c0a4b
MV
41042004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4105
4106 * load.c (scm_init_load_path): Do not pass NULL to
4107 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
4108 not set. Thanks to Bill Schottstaedt.
4109
70f7ee41
MV
41102004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4111
4112 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
4113 locale strings instead of accessing their internals.
4114 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
4115 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
4116 SCM_STRING_CHARS and SCM_STRING_LENGTH.
241d9cea 4117
70f7ee41
MV
4118 * simpos.c (scm_system): Convert SCM strings to locale strings
4119 instead of accessing their internals.
4120
4121 * script.c (scm_compile_shell_switches): Convert version to locale
4122 string before printing it.
4123
4124 * rdelim.c (scm_read_delimited_x): Avoid
4125 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
4126 of scm_from_long for the returned number of read characters.
4127
4128 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
4129 scm_i_mode_bits to avoid accessing internals of SCM string from C.
4130
4131 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
4132 Use them instead of SCM_SYSCALL when one or two strings need to be
4133 converted into locale strings.
4134 (my_rename): New, gathers platform dependent code for renaming.
4135 (scm_rename): Use it.
4136 (scm_readlink, scm_copy_file): Convert SCM strings to locale
4137 strings instead of accessing their internals.
4138 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
4139 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
4140 SCM_STRING_LENGTH.
241d9cea 4141
70f7ee41
MV
4142 * extensions.c (load_extension): Convert lib and init to locale
4143 strings instead of accessing the internals directly.
4144 (scm_c_load_extension): Use scm_from_locale_string instead of
4145 scm_makfrom0str.
241d9cea 4146
70f7ee41
MV
4147 * fports.h, fports.c (scm_i_fdes_to_port): New, like
4148 scm_fdes_to_port, but take mode bits directly instead of as a C
4149 string.
4150 (scm_i_fdes_to_port): Implement using above.
4151 (scm_open_file): Use scm_i_fdes_to_port together with
4152 scm_i_mode_bits to avoid accessing internals of SCM string from C.
4153 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
4154 with scm_i_mode_bits to avoid accessing internals of SCM string
4155 from C.
4156
4157 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
4158 SCM string as argument.
4159
4160 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
4161 bits directly instead of C string.
4162 (scm_void_port): Implement using above.
4163 (scm_sys_make_void_port): Use scm_i_void_port together with
4164 scm_i_mode_bits to avoid accessing internals of SCM string.
241d9cea 4165
70f7ee41
MV
4166 * strings.h, strings.c (scm_i_get_substring_spec): New.
4167
4168 * socket.c, rw.c, deprecated.h, validate.h
4169 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
4170 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
4171 scm_to_locale_string, etc.
4172 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
4173 above, plus scm_i_get_substring_spec.
241d9cea 4174
70f7ee41
MV
4175 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
4176 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
4177 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
4178 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
4179 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
4180 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
4181 with more explicit scm_remember_upto_here_1, etc, or introduced
4182 them in the first place.
4183
4184 * posix.c (WITH_STRING): New helper macro. Use it where one
4185 locale string is needed for a short piece of code.
4186 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
4187 when one locale string is needed.
4188 (scm_mkstemp): Convert tmpl to a locale string.
4189 (scm_putenv): Rewritten to use only C strings.
4190 (scm_setlocale, scm_crpt): Convert argument strings to locale
4191 strings.
241d9cea 4192
70f7ee41
MV
41932004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4194
4195 * load.c (scm_primitive_load_path): Do not check for absolute
4196 filenames when scm_sys_search_load_path returns false, which will
4197 return absolute filenames unchanged.
4198
bb26cc2d
MV
41992004-08-11 Marius Vollmer <mvo@zagadka.de>
4200
4201 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
4202 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
4203 of an alist. Thanks to Matthias Koeppe!
4204
02573e4c
MV
42052004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4206
4207 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
4208 Moved from string.h to deprecated.h.
4209
4210 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
4211
f9751e86 4212 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
4213 SCM_I_MAKE_STRING_TAG, changed all uses.
4214 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
4215 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
4216 respectively. For a short time, the old names are still there as
4217 aliases. Not all uses have been changed yet, but the ones in
4218 strings.c have.
4219 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
4220 SCM_T_BITS_MAX.
4221 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
4222 scm_take_locale_string, scm_take_locale_stringn,
4223 scm_to_locale_string, scm_to_locale_stringn,
4224 scm_to_locale_stringbuf): New.
4225 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
4226 deprecated.[hc]. Implemented in terms of the new functions above.
4227 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
4228 scm_makfrom0str): Reimplemented in terms of the new functions from
4229 above. They will be discouraged shortly.
4230 (scm_substring): Do not use scm_mem2string.
4231 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
4232 to replace similar code from posix.c, simpos.c, and dynl.c.
4233 (scm_string_append): Use memcpy instead of explicit loop. Do not
4234 use register keyword. Use plain 'char' instead of 'unsigned
4235 char'.
241d9cea 4236
02573e4c
MV
4237 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
4238 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
4239
4240 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
4241 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4242 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
4243 not as a pointer. Use scm_remember_upto_here_1 to protect it.
4244
4245 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
4246 string. This avoids a conversion round-trip.
4247
4248 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
4249 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4250 SCM_I_STRING_LENGTH, respectively.
4251 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
241d9cea 4252
02573e4c
MV
4253 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
4254 of a string, call scm_display on the string itself.
4255
4256 * dynwind.c, dynwind.h (scm_frame_free): New.
4257
4258 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
4259 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
4260 Replaced uses of SCM_STRING_CHARS with proper uses of
4261 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
4262 Replaced scm_mem2string with scm_from_locale_string.
4263
4264 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
4265 Removed, replaced all uses with scm_i_allocate_string_pointers.
4266
4267 * load.h, load.c (scm_internal_parse_path): Removed.
4268 (scm_parse_path): Use scm_string_split to do the work.
4269 (scm_init_load_path): Use scm_parse_path instead of
4270 scm_internal_parse_path.
4271 (scm_search_path): Rewritten string handling part of the code in
4272 terms of scm_to_locale_stringbuf and so that it is thread safe.
4273
4274 * error.c (scm_error_scm): Throw directly instead of calling
4275 scm_error, this avoids the back and forth conversion of SUBR and
4276 MESSAGE and also plugs a memory leak.
4277 (scm_error): Call scm_error_scm.
241d9cea 4278
02573e4c
MV
4279 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
4280 (display_header): Print FNAME when it is true, not
4281 merely when it is a string.
4282
4283 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
4284 unceremoniously. They were unused by Guile itself, and external
4285 use should stop immediately.
241d9cea 4286
02573e4c 4287
409eb4e5
MV
42882004-08-10 Marius Vollmer <mvo@zagadka.de>
4289
4290 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
4291 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
4292 deprecated versions installed in deprecated.h and deprecated.c.
4293 Changed all uses.
241d9cea 4294
a00eaf19
RB
42952004-08-06 Rob Browning <rlb@defaultvalue.org>
4296
4297 * net_db.c (scm_resolv_error): don't cause an exception while
4298 trying to throw an exception -- call scm_misc_error with correct
4299 arguments. The previous arguments needed a format escape that
4300 wasn't in any of the format strings.
4301
bcb88c93
KR
43022004-08-06 Kevin Ryde <user42@zip.com.au>
4303
8f094b97
KR
4304 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
4305 so as not to depend on signedness of plain char. For byvect range
4306 check, throw out-of-range rather than wrong-type-arg.
4307
bcb88c93
KR
4308 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
4309 signed byte range checks by using scm_to_schar and scm_from_schar,
4310 don't want to depend on signedness of C char.
4311
29e61124
KR
43122004-08-05 Kevin Ryde <user42@zip.com.au>
4313
4314 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
4315 SCM_DEFER_INTS.
4316 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
4317 guaranteed if multiple threads compete to unlock.
4318 Update docstrings per doc/ref/api-scheduling.texi.
4319
99de794f
KR
4320 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
4321 stat on the filename, to be certain a file rename can't mean we get
4322 info on one filesystem object but open another. This fstat usage is
4323 similar to Emacs copy-file.
241d9cea 4324
29e61124
KR
4325 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
4326
4327 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
4328 SIGINT and SIGQUIT, since those values are ints.
4329
759aa8f9
MV
43302004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4331
7241f213
MV
4332 * num2integral.i.c, num2float.i.c: Removed.
4333 * Makefile.am (noinst_HEADERS): Updated.
4334
f9656a9f
MV
4335 * numbers.h. numbers.c (scm_make_ratio): Renamed to
4336 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
4337 (scm_complex_p): New, export as "complex?" to Scheme.
4338 (scm_number_p): Export as "number?" to Scheme.
4339 (scm_is_complex, scm_is_number): New.
4340 (scm_c_make_rectangular, scm_c_make_polar): New.
4341 (scm_make_rectangular, scm_make_polar): Use above.
4342 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
4343 New.
4344 (scm_make_complex): Discouraged by moving to discouraged.h and
4345 discouraged.c. Replaced all uses with scm_c_make_rectangular.
241d9cea 4346
759aa8f9
MV
4347 * discouraged.h, discouraged.c, numbers.c, numbers.h
4348 (scm_is_rational): New.
4349 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
4350 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
4351 Removed prototypes.
4352 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
4353 Discouraged by moving to discouraged.h and discouraged.c.
4354 Replaced all uses with scm_from_double.
4355 (scm_num2float, scm_num2double): Discouraged by moving prototype
4356 to discouraged.h and rewriting in terms of scm_to_double.
4357 Replaced all uses with scm_to_double.
4358 (scm_to_double): Do not implement in terms of scm_num2dbl, use
4359 explicit code.
4360 (scm_from_double): Do not implement in terms of scm_make_real, use
4361 explicit code.
241d9cea 4362
531bf3e6
MV
43632004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4364
759aa8f9
MV
4365 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
4366
531bf3e6
MV
4367 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
4368 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
4369
4370 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
4371 Renamed to SCM_I_* in order to avoid collisions with the versions
4372 defined in deprecated.h.
4373
4374 * discouraged.h, discouraged.c: New files.
4375
4376 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
4377 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
4378 deprecated to being discouraged by moving to discouraged.h.
4379
4380 * numbers.h, numbers.c, discouraged.h, discouraged.c
4381 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
4382 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
4383 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
4384 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
4385 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
4386 scm_num2ulong_long): Discouraged by moving to discouraged.h and
4387 discouraged.c and reimplementing in terms of scm_from_* and
4388 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
4389 functions.
4390
4391 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
4392 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
4393 scm_i_size2big, scm_i_ptrdiff2big): Removed.
241d9cea 4394 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
531bf3e6
MV
4395 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
4396 explicit code.
4397
5ec82e96
KR
43982004-08-02 Kevin Ryde <user42@zip.com.au>
4399
4400 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
4401 and current usage and migration.
4402
58f28989
KR
44032004-07-31 Kevin Ryde <user42@zip.com.au>
4404
4405 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
4406 it's not thread safe.
4407 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
4408 advantage of this.
4409 * fports.c (scm_open_file): Use scm_strerror likewise.
4410 * filesys.c (scm_stat, scm_lstat): Ditto.
4411
4412 * filesys.c (scm_copy_file): Avoid fd leak when destination file
4413 cannot be opened.
4414
4415 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
4416 update, for thread safety.
4417 (gensym_counter): Move into scm_gensym which is its only user.
4418 (scm_init_symbols): No need to explicitly initialize gensym_counter.
4419
03696aab
MV
44202004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4421
51fdb325
MV
4422 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
4423 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
4424 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
4425 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
4426 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
4427 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
4428 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
4429 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
4430 defined in terms of scm_to_signed_integer, etc, but in terms of
4431 scm_to_int8, etc.
4432
4433 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
4434
03696aab
MV
4435 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
4436 no longer used.
4437
4438 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
4439 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
4440
4441 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
4442 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
4443 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
4444 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
4445 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
4446 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
4447 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
241d9cea 4448
03696aab
MV
4449 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
4450 the functions below.
4451
4452 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
4453 conv-uinteger.i.c.
4454
4455 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
4456 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
4457 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
4458 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
4459 scm_from_uint64): Turned from macros into proper functions.
4460 (scm_to_signed_integer, scm_to_unsigned_integer,
4461 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
4462 conv-integer.i.c and conv-uinteger.i.c, as well.
241d9cea 4463
03696aab
MV
4464 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
4465 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
4466 the limits. Those are always defined.
241d9cea 4467
1f15779e
KR
44682004-07-29 Kevin Ryde <user42@zip.com.au>
4469
4470 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
4471
48360eb3
KR
44722004-07-28 Kevin Ryde <user42@zip.com.au>
4473
4474 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
4475 safety.
4476
c3f3c841
KR
4477 * unif.c (scm_array_set_x): For svect, use scm_num2short for
4478 consistency with other vector types and to get arg and func name into
4479 error message.
4480
c82f8ed6
MV
44812004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4482
4483 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
4484 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
4485 scm_from_bool, respectively.
4486 (SCM_NINUMP): Added.
241d9cea 4487
c82f8ed6
MV
4488 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
4489 deprecated.h. Replaced all uses with scm_is_eq.
4490
317b4c4a
KR
44912004-07-24 Kevin Ryde <user42@zip.com.au>
4492
4493 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
4494 * posix.c (scm_crypt): Use it to protect static data in crypt().
4495
e11e83f3
MV
44962004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4497
4498 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 4499 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
4500 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
4501 versions to deprecated.h and deprecated.c. Changed all uses to
4502 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
4503 scm_from_*, as appropriate.
4504
4505 * dynwind.c (scm_i_dowinds): Removed unused code that would call
4506 the unexisting scm_cross_dynwind_binding_scope for inums on the
4507 windlist.
241d9cea 4508
a55c2b68
MV
45092004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4510
4511 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 4512 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
4513 byte-wise address to a SCM integer. Changed all uses.
4514 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
4515 scm_to_ipv6 and added type and range checking, for converting from
4516 an IPv& byte-wise address to a SCM integer. Changed all uses.
4517 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
4518 is now done by scm_to_ipv6.
241d9cea 4519
a55c2b68
MV
4520 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
4521 not accept inexact integers.
4522
4523 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
4524 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
4525 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
4526 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
4527 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
4528 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
4529 fixnum/bignum distinction visible. Changed all uses to
4530 scm_to_size_t or similar.
4531
45322004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4533
4534 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
4535
48a06bd5
KR
45362004-07-10 Kevin Ryde <user42@zip.com.au>
4537
4538 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
4539 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
4540 such a size causes divide-by-zeros in scm_hasher.
4541
052fbfd9
KR
4542 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
4543 leak.
4544
43240c9c
MV
45452004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4546
4547 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
4548 Rewritten using the same logic as scm_to_signed_integer and
4549 scm_to_unsigned_integer, respectively, which is better(tm). Also,
4550 use CHAR_BIT instead of hardcoding 8.
4551 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
4552 SCM_I_LLONG_MIN etc. instead.
241d9cea 4553
43240c9c
MV
4554 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
4555 SCM_I_MAKINUM and changed all uses.
4556 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
4557
a3de8e7b
MV
4558 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
4559 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
4560 them by assuming twos-complement.
4561
c9eb03bb
MV
45622004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4563
4564 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
4565 configure now produces.
4566 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
4567 definitions, giving the limits of the integer types defined by
4568 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
4569 LLONG_MIN or LONG_LONG_MIN is hard to get at.
4570
4571 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
4572 SHORT_MIN.
4573 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
4574 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
4575 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
4576 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
4577 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
4578 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
4579 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
4580 scm_from_uintmax): New.
241d9cea 4581
7888309b
MV
45822004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4583
4584 * tags.h (scm_is_eq): New.
4585
4586 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
4587 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
4588 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
4589 scm_from_bool, and scm_is_bool, respectively.
4590
4591 * boolean.h (scm_is_bool): Fix bug in prototype.
4592 (scm_from_bool): The argument is "x" not "f", stupid.
4593
4594 * boolean.c (scm_is_bool): Fix typo.
4595
4596 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
4597 scm_is_unsigned_integer, scm_to_signed_integer,
4598 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
4599 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
4600 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
4601 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
4602 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
4603 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
4604 New.
241d9cea 4605
800570a6
MV
46062004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4607
4608 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
4609 scm_to_bool): New.
4610
9fcf3cbb
DH
46112004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4612
4613 * backtrace.c (display_expression, display_frame): Call
4614 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
4615 single memoized expression.
4616
4617 * debug.c (memoized_print): Don't try to unmemoize the memoized
4618 object, since we can't know whether it holds a single expression
4619 or a body.
4620
4621 (scm_mem_to_proc): Removed check for lambda expression, since it
4622 was moot anyway. Whoever uses these functions for debugging
4623 purposes should know what they do: Creating invalid memoized code
4624 will cause crashes, independent of whether this check is present
4625 or not.
4626
4627 (scm_proc_to_mem): Take the closure's code as it is and don't
4628 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
4629 memoized code should not be modified.
4630
4631 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
4632 scm_unmemoize from public use, but made scm_i_unmemoize_expr
4633 available as a guile internal function instead. However,
4634 scm_i_unmemoize_expr will only work on memoized objects that hold
4635 a single memoized expression. It won't work with bodies.
4636
4637 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
4638 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
4639 i. e. a list of expressions.
4640
4641 * eval.c (unmemoize_exprs): Drop internal body markers from the
4642 output during unmemoization.
4643
4644 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
4645 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
4646 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
4647 as guile internal functions instead. scm_i_unmemoize_expr will
4648 only work on a single memoized expression, while
4649 scm_i_unmemocopy_body will only work on bodies.
4650
90df793f
DH
46512004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4652
4653 * eval.c (unmemoize_exprs): Handle semi-memoized code.
4654
4655 (scm_cons_source, scm_primitive_eval): Prefer higher level
4656 predicate SCM_FALSEP over SCM_IMP.
4657
8048c00b
RB
46582004-06-15 Rob Browning <rlb@defaultvalue.org>
4659
4660 * script.c (scm_shell_usage): minor phrasing change.
4661
4662 * gc_os_dep.c: update ifdefery for macosx.
4663 (scm_get_stack_base): separate result initialization from
4664 declaration to slience warnings with macosx and hp-ux using gcc
9a5fa6e9 4665 3.3. Thanks to Andreas Vögele.
8048c00b 4666
d93294d4
HWN
46672004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
4668
4669 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
4670
212e58ed
DH
46712004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4672
4673 * list.[ch] (scm_i_finite_list_copy): New internal function to
4674 copy lists that are known to be finite (though not necessarily
4675 proper).
4676
4677 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
4678 a closure's argument list like an expression of a body.
4679
4680 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
4681 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
4682 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
4683 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
4684 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
241d9cea 4685 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
212e58ed
DH
4686 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
4687 unmemoize_builtin_macro): New static functions and symbols.
4688
4689 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
4690 now has a slightly different meaning: The memoized form that is
4691 receives as its argument is now interpreted as a sequence of
4692 expressions from a body.
4693
4694 (unmemocar, scm_unmemocar): Since the whole functionality of
4695 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4696 has its old content back and is deprecated, while unmemocar has
4697 been removed.
4698
4699 (SCM_BIT7): Removed.
4700
4701 (CEVAL): For unmemoizing a single expression, call
4702 unmemoize_expression instead of scm_unmemocopy, which now expects
4703 a sequence of body expressions. Eliminated unnecessary empty
4704 environment frame when executing let* forms. Eliminated
4705 unmemoization step from evaluator.
4706
9ccea370
MV
47072004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4708
4709 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4710 macroexp and made static. Added new version of scm_macroexp that
4711 emits a deprecation warning and then calls macroexp.
4712 (scm_m_undefine): Issue deprecation warning.
241d9cea 4713
57d23e25
DH
47142004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4715
4716 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4717 Modified to make set! work on symbols that represent syntactic
4718 keywords.
4719
141521ad
HWN
47202004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4721
4722 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4723 compound expression as lvalue errors.
4724
7c2f56a4
MV
47252004-05-24 Marius Vollmer <mvo@zagadka.de>
4726
4727 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4728 WINDER_DATA to a SCM.
4729
366ecaec
DH
47302004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4731
4732 * goops.c (compute_getters_n_setters, create_standard_classes,
4733 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4734 lambda expression rather than creating them with scm_closure.
4735
26ecfa39
DH
47362004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4737
4738 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4739 misplaced syntactic keywords. This will not work unless guile's
4740 defmacro feature is deprecated.
4741
4742 (scm_m_case): Fixed a bug that caused the list of labels to grow
4743 with every case form.
4744
f865229a
KR
47452004-05-19 Kevin Ryde <user42@zip.com.au>
4746
4747 * numbers.c (scm_round_number): For inum and big, just return x. For
4748 real, use scm_round for 2^54-1 etc problems covered there.
4749
4750 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4751 doesn't provide trunc. This was for when `truncate' was done as a
4752 scm_tc7_dsubr, no longer required.
4753
4754 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4755 to stack marking call, two parameters and no cast on t->base.
4756
63947c7a
MV
47572004-05-18 Marius Vollmer <mvo@zagadka.de>
4758
4759 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4760 processed hashtables back into the weak_hashtables list. Thanks
4761 to Bill Schottstaedt!
4762
e7313a9d
DH
47632004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4764
4765 * eval.c (unmemoize_quote): New static function.
4766
4767 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4768 representation of 'quote' and '@slot-ref' to an improper list.
4769 This reduces execution time, the number of cells used to hold the
4770 memoized code, and thus also reduces garbage collection time.
4771
4772 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4773
4774 (SCM_CEVAL): Changed macro handling to also work with macros that
4775 return improper lists. Added an assertion, that the code returned
4776 by a macro transformer will not lead to cycles in the memoized
4777 code.
4778
e5156567
DH
47792004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4780
4781 No functional change, just rearrangements of functions within the
4782 file.
4783
4784 * eval.c (scm_ilookup, scm_unbound_variable_key,
4785 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4786 the definitions used for execution, since that's where they will
4787 belong to later.
4788
651f07f8
DH
47892004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4790
4791 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4792 throughout guile, has not been part of an official release yet,
4793 and the concept of sloppy predicates has never been a good idea.
4794
4795 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4796 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4797 Simplified.
4798
770e048f
DH
47992004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4800
4801 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4802 to make explicit what happens.
4803
2ff08405
DH
48042004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4805
4806 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4807 explicit what happens.
4808
4809 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4810 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4811
89afb9cd
MV
48122004-05-11 Marius Vollmer <mvo@zagadka.de>
4813
4814 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4815 is indeed a procedure when it isn't a number.
4816
3d5ebfa9
MV
48172004-05-10 Marius Vollmer <mvo@zagadka.de>
4818
4819 Convert floating point numbers into strings with an arbitrary
4820 radix. Thanks to Richard Todd!
241d9cea 4821
3d5ebfa9
MV
4822 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4823 fit.
4824 (fx): Removed.
4825 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4826 number_chars): New, to support variable radices.
4827 (idbl2str): Use above instead of the old base-10 only tables.
4828 (iflo2str): Pass on new RADIX argument to idbl2str.
4829 (scm_number_to_string): Pass radix to iflo2str.
4830 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4831 iflo2str.
4832 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4833 possible radices.
4834
3ae69bb4
KR
48352004-05-10 Kevin Ryde <user42@zip.com.au>
4836
4837 * numbers.c (scm_logbit_p): Correction to test above the end of an
4838 inum. Reported by Jan Konecny.
4839
27968825
MV
48402004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4841
4842 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4843 scm_t_bits. Updated all users.
4844 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4845 duplicating the code.
4846 (SCM_CELL_OBJECT_LOC): New.
4847 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4848 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4849
4850 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4851 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4852 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4853 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4854 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4855 SCM_SMOB_OBJECT_3_LOC): New.
4856 * smob.c (scm_i_set_smob_flags): New function.
4857
4858 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4859 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4860 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4861 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4862 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4863 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4864
4865 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4866 taking the address of SCM_CELL_WORD_1, the latter being no longer
4867 an lvalue.
4868
4869 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4870 of casting SCM_CELL_WORD_LOC.
4871
3cf17ef0
KR
48722004-05-02 Kevin Ryde <user42@zip.com.au>
4873
37026925 4874 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
9a5fa6e9 4875 --disable-deprecated. Reported by Andreas Vögele.
37026925 4876
3cf17ef0 4877 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
9a5fa6e9 4878 particular on HP-UX). Reported by Andreas Vögele.
3cf17ef0 4879
c5854598
KR
4880 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4881 code has support for. Fixes building with AIX cc, which is ansi but
4882 doesn't define __STDC__. Reported by Keith Crane.
4883 (var_start): Remove macro, this variation no longer required.
4884 (scm_list_n): Use va_start directly.
4885
f26c1a32
KR
48862004-05-01 Kevin Ryde <user42@zip.com.au>
4887
4888 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
9a5fa6e9 4889 is now gone. Reported by Andreas Vögele.
f26c1a32 4890
dfa6017e
KR
48912004-04-28 Kevin Ryde <user42@zip.com.au>
4892
4893 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4894 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4895 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
9a5fa6e9 4896 subscript. Reported by Andreas Vögele.
dfa6017e
KR
4897 Also cast through unsigned char to avoid passing negatives to those
4898 macros if input contains 8-bit values.
4899
4900 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4901 corrections to range check for signed numbers. Remove
4902 scm_remember_upto_here_1(num) from these checks, since num is used
4903 subsequently anyway.
4904
4905 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4906 avoid warning from gcc 3.4. Reported by Hyperdivision.
241d9cea 4907
dfa6017e
KR
4908 * numbers.c (scm_bit_extract): Use min instead of MIN.
4909 (MIN): Remove, this conflicts with similar macro defined by limits.h
9a5fa6e9 4910 on HP-UX. Reported by Andreas Vögele.
dfa6017e
KR
4911
4912 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
9a5fa6e9 4913 particular on HP-UX). Reported by Andreas Vögele.
dfa6017e 4914
a0d06a00 4915 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
9a5fa6e9 4916 Reported by Andreas Vögele.
a0d06a00 4917
dfa6017e
KR
4918 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4919 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
9a5fa6e9 4920 by Andreas Vögele.
dfa6017e 4921
36245b66
DH
49222004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4923
4924 * eval.c (s_macro_keyword): New static identifier.
4925
4926 (scm_m_define): Change order to first create binding and
4927 evaluating the expression afterwards.
4928
4929 (scm_m_set_x): Memoize complete set! expression. Only leave
4930 symbols if no binding exists at memoization time. Throw error if
4931 assigning to a syntactic keyword.
4932
4933 (lazy_memoize_variable): New function.
4934
4935 (CEVAL): When execution set!, perform lazy memoization if
4936 unmemoized symbol is detected.
4937
4938 * modules.c (module_variable): Return variables with unbound
4939 value.
4940
4941 * tags.h: Fix comment.
4942
4d81111e
KR
49432004-04-25 Kevin Ryde <user42@zip.com.au>
4944
da8bcb2f
KR
4945 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4946 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4947 in 8-bit locales, and ensures consistency with char-upper-case? and
4948 char-lower-case? which already use ctype.h.
4949 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4950 Remove.
4951 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4952
4d81111e
KR
4953 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4954 call. Reported by Hyperdivision.
4955
4956 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4957 Reported by Hyperdivision.
4958
4959 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4960 Hyperdivision.
4961
7e6e6b37
DH
49622004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4963
4964 Hide the implementation of ilocs and isyms in eval.c.
4965
4966 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4967 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4968 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4969 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4970 eval.h to eval.c.
4971
4972 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4973 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4974 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4975 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4976 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4977 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4978 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4979 renamed to ISYMNUM.
4980
4981 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4982 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4983 Extracted printing of ilocs and isyms to guile internal functions
4984 scm_i_print_iloc, scm_i_print_isym of eval.c.
4985
caab294f
KR
49862004-04-22 Kevin Ryde <user42@zip.com.au>
4987
7aaf4758
KR
4988 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4989
caab294f
KR
4990 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4991 rounding in x+0.5 when x is a big value already an integer. In
4992 certain hardware rounding cases x+0.5 can give an adjacent integer,
4993 leading to that as the result, when we really just wanted x itself.
241d9cea 4994
b1cb24ff
DH
49952004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4996
4997 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4998
4999 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
5000 added const qualifiers, cast intentionally unused expressions to
5001 void for emphasis, improved comment.
5002
5065b40d
DH
50032004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5004
5005 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
5006 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
5007 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
5008 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
5009 Defined the tc8-tag for flags to be 0x04, which will mean that
5010 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
5011 to the reduced number of bits and the simpler bit pattern for
5012 SCM_BOOL_F, certain machines may be able to use more efficient
5013 processor instructions to deal with SCM_BOOL_F.
5014
5015 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
5016 never been defined in a released version, thus no need to
5017 deprecate them.
5018
5019 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
5020 instead of tc9 tags.
5021
5022 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
5023 of tc9 tags.
5024
5025 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
5026 could have used this definition.
5027
5028 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
5029 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
5030 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
5031 as isyms, as special isyms don't exist any more.
5032
9fa6c119
KR
50332004-04-18 Kevin Ryde <user42@zip.com.au>
5034
e08d2eee
KR
5035 * filesys.c (scm_readdir): Use readdir_r when available, for thread
5036 safety.
5037
9fa6c119
KR
5038 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
5039 explicit swapping code.
5040
c9cdd396
KR
50412004-04-15 Kevin Ryde <user42@zip.com.au>
5042
5043 * cpp_sig_symbols.in: Add SIGSYS.
241d9cea 5044
c9cdd396
KR
5045 * list.c (scm_append_x): Use iterative style, to avoid non-tail
5046 recursion.
5047
5048 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
5049 frac/big and frac/frac, use scm_less_p for exact comparison.
5050
83ac9c59
KR
5051 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
5052 with big/inum.
5053
84a4be9a
KR
5054 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
5055
84fad130
HWN
50562004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
5057
6b69393d
HWN
5058 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
5059
84fad130 5060 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
241d9cea 5061 scm_c_{up,down}case.
84fad130 5062 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
241d9cea 5063 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
84fad130 5064
c3110a30
KR
50652004-04-06 Kevin Ryde <user42@zip.com.au>
5066
0b288f36
KR
5067 * numbers.c (scm_ash): Remove stray "}" in docstring.
5068
ea2508c8
KR
5069 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
5070 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
5071 calling mpz_cmp_ui in most cases.
5072
c3110a30
KR
5073 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
5074 for big == abs(most-negative-fixnum) special case.
5075 (abs_most_negative_fixnum): Remove, no longer used.
5076
5077 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
5078 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
5079 calling (sigaction NSIG).
5080
5081 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
5082 and fork error cases to do this.
5083
dec40cd2
DH
50842004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5085
5086 * eval.c (CEVAL): Don't distinguish between short and long
5087 instructions when dispatching - just always dispatch on the
5088 instruction code, which is common for short and long instructions.
5089 Further, removed unnecessary goto statements and added comment.
5090
0e7bb795
DH
50912004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5092
5093 * eval.c (scm_unmemocopy): Don't distinguish between short and
5094 long instructions when dispatching - just always dispatch on the
5095 instruction code, which is common for short and long instructions.
5096 Further, removed unnecessary goto statements, fixed indentation
5097 and replaced SCM_IMP predicates by SCM_NULLP.
5098
f9986767
DH
50992004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5100
5101 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
5102 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
5103 'checkmacro'.
5104
fbc42231
KR
51052004-03-31 Kevin Ryde <user42@zip.com.au>
5106
5107 * simpos.c: Include <signal.h> for SIG_IGN and friends.
5108
434f2f7a
DH
51092004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5110
5111 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
5112 SCM_DEBUGGINGP:
5113
5114 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
5115 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
5116 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
5117 single interface that also matches the naming conventions.
5118 Probably scm_debug_mode_p should be part of the private interface
5119 anyway.
5120
5121 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
5122 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
5123 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
5124 to scm_debug_mode_p.
5125
5126
5127 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
5128
5129 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
5130 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
5131 from debug.h to eval.h.
5132
5133 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
5134 more, just leave it with setting scm_debug_mode_p, which is
5135 equivalent for practical purposes.
5136
5137 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
5138 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
5139
5140 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
5141
5142 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
5143 static and renamed it to ceval throughout. Provide a new exported
5144 but deprecated function scm_ceval as a wrapper for backwards
5145 compatibility. The same is done for the deval/scm_deval pair of
5146 functions.
5147
5148 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
5149 throughout. Defined CEVAL to ceval or deval, based on compilation
5150 phase.
5151
5152 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
5153 to ceval and deval instead of calling *scm_ceval_ptr.
5154
5155 * eval.c (dispatching_eval): New deprecated static function.
5156
5157 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
5158 to emulate its old behaviour as closely as possible.
5159
5160
5161 Change the evaluator such that only expressions for which pair? is
5162 true are passed to CEVAL, and such that all other expressions are
5163 evaluated outside of CEVAL:
5164
5165 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
5166 expression that is assumed to be memoized already. All but
5167 expressions of the form '(<form> <form> ...)' are evaluated inline
5168 without calling an evaluator.
5169
5170 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
5171 expressions of the form '(<form> <form> ...)' inline without
5172 calling an evaluator.
5173
5174 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
5175 the special case of unmemoized symbols passed on the top level.
5176
5177 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
5178 is known that the expression passed to CEVAL is of the form
5179 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
5180 now it is known that the input expression of CEVAL is a pair.
5181
51822004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5fb64383
DH
5183
5184 * eval.c (is_self_quoting_p): New static function.
5185
5186 (scm_m_quote): Use is_self_quoting_p.
5187
5188 (copy_tree): Corrected typo in comment.
5189
702551e6
HWN
51902004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
5191
bfefbf18
HWN
5192 * eval.c (s_scm_copy_tree): idem.
5193
5194 * list.c (s_scm_filter): remove "pointer" from doc string.
5195
702551e6
HWN
5196 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
5197
5198 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
5199
5200 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
5201 (display_frame): idem.
5202 (display_backtrace_file_and_line): idem.
5203
5204 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
5205 arguments.
5206
3cd23214
KR
52072004-03-26 Kevin Ryde <user42@zip.com.au>
5208
88a7ae1f
KR
5209 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
5210
3cd23214
KR
5211 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
5212 big==0 since that never occurs.
5213
5214 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
5215 scm_modular_expt, matching scheme level name `modulo-expt'.
5216
5217 * numbers.c (scm_modular_expt): Return a negative remainder for a
5218 negative divisor, the same as `modulo' does.
5219
52202004-03-26 Eric Hanchrow <offby1@blarg.net>
5221
5222 * numbers.c, numbers.h (scm_modular_expt): New function.
5223
2926035a
KR
52242004-03-25 Kevin Ryde <user42@zip.com.au>
5225
5226 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
5227 return inexact as required by r5rs.
5228
62360b89
DH
52292004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5230
5231 * eval.c: Separated some definitions relevant for execution from
5232 the memoization part of the file.
5233
5234 (copy_tree): New static function
5235
5236 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
5237 structures are detected now and will lead to an exception instead
5238 of forcing guile to run in an endless loop, using up all the
5239 system's memory. Second, arrays in the cdr of an improper list
5240 are now copied. See the new test cases in eval.test.
5241
52422004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
b28f5b3c
DH
5243
5244 * posix.c (scm_gethostname): Make sure len is initialised before
5245 it is used. Restructured to (hopefully) represent possible
5246 configurations more clearly in the code. Added unwind handler.
5247
3bd3bae8
KR
52482004-03-23 Kevin Ryde <user42@zip.com.au>
5249
5250 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
5251 MAXHOSTNAMELEN when available.
5252
254bf78d
MV
52532004-03-21 Marius Vollmer <mvo@zagadka.de>
5254
5255 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
5256 terminator. Rewritten the logic as a state machine, I must have
5257 been doing too much VHDL lately...
5258
5259 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
5260 themselves. Thanks to Han-Wen Nienhuys!
5261
5262 * list.c: Changed docstrings so that they no longer talk about
5263 returning 'pointers' to something.
5264
009c34a2
HWN
52652004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5266
5267 * gc.c: remove set_debug_cell_accesses! when
5268 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
5269 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
5270 debugging conditionally.
241d9cea 5271
54733c95
KR
52722004-03-21 Kevin Ryde <user42@zip.com.au>
5273
5274 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
5275
bbaf8747
KR
52762004-03-20 Kevin Ryde <user42@zip.com.au>
5277
5278 * posix.c (scm_gethostname): Preserve errno across free() call.
5279
726f82e7
HWN
52802004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
5281
5282 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
5283 free cells.
5284
e1350d6a
KR
52852004-03-14 Kevin Ryde <user42@zip.com.au>
5286
5287 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
5288 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
5289
62055253
KR
52902004-03-07 Kevin Ryde <user42@zip.com.au>
5291
5292 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
5293 than "GMT" always.
5294 (filltime): Make zname parameter "const".
5295
92e64b87
MD
52962004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
5297
5298 * threads.c, threads.h (scm_c_scm2thread): New function.
5299
004ad931
KR
53002004-02-29 Kevin Ryde <user42@zip.com.au>
5301
5302 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
5303 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
5304 particular don't assume "defined (__alpha__) && ! defined (linux)"
5305 means OSF. Remove "SCO" code, which was not really SCO specific and
5306 which John W. Eaton advises should be long past being needed.
5307
5308 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
5309 error throw.
5310
72ea45ac
KR
53112004-02-24 Kevin Ryde <user42@zip.com.au>
5312
5313 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
5314
2af0602e
KR
53152004-02-22 Kevin Ryde <user42@zip.com.au>
5316
5317 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
5318 complex, same as for two args. (Handle only inum, big, real, frac).
5319
b114eafe
KR
53202004-02-21 Kevin Ryde <user42@zip.com.au>
5321
5322 * posix.c (scm_crypt): Use new HAVE_CRYPT.
5323 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 5324 Reported by Andreas Voegele.
b114eafe 5325
1e55d288
NJ
53262004-02-20 Neil Jerram <neil@ossau.uklinux.net>
5327
5328 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
5329 validation.
5330
5331 * read.c (scm_lreadparen): Removed.
5332 (scm_lreadparen1): Renamed scm_i_lreadparen.
5333
eb741d98
HWN
53342004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5335
5336 * list.c (scm_list_n): validate non-immediate arguments;
5337 this will catch forgotten a SCM_UNDEFINED.
5338
4e28ba5e
MV
53392004-02-18 Marius Vollmer <mvo@zagadka.de>
5340
5341 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
5342 Thanks to Bill Schottstaedt!
241d9cea 5343
4e28ba5e
MV
5344 * socket.h (scm_gethost): Removed prototype it is already in
5345 "net_db.h". Thanks to Bill Schottstaedt!
241d9cea 5346
ef861ead
KR
53472004-02-18 Kevin Ryde <user42@zip.com.au>
5348
5349 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
5350 order parameter to mpz_import, in fact with just one word there's no
5351 order to worry about at all.
5352
5353 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
5354 and frac==complex, make an exact comparison rather than converting
5355 with fraction2double.
5356
5357 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
5358 shared library, since environ is not directly available there.
5359
5360 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
5361 standard.
5362
5363 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
5364 errno EINVAL in case localtime and gmtime don't set it.
5365 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
5366 SCM_SYSERROR, since mktime and strptime generally don't set errno.
5367
ae43d08e 53682004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 5369
c9ea6462
KR
5370 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
5371 which were permitted in the past for these.
5372
292dfa7f
KR
5373 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
5374 previous change to numbers.c.
5375
ae43d08e
KR
5376 * script.c (scm_shell_usage): Print bug-guile email address, as per
5377 GNU standard. Reported by Han-Wen Nienhuys.
5378
711a9fd7
MD
53792004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5380
5381 * unif.c (scm_make_uve): Removed local variable and simplified
5382 code in order to avoid compiler used uninitialized warnings.
5383
5384 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
5385 scm_hash_map.
5386 (scm_hash_fold): Use scm_call_3 directly in the call to
5387 scm_internal_hash_fold instead of going via fold_proc (which is
5388 now removed).
5389 (scm_hash_for_each): Use a trampoline +
5390 scm_internal_hash_for_each_handle.
5391 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
5392 functions.
5393
3da7f6b2
KR
53942004-02-12 Kevin Ryde <user42@zip.com.au>
5395
344a212f
KR
5396 * ports.c (scm_port_line): In docstring, note first line is 0.
5397 (scm_set_port_line_x): In docstring, note first line is 0.
5398 (scm_port_column): In docstring, there's no default to current input
5399 port, and remove shared port-line @defun.
5400 (scm_set_port_column_x): In docstring, there's no default to current
5401 input port, note first column is 0, remove shared set-port-line!
5402 @defun.
5403
3da7f6b2
KR
5404 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
5405 convert args the same way that array-set! does.
5406
5407 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
5408 for dvect.
5409 (scm_array_p): Add missing "break"s in switch, fix llvect test look
5410 for "l" not "s", fix dvect to be false for singp(prot) since such a
5411 value is for fvect.
5412 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
5413 (exactly_one_third): New variable.
5414 (scm_init_unif): Initialize it.
3da7f6b2 5415
cd21f5eb
NJ
54162004-02-10 Neil Jerram <neil@ossau.uklinux.net>
5417
5418 * read.c (scm_read_opts): Change `escaped-parens' to
5419 `elisp-strings'.
5420
16353acc
NJ
54212004-02-08 Neil Jerram <neil@ossau.uklinux.net>
5422
5423 * read.c (scm_read_opts): New opts `elisp-vectors' and
5424 `escaped-parens'.
5425 (s_vector): New.
5426 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
5427 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
5428 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
5429 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
5430 `escaped-parens' option set.
5431 (scm_read_token): If elisp vector syntax active, disallow [ and ]
5432 in tokens.
5433 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
5434 (scm_lreadparen1): New.
5435
5436 * read.h: Remove conditionally compiled last arg to
5437 scm_lreadparen.
5438 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
241d9cea 5439
f62b9dff
HWN
54402004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
5441
5442 * eval.c (m_expand_body): remove stray variable new_body.
5443
ef5b6b61
MV
54442004-01-22 Marius Vollmer <mvo@zagadka.de>
5445
5446 * eval.c (m_expand_body): Rewrite the expression in place (by
5447 overwriting FORMS) also when a letrec is constructed, not only
5448 when no definitions are found. Do not return rewritten expression
5449 to emphasize the in-place rewriting. Changed all users.
5450
7eec4c37
HWN
54512004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
5452
5453 * gc.c: add protected_object_count, a number that is dumped from
5454 gc_stats()
5455
25ffbdac
MV
54562004-01-11 Marius Vollmer <mvo@zagadka.de>
5457
5458 * dynwind.h, dynwind.c (scm_frame_unwind,
5459 scm_frame_unwind_handler): Renamed and changed all uses.
5460 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
241d9cea 5461
08568c95
KR
54622004-01-11 Kevin Ryde <user42@zip.com.au>
5463
5464 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
5465 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
5466 changes made to scheme-compound.texi.
5467
5565749c
MV
54682004-01-10 Marius Vollmer <mvo@zagadka.de>
5469
25ffbdac
MV
5470 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
5471 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
5472
5473 * guile-snarf.in: Use mkdir to create a unique temporary directory
5474 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 5475
fc6bb283
MV
54762004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5477
7ebccde8
MV
5478 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
5479 argument since it is always zero now. Changed all callers.
5480 Removed code for handling fluids.
96e3b2f8
MV
5481
5482 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
5483 the wind chain explicitely. Use scm_c_with_fluid for the common
5484 case of only one fluid.
5485 (scm_with_fluid): New.
5486 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
241d9cea 5487
fc6bb283 5488 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
5489 (scm_with_fluid): New.
5490 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
5491
5492 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
5493 do the unwinding directly. It is simple enough.
241d9cea 5494
fc6bb283
MV
5495 * dynwind.h, dynwind.c: Did the following renamings:
5496 scm_begin_frame -> scm_frame_begin,
5497 scm_end_frame -> scm_frame_end,
5498 scm_on_unwind -> scm_frame_unwind,
5499 scm_on_rewind -> scm_frame_rewind,
5500 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
5501 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
5502 Changed all uses.
5503
5504 * aync.h, async.c: Did the follwing renamings:
5505 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
5506 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
5507 Changed all uses.
241d9cea 5508
fc6bb283
MV
5509 * ports.h, ports.c: Did the follwing renamings:
5510 scm_with_current_input_port -> scm_frame_current_input_port,
5511 scm_with_current_output_port -> scm_frame_current_output_port,
5512 scm_with_current_error_port -> scm_frame_current_error_port.
5513 Changed all uses.
5514
298ab996
KR
55152004-01-07 Kevin Ryde <user42@zip.com.au>
5516
5517 * numbers.c (s_bignum): Remove, not used since gmp bignums.
5518 Reported by Richard Todd.
5519
ba40113e
KR
5520 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
5521 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
5522
298ab996
KR
5523 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
5524 traversing the args list, fixes segv if an improper list is given.
5525 Reported by Rouben Rostamian.
5526
aacff585
MV
55272004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5528
5529 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
5530 swap_data on stack, use a 'malloc obj'.
5531
5532 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
5533 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
5534 scm_i_... since they are internal. Changed all uses.
5535
5536 * dynwind.c (frame_print): Removed, use the default printer.
5537 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
5538 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
5539 to protect SCM values.
241d9cea 5540
aacff585
MV
5541 * dynwind.h (SCM_F_WIND_EXPLICITELY,
5542 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
5543 Changed all uses.
5544 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
241d9cea 5545
49c00ecc
MV
55462004-01-05 Marius Vollmer <mvo@zagadka.de>
5547
5548 * ports.h, ports.c (scm_with_current_input_port,
5549 scm_with_current_output_port, scm_with_current_error_port): New.
5550
5551 * async.h, async.c (scm_with_blocked_asyncs,
5552 scm_with_unblocked_asyncs): New.
5553
dab514a8
MV
55542004-01-03 Marius Vollmer <mvo@zagadka.de>
5555
5556 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
5557 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
5558 New.
5559 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
5560 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
5561 function when the outermost wind point has been reached. The
5562 latter is used to copy a continuation stack at the right time.
5563 scm_dowinds remains available.
5564 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
5565 tc16_guard, guards_print): Removed.
5566 (scm_internal_dynamic_wind): Reimplemented using frames.
5567
5568 * continuations.c (copy_stack): New, do only the stack copying
5569 part of copy_stack_and_call.
5570 (copy_stack_and_call): Copy the stack after unwinding and before
5571 rewinding.
5572 (scm_dynthrow): Do not call scm_dowinds, this is now done by
5573 copy_stack_and_call.
241d9cea 5574
441a25d9
KR
55752004-01-04 Kevin Ryde <user42@zip.com.au>
5576
5577 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 5578 can give bad results due to rounding.
241d9cea 5579
e0499207
KR
5580 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
5581 setzone/restorezone protection for DOS.
5582
89fcf1b4
MV
55832003-12-26 Marius Vollmer <mvo@zagadka.de>
5584
5585 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
5586 and scm_t_uintmax to be defined in scmconfig.h
5587
caff34d4
KR
55882003-12-03 Kevin Ryde <user42@zip.com.au>
5589
5590 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
5591
5592 * numbers.c (scm_make_ratio): Check for numerator equal to
5593 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
5594 giving integer -1.
5595
5596 * numbers.c (scm_real_part): Return fraction unchanged rather than
5597 converting to flonum.
5598
2d0b85ac
DH
55992003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5600
5601 * modules.c (module_variable): Fixed (and thus simplified) the
5602 definition of SCM_BOUND_THING_P to reflect the fact that since
5603 after the 1.4 series of guile, obarrays only hold variable
5604 objects.
5605
2297981d
MV
56062003-11-30 Marius Vollmer <mvo@zagadka.de>
5607
5608 * numbers.c (scm_logand): It's "#b...", not "#\b...".
5609
5610 From Paul Jarc:
5611
5612 * read.c (scm_lreadr): Signal an error for invalid escape
5613 sequences in strings. Code cleanups too.
5614
5615 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
5616 writing control characters in strings.
5617
56182003-11-21 Marius Vollmer <mvo@zagadka.de>
5619
5620 * ports.c (scm_drain_input): Bug fix: only access the port after
5621 checking that it indeed is one.
5622
5c264007
DH
56232003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5624
5625 * eval.c (s_bad_define): New static identifier.
5626
5627 (m_body): Fixed comment.
5628
5629 (scm_m_define): Don't generate memoized code for definitions that
5630 are not on the top level. As a consequence, no memoized code at
5631 all is generated for definitions any more: Top level definitions
5632 are executed immediately during memoization and internal
5633 definitions are handled separately in m_expand_body.
5634
5635 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
5636 definitions. Consequently, there is no unmemoizing code any more
5637 that might modify the environment. Thus, the old scm_unmemocopy
5638 is removed and the old unmemocopy is renamed to scm_unmemocopy.
5639
5640 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
5641 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
5642 over SCM_NIMP in places, where the argument is known to be part of
5643 a proper list.
5644
018d4730
KR
56452003-11-21 Kevin Ryde <user42@zip.com.au>
5646
5647 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
5648 for bignums.
5649
5650 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
5651 to share some shifting.
5652
5653 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
5654 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
5655 since gc does this.
5656
4bca30d8
MV
56572003-11-19 Marius Vollmer <mvo@zagadka.de>
5658
fb16d26e
MV
5659 * numbers.c (scm_make_ratio): Rewritten to have a simpler
5660 structure. Previously, not all cases with a negative denominator
5661 were covered.
5662
4bca30d8
MV
5663 * numbers.c (mem2decimal_from_point): use scm_divide instead of
5664 scm_divide2real when forming the fractional part. This allows
5665 "#e1.2" to yield 6/5.
5666
5667 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
5668 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
5669 fractions were equal to each other regardless of value. Ooops.
5670
5671 * numbers.c (scm_rationalize): Return an inexact result when given
5672 inexact arguments.
5673
5674 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
5675 non-numbers.
5676
bdf26b60
MV
56772003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5678
5679 Support for exact fractions from Bill Schottstaedt! Thanks!
241d9cea 5680
bdf26b60
MV
5681 * print.c (scm_iprin1): Handle fractions.
5682
5683 * objects.h (scm_class_fraction): New.
241d9cea 5684 * objects.c (scm_class_fraction): New.
bdf26b60 5685 (scm_class_of): Handle fractions.
241d9cea 5686
bdf26b60
MV
5687 * hash.c (scm_hasher): Handle fractions.
5688
5689 * numbers.c: New code for handling fraction all over the place.
5690 (scm_odd_p, scm_even_p): Handle inexact integers.
5691 (scm_rational_p): New function, same as scm_real_p.
5692 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
5693 New exact functions that replace the inexact 'dsubr'
5694 implementations.
5695 (scm_numerator, scm_denominator): New.
5696
5697 * numbers.h (SCM_NUMP): Recognize fractions.
5698 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5699 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5700 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5701 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5702 SCM_FRACTION_REDUCED): New.
5703 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5704 New prototypes.
5705 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5706 scm_rational_p): New prototypes.
5707 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5708 scm_i_print_fraction): New prototypes.
241d9cea 5709
bdf26b60
MV
5710 * goops.c (create_standard_classes): Create "<fraction>" class.
5711
5712 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5713
5714 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5715 case in the switch, but do nothing for now.
5716
5717 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5718 to doubles when calling 'dsubr' functions.
5719
5720 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5721
28fda544
RB
57222003-11-18 Rob Browning <rlb@defaultvalue.org>
5723
5724 * gen-scmconfig.c (main): remove public definition of
5725 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5726 direct typedef of long_long and ulong_long inside deprecated block
5727 when appropriate.
5728
5729 * deprecated.h: move long_long and ulong_long definitions to
5730 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5731 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5732
b58e7420
MV
57332003-11-17 Marius Vollmer <mvo@zagadka.de>
5734
9a1d7d7c
MV
5735 * hash.c (scm_string_hash): New hashing algorithm that takes the
5736 complete string into account.
5737
b58e7420
MV
5738 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5739 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
5740 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5741 SCM_ASSYNT.
b58e7420
MV
5742
5743 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5744 the "-e" option instead of scm_str2symbol. This allows things
5745 like (@ ...) to be specified for the entry point.
5746
461bffb1
DH
57472003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5748
5749 * eval.c (scm_m_letstar): Create memoized code in place to
5750 minimize consing.
5751
6f81708a
DH
57522003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5753
5754 * eval.c (s_splicing): Commented and reformulated.
5755
5756 (lookup_global_symbol, lookup_symbol): New static functions.
5757
5758 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5759
5760 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5761 creating a temporary pair for scm_lookupcar.
5762
5763 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5764 created deprecated wrapper function scm_unmemocar.
5765
5766 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5767 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5768 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5769 undefineds, sym_three_question_marks): Moved around without
5770 modifications.
5771
5772 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5773
910b5125
DH
57742003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5775
5776 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5777 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5778 No further modifications.
5779
c86c440b
DH
57802003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5781
5782 * eval.c (s_mixed_body_forms): New static identifier.
5783
5784 (canonicalize_define, scm_m_define): The check for a bad
5785 expression is performed in canonicalize_define now.
5786
5787 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5788 static helper functions for m_expand_body.
5789
5790 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5791 expand user defined macros. Fixed handling of the definition/
5792 expression boundary. Fixed handling of definitions grouped with
5793 'begin. Use canonicalize_define to expand definitions.
5794
3890131a
MV
57952003-11-13 Marius Vollmer <mvo@zagadka.de>
5796
b58e7420
MV
5797 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5798 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5799
5df36eac
MV
5800 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5801 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5802 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5803 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5804 New macros from Paul Jarc. Thanks!
5805
3890131a
MV
5806 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5807 return NULL when the machine type is unknown. Previously,
5808 gc_os_dep.c would refuse to compile.
5809
430b8401
DH
58102003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5811
5812 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5813 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5814 scm_m_body to m_body.
5815
328dc9a3
DH
58162003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5817
5818 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5819 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5820 scm_m_expand_body to m_expand_body and made it static. Added
5821 deprecated wrapper scm_m_expand_body.
5822
5823 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5824 of scm_m_expand_body.
5825
c2337a61
KR
58262003-11-09 Kevin Ryde <user42@zip.com.au>
5827
5828 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5829 argument. Reported by Mike Gran.
5830
ced8edb0
DH
58312003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5832
5833 * eval.c (s_missing_body_expression): New static identifier.
5834
5835 (s_body): Removed.
5836
5837 (scm_m_expand_body): Fixed core dump when passing a body with
5838 defines, but without expressions (see additions to syntax.test).
5839 Use ASSERT_SYNTAX to signal syntax errors.
5840
0f572ba7
DH
58412003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5842
5843 * eval.c (canonicalize_define): New static helper function.
5844
5845 (memoize_define, canonicalize_define): Extract handling of
5846 function currying to canonicalize_define.
5847
2510c810
DH
58482003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5849
5850 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5851 Make sure that error checking in debug mode is not worse than in
5852 standard mode.
5853
34adf7ea
DH
58542003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5855
5856 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5857 handled in scm_m_body any more, but rather in scm_m_lambda.
5858
5859 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5860 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5861 calling functions of scm_m_body.
5862
5863 (scm_m_lambda): Avoid unnecessary consing when creating the
5864 memoized code.
5865
89bff2fc
DH
58662003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5867
5868 * eval.c (s_expression): Added comment.
5869
5870 (s_empty_combination, error_unbound_variable): New static
5871 identifiers.
5872
5873 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5874 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5875 signal syntax errors.
5876
5877 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5878 scheme objects.
5879
60a49842
DH
58802003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5881
5882 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5883 Grouped together with unmemocopy, without modifications.
5884
5885 (build_binding_list, unmemocopy): Renamed names of list arguments
5886 and variables to reflect the actual order of the list elements.
5887
70c1c108
DH
58882003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5889
5890 * eval.c (s_defun): New static identifier.
5891
5892 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5893 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5894 when creating the memoized code.
5895
0ee39677
KR
58962003-10-19 Kevin Ryde <user42@zip.com.au>
5897
5898 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5899
5900 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5901 in accordance with R5RS, which just mpz_get_d doesn't really give.
5902
9a848baf
DH
59032003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5904
5905 * eval.c (s_bad_slot_number): New static identifier.
5906
5907 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5908 signal syntax errors. Avoid unnecessary consing when creating the
5909 memoized code.
5910
da48db62
DH
59112003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5912
5913 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5914 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5915 errors. Avoid unnecessary consing when creating the memoized
5916 code.
5917
5918 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5919 standard case. Make sure line and file information are copied to
5920 every created expression.
5921
82b3e2c6
DH
59222003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5923
5924 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5925 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5926 when creating the memoized code.
5927
5928 (scm_m_atbind): Reversed the order, in which the init expressions
5929 are stored and executed. The order of execution is now equal to
5930 the order in which the initializers of the let-forms are executed.
5931 Use check_bindings and transform_bindings.
5932
5933 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5934 !SCM_NULLP. Added some comments.
5935
21628685
DH
59362003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5937
5938 * eval.c: Sorted include files alphabetically.
5939
5940 (scm_m_begin): Added comment.
5941
5942 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5943 unnecessary consing when creating the memoized code.
5944
5945 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5946 syntax errors. Be more specific about the kind of error that was
5947 detected.
5948
5949 (scm_m_quote, unmemocopy): As an optimization, vector constants
5950 are now inserted unquoted into the memoized code. During
5951 unmemoization the quotes are added again to provide syntactically
5952 correct code.
5953
d6754c23
DH
59542003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5955
5956 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5957 scm_m_expand_body, check_bindings): Extracted syntax checking of
5958 bindings to new static function check_bindings.
5959
5960 (scm_m_let, memoize_named_let): Extracted handling of named let to
5961 new static function memoize_named_let.
5962
5963 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5964 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5965 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5966 unnecessary consing when creating the memoized code.
5967
03a3e941
DH
59682003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5969
5970 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5971 static identifiers.
5972
5973 (s_clauses, s_formals, s_duplicate_formals): Removed.
5974
5975 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5976 specific about the kind of error that was detected. Prepare for
5977 easier integration of changes for separated memoization.
5978
da48db62 59792003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
5980
5981 * eval.c (s_duplicate_binding): New static identifier.
5982
5983 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5984
5985 (scm_m_define): Added comment about how we check for duplicate
5986 formals.
5987
5988 (scm_m_do): Added check for duplicate bindings.
5989
5990 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5991 unnecessary consing when creating the memoized code.
5992
5993 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5994 scm_c_improper_memq to c_improper_memq, since it is not exported.
5995
5996 (transform_bindings): Call scm_c_memq rather than
5997 scm_c_improper_memq.
5998
5999 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
6000
da48db62 60012003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
6002
6003 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
6004 static identifiers.
6005
6006 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
6007 specific about the kind of error that was detected. Avoid use of
6008 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
6009 code, this way also making sure that file name, line number
6010 information etc. remain available.
6011
da48db62 60122003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
6013
6014 * eval.c (memoize_as_thunk_prototype): New static function.
6015
6016 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
6017 Avoid unnecessary consing when creating the memoized code.
6018
9b9a35b6
KR
60192003-10-12 Kevin Ryde <user42@zip.com.au>
6020
6021 * list.c (scm_append): Track argument number and use in error.
6022
cc56ba80
DH
60232003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6024
6025 * eval.c (s_missing_expression, s_bad_variable): New static
6026 identifiers.
6027
6028 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
6029 R5RS terminology for the naming of variables. Be more specific
6030 about the kind of error that was detected. Make sure file name,
6031 line number etc. are added to all freshly created expressions.
6032 Avoid unnecessary consing when creating the memoized code.
6033
609a8b86
DH
60342003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6035
6036 * eval.c (s_extra_expression, s_misplaced_else_clause,
6037 s_bad_cond_clause, s_missing_recipient): New static identifiers.
6038
6039 (s_extra_case_clause): Removed.
6040
6041 (scm_m_case, scm_m_cond): If a clause appears after an else
6042 clause, report a misplaced else clause.
6043
6044 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
6045 specific about the kind of error that was detected. Handle bound
6046 'else and '=>. Avoid unnecessary consing when creating the
6047 memoized code.
6048
6049 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
6050 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
6051 syntactic keyword '=>.
6052
58a2510b
DH
60532003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6054
6055 * eval.c (scm_m_case): Allow empty lists of case labels.
6056
2a6f7afe
DH
60572003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6058
6059 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
6060
6061 * print.c (scm_isymnames): Add names for the new memoizer codes.
6062
6063 * eval.c (s_missing_clauses, s_bad_case_clause,
6064 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
6065 literal_p): New static identifiers.
6066
6067 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
6068 specific about the kind of error that was detected. Check for
6069 duplicate case labels. Handle bound 'else. Avoid unnecessary
6070 consing when creating the memoized code.
6071
6072 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
6073 the syntactic keyword 'else.
6074
e6729603
DH
60752003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
6076
6077 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
6078 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
6079
6080 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
6081 unnecessary consing when creating the memoized code.
6082
9ddeb776
KR
60832003-10-09 Kevin Ryde <user42@zip.com.au>
6084
6085 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
6086 cast gives for values bigger than a long, or for nan or inf.
6087
df5af69a
DH
60882003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
6089
6090 * smob.h (scm_make_smob_type): Made the declaration match the
6091 definition.
6092
da0e6c2b
MV
60932003-10-07 Marius Vollmer <mvo@zagadka.de>
6094
6095 * goops.c, objects.h, smob.c, smob.h: Make type names char
6096 const * instead of char *. Thanks to Paul Jarc!
6097
591924eb
KR
60982003-10-02 Kevin Ryde <user42@zip.com.au>
6099
ff6ea7b9 6100 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
6101 rather than scm_strport_to_string, so as to guard against the port
6102 having been closed by the called procedure. Reported by Nic Ferrier.
6103
f03314f9
DH
61042003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6105
6106 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
6107
6108 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
6109 tags.h to deprecated.h.
6110
534c55a9
DH
61112003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6112
6113 This set of patches introduces a new tc7 code scm_tc7_number for
6114 numbers. Bignums, reals and complex numbers are turned from smobs
6115 into subtypes of scm_tc7_number.
6116
6117 * tags.h (scm_tc7_number): New.
6118
6119 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
6120 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
6121 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
6122 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
6123 (scm_class_of), print.c (scm_iprin1), smob.c
6124 (scm_smob_prehistory): Don't handle bignums, reals and complex
6125 numbers as subtypes of scm_tc7_smob any more.
6126
6127 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
6128 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
6129
29c4382a
DH
61302003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6131
6132 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
6133 sizeof (scm_t_complex) to determine the memory size of the
6134 malloc'd area for complex numbers.
6135
47ae1f0e
DH
61362003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6137
6138 * numbers.c (scm_bigequal): Fixed.
6139
859b6b2f
MV
61402003-09-16 Marius Vollmer <mvo@zagadka.de>
6141
6142 * stime.c (scm_current_time): 'time' does not set errno so don't
6143 use SCM_SYSERROR for reporting errors.
6144
e17d318f
DH
61452003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
6146
6147 This set of patches eliminates the dependency between the
6148 implementation of evaluator specific memoization codes and special
6149 constants like #f, '() etc. ('flags'), which are not evaluator
6150 specific. The goal is to remove definitions of evaluator
6151 memoization codes completely from the public interface. This will
6152 make it possible to experiment more freely with optimizations of
6153 guile's internal representation of memoized code.
6154
6155 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
6156
6157 * print.c (iflagnames): New array, holding the printed names of
6158 guile's special constants ('flags').
6159
6160 (scm_isymnames): Now holds only the printed names of the
6161 memoization codes.
6162
6163 (scm_iprin1): Separate the handling of memoization codes and
6164 guile's special constants.
6165
6166 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
6167 SCM_IFLAGNUM): new
6168
6169 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
6170 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
6171 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
6172 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
6173 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
6174 values.
6175
6176 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
6177
6178 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
6179 tc9 macros and scm_tc9_flag.
6180
eecac806
MV
61812003-09-15 Marius Vollmer <mvo@zagadka.de>
6182
6183 * posix.c (scm_setgroups): Check that the gid list is not too
6184 long. Thanks to Paul Jarc!
6185
22f2cf2d
DH
61862003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
6187
6188 * tags.h: Reduced the number of short instructions from 14 to 13.
6189 The typecode of the former 14th short instruction is now used to
6190 represent long instructions. Changed some comments to reflect
6191 this fact.
6192
6193 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
6194 previously used by SCM_IM_DEFINE.
6195
6196 (SCM_IM_DEFINE): Turned into a long instruction.
6197
6198 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
6199 instruction.
6200
6201 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
6202 code that is separate from all instructions, one level of dispatch
6203 for long instructions can be eliminated.
6204
6205 * print.c (scm_isymnames): Removed some commented code.
6206
62f548e1
MV
62072003-09-12 Marius Vollmer <mvo@zagadka.de>
6208
97a61c5f
MV
6209 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
6210 compiler on IA64.
6211
50e0ba57
MV
6212 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
6213
6214 * modules.c (scm_module_reverse_lookup): Check that the obarray
6215 really is a hashtable and do nothing if not.
6216
62f548e1
MV
6217 * inline.h: Use "extern inline" only with GCC. Use "static
6218 inline" else.
6219
0d5e3480
DH
62202003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6221
6222 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
6223 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6224
6225 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
6226 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
6227 deprecated.h.
6228
6b412e91
DH
62292003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6230
6231 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
6232 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6233
6234 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
6235 0.0==some_expression to some_expression==0.0. The latter is
6236 better readable. The former is preferred by some people, since it
6237 leads to a compiler error when confusing == with =. However, when
6238 using gcc, a warning will be issued if in an if-statement an
6239 assigment appears. Since many Guile developers are using gcc,
6240 such errors will not remain unnoticed anyway. We can therefore
6241 focus on better readability.
6242
7e3b25bf
DH
62432003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6244
6245 * tags.h: Added description of Guile's type system. Removed some
6246 old and misleading comments.
6247
3ea39242
DH
62482003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6249
6250 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
6251 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6252
5d7d39ff
DH
62532003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6254
6255 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
6256
6257 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
6258 respective SLOPPY macro.
6259
baa84a20
DH
62602003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6261
6262 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
6263 type string, not SCM_TYP7S.
6264
ba15f500
KR
62652003-09-03 Kevin Ryde <user42@zip.com.au>
6266
6267 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
6268 2s-complement.
6269
53bb8782
KR
6270 * stime.c (scm_strptime): Add comment about glibc strptime %s and
6271 current timezone requiring SCM_DEFER_INTS.
6272
defdc4b4
NJ
62732003-08-30 Neil Jerram <neil@ossau.uklinux.net>
6274
6275 * script.c (scm_compile_shell_switches): Make -s switch optional
6276 if file to be loaded does not begin with a `-'. (Thanks to Aaron
6277 VanDevender for the patch!)
6278
0f008a15
KR
62792003-08-30 Kevin Ryde <user42@zip.com.au>
6280
6281 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
6282 and to have non-integer types rejected as per other logical funcs.
241d9cea 6283
438a3ba1
KR
62842003-08-28 Kevin Ryde <user42@zip.com.au>
6285
6286 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
6287
98dceb37
KR
62882003-08-23 Kevin Ryde <user42@zip.com.au>
6289
6290 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
6291 thread safe, and could take a long time too.
6292
1fa79a38
KR
62932003-08-22 Kevin Ryde <user42@zip.com.au>
6294
6295 * numbers.c (scm_difference): Correction to bignum - negative inum.
6296
d97f9b42
KR
62972003-08-14 Kevin Ryde <user42@zip.com.au>
6298
6299 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
6300 [__GNUC__]: Use volatile asm macros rather than a function call.
6301 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
6302 macros while defining functions.
6303
6304 * simpos.c (getenv): Use <stdlib.h> for prototype.
6305 (scm_system): In docstring, refer to status:exit-val rather than
6306 "functions above".
6307
b9052fcc
KR
63082003-08-09 Kevin Ryde <user42@zip.com.au>
6309
6310 * srcprop.c (scm_source_properties): Return plist from hash if it's a
6311 list set by source-properties! rather than an SRCPROPS object,
6312
8e5b4b9e
KR
63132003-07-29 Kevin Ryde <user42@zip.com.au>
6314
6315 * properties.c (scm_primitive_property_ref): In docstring, note
6316 parameters to not-found-proc, use hyphens rather than underscores for
6317 that parameter name.
6318 (scm_primitive_property_set_x): In docstring, VAL is the value
6319 parameter not CODE.
241d9cea 6320
20703ac4
MV
63212003-07-27 Marius Vollmer <mvo@zagadka.de>
6322
c6ccee34
MV
6323 * print.c (scm_print_symbol_name): handle more weird characters by
6324 escaping the symbol name properly. Thanks to Paul Jarc!
6325
2f4931bf
MV
6326 * posix.h (scm_setgroups): New prototype.
6327 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
6328 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
6329 Don't use SCM_WRITABLE_VELTS.
241d9cea 6330
265c456f
MV
6331 * gc.h (SCM_GC_SET_CELL_BVEC): New.
6332 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
6333 Matthias Koeppe!
6334
20703ac4
MV
6335 * __scm.h (SCM_C_INLINE_KEYWORD): New.
6336 * numbers.c: Use it in place of SCM_C_INLINE so that the code
6337 compiles when SCM_C_INLINE is undefined.
6338
59c4bb82
DH
63392003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6340
6341 * __scm.h: Reformulated the architecture and compiler properties
6342 in terms of properties of scm_t_bits and SCM variables rather than
6343 in terms of c standard types. This is since it is not known which
6344 of the standard types scm_t_bits and SCM variables will be defined
6345 to.
6346
d7850c8d
KR
63472003-07-24 Kevin Ryde <user42@zip.com.au>
6348
6349 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
6350 and real.
6351
8a0c514f
KR
63522003-07-18 Kevin Ryde <user42@zip.com.au>
6353
6354 * numbers.c (scm_product): In complex * bignum, correction to
6355 REAL/IMAG fetch, x is the complex, not y.
6356
0aacf84e
MD
63572003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6358
6359 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
6360 scm_inf_p test as Scheme values.
6361 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
6362 and a positive inum.
6363 Use GNU indentation style.
6364
192de9a4
DH
63652003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6366
6367 * values.c (scm_values): Build lists of length 1 by using
6368 scm_list_1 instead of using scm_cons.
6369
bbb4438a
KR
63702003-07-10 Kevin Ryde <user42@zip.com.au>
6371
b58c85ce
KR
6372 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
6373 * list.c (scm_list_n): Ditto.
6374
bbb4438a
KR
6375 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
6376
287f8ad1
KR
63772003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
6378
6379 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
6380 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
6381 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
6382 the other using intptr_t.
6383
005d2366
KR
63842003-07-08 Kevin Ryde <user42@zip.com.au>
6385
0aacf84e 6386 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
6387 (scm_magnitude): Use hypot.
6388
6389 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
6390 @footnote since it doesn't go through to guile-procedures.txt.
6391
6392 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
6393 outside @var to quieten makeinfo, and use @code.
6394
cbfe8e62
HWN
63952003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6396
6397 * gc-malloc.c (decrease_mtrigger): new function
6398 (increase_mtrigger): new function, separate debug registering and
6399 mtrigger administration.
6400 (scm_gc_realloc): bugfix: do mtrigger administration before the
6401 actual realloc, for the realloc might invalidate a GC-d segment of
6402 memory. Thanks to Sam Hocevar for pointing this out.
6403 (scm_gc_realloc): use scm_malloc_reregister instead of
6404 unregistering and registering in sequence.
6405
aeb4c2e1
HWN
64062003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6407
241d9cea 6408 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
aeb4c2e1 6409
4c27f8d2
HWN
64102003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6411
6412 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
6413 clauses.
241d9cea 6414
983e697d
MV
64152003-06-29 Marius Vollmer <mvo@zagadka.de>
6416
6417 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
6418 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
6419 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
6420 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
6421 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
6422 the release_1_6 branch.
6423
78b6566e
SJ
64242003-06-25 Stefan Jahn <stefan@lkcc.org>
6425
6426 * continuations.c: Redeclaration of getcontext() via the
6427 __asm__ ("getcontext") directive.
6428
241d9cea 6429 * continuations.h: Include <ucontext.h> instead of
78b6566e
SJ
6430 <sys/ucontext.h>.
6431
1ebb8497
KR
64322003-06-21 Kevin Ryde <user42@zip.com.au>
6433
6434 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
6435 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
6436 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
6437 available.
6438 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
6439 (isfinite): Remove, conflicts with C99 isfinite().
6440
fbf85ba4
MV
64412003-06-19 Marius Vollmer <mvo@zagadka.de>
6442
6443 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
6444 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
6445 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
6446 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
6447 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
6448 the release_1_6 branch.
6449
fcc5d734
SJ
64502003-06-14 Stefan Jahn <stefan@lkcc.org>
6451
6452 * threads.h: Redefined scm_getspecific() and scm_setspecific()
6453 to be functions instead of macros.
6454
6455 * threads.c: Conditionalized inclusion of <sys/time.h> and
6456 <unistd.h>.
6457 (scm_getspecific, scm_setspecific): Made these two function
6458 real part of the API.
6459
241d9cea 6460 * posix.c (s_scm_putenv): Added some code to make a
fcc5d734
SJ
6461 (putenv "FOO="), i.e. setting an empty string, work also on
6462 Win32 systems. Thanks to Kevin Ryde for the proposal.
6463
c3ae8e07
KR
64642003-06-12 Kevin Ryde <user42@zip.com.au>
6465
75b14838
KR
6466 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
6467 freebsd to comment about need to use unsetenv.
c3ae8e07 6468
9d9fa092
MV
64692003-06-02 Marius Vollmer <mvo@zagadka.de>
6470
6471 * ports.c (scm_peek_char): Safe the column of the port around the
6472 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
6473
f2478375
KR
64742003-06-07 Kevin Ryde <user42@zip.com.au>
6475
6476 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
6477 and friends required by scm_t_bits setups.
6478
6375e040
DH
64792003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6480
6481 * tags.h (scm_tc2_int): Added.
6482
6483 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
6484 scm_tc2_int.
6485
6486 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
6487 scm_tcs_closures): Hard coded values replaced by symbolic ones.
6488
f5c6ec2f
DH
64892003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6490
6491 * eval.c: Partially undid my patch from 2003-05-31. This patch
6492 caused the segfault referenced in the previous changelog entry.
6493
47dbd81e
DH
64942003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6495
6496 * tags.h: Fixed comment about the immediate type code layout.
6497
6498 * eval.c: Fixed handling of non-special instructions. Without
6499 this patch, guile will segfault on (#\0) and similar instructions.
6500
3ec52c51
KR
65012003-06-05 Kevin Ryde <user42@zip.com.au>
6502
6503 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
6504 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
6505
e418bd7c
KR
6506 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
6507 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
241d9cea 6508
d0624e39
DH
65092003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6510
6511 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
6512 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
6513 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
6514 generalized it to apply not only to C level functions but also to
6515 scheme level functions.
6516
6517 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
6518 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
6519 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
6520 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
6521 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
6522 respectively.
6523
6524 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
6525 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
6526 eval.h into eval.c and a copy is placed into deprecated.h.
6527
6528 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
6529 into eval.c. This definition was not part of the API in any
6530 officially released version of guile and thus does not need to go
6531 through a phase of deprecation.
6532
e90c3a89
DH
65332003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
6534
d0624e39
DH
6535 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
6536 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
6537 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
6538 definitions are make static and renamed from scm_s_xxx to s_xxx.
6539 In deprecated.c the original definitions are copied.
6540
d0624e39
DH
6541 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
6542 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
6543 eval.h into eval.c and a copy (slightly modified to work in user
6544 code) is placed into deprecated.h.
6545
6546 * eval.c: Use the local static s_xxx definitions instead of the
6547 scm_s_xxx definitions throughout.
6548
14b18ed6
DH
65492003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6550
6551 This set of patches separates the representation of the cxr family
6552 of functions (car, cdr etc.) from the dsubr family of functions
6553 (i. e. functions that take a double precision floating point
6554 argument). Further, the algorithm for handling the cxr function
6555 is improved.
6556
6557 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
6558 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
6559 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
6560 cosh, tanh), objects.c (scm_class_of), procprop.c
6561 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
6562 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
6563 typecode for the dsubr family of functions.
6564
6565 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
6566 ramap_dsubr.
6567
6568 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
6569 (scm_init_pairs): Make use of the (now usable) second cell element
6570 of a scm_tc7_cxr function to implement the cxr family of functions
6571 more efficiently.
6572
2ca0d207
DH
65732003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6574
6575 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
6576 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
6577 end of an if-else-if-sequence of checks.
6578
9a069bdd
DH
65792003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6580
6581 * eval.c (SCM_CEVAL): Improved readability of call-with-values
6582 execution. Generalize apply_closure to apply_proc and use that
6583 for call-with-values.
6584
e910e9d2
DH
65852003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6586
6587 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
6588 a non closure.
6589
1e498fbd
SJ
65902003-05-30 Stefan Jahn <stefan@lkcc.org>
6591
241d9cea 6592 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
1e498fbd
SJ
6593 appropriately for mingw32 hosts.
6594
6595 * numbers.h: Defining copysign(), isnan() and finite() to
6596 be prefixed by a single '_' for mingw32 hosts.
6597
c47e2599
KR
65982003-05-30 Kevin Ryde <user42@zip.com.au>
6599
6600 * numbers.c (z_negative_one): New variable.
6601 (scm_init_numbers): Initialize it.
6602 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
6603
2e945bcc
SJ
66042003-05-29 Stefan Jahn <stefan@lkcc.org>
6605
6606 * win32-dirent.c: Use malloc() instead of scm_malloc().
6607
6608 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
6609 warning.
6610
6611 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
6612 mingw32 build.
6613
6614 * modules.c (s_scm_module_import_interface): Renamed local
6615 variable interface to _interface. Seems like 'interface'
6616 is a special compiler directive for the mingw32 compiler.
6617
6618 * mkstemp.c: Provide prototype to avoid compiler warning.
6619
6620 * load.c (s_scm_search_path): Fixed absolute and relative
6621 path detections for native Windows platforms.
6622
241d9cea 6623 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
2e945bcc
SJ
6624 to build on mingw32).
6625
241d9cea 6626 * gc-freelist.c ("s_scm_map_free_list",
2e945bcc
SJ
6627 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
6628
241d9cea 6629 * fports.c (fport_fill_input): Disable use of
2e945bcc
SJ
6630 fport_wait_for_input() on Win32 platforms.
6631
6632 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
6633
6634 * Makefile.am: Modified some rules for cross compiling.
6635
ddd8f927
DH
66362003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6637
6638 * eval.c (SCM_CEVAL): In case of an application, all checks for a
6639 proper function object and the correct number of arguments are now
6640 performed in the application part of SCM_CEVAL.
6641
6642 (scm_badformalsp): Removed.
6643
f8ba2197
DH
66442003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6645
6646 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
6647
79f55b7c
MD
66482003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6649
a502595f
MD
6650 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
6651 always being false by inserting preprocessor conditional. (Thanks
6652 to Bruce Korb.)
6653
79f55b7c
MD
6654 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
6655 (void *) in order to avoid an aliasing warning; thanks to Bruce
6656 Korb.)
6657
6658 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
6659
6660 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
6661 SCM_STACK_PTR.
6662
6663 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
6664 thread->base --> t->base.
6665
6666 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
6667
47dee228
MV
66682003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6669
6670 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
6671 scm_variable_set_name_hint, scm_builtin_variable,
6672 scm_internal_with_fluids, scm_make_gsubr,
6673 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
6674 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
6675 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
6676 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
6677 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
6678 scm_make_subr_with_generic, scm_make_subr_opt,
6679 scm_call_catching_errors, scm_make_smob_type_mfpe,
6680 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
6681 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
6682 branch. Some have been slightly rewritten.
6683 (scm_i_object_chars, scm_i_object_length): New, to support
6684 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
241d9cea 6685
e681d187
DH
66862003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6687
6688 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
6689 names and inits in the memoized code of do.
6690
7e59d9d4
MD
66912003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6692
6693 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
6694 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
6695 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6696 a compilation error if error-on-warning is enabled).
6697
9950a42c
MV
66982003-05-17 Marius Vollmer <mvo@zagadka.de>
6699
6700 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6701 removes preprocessor directives from the snarfage that might
6702 otherwise confuse us. These directives appear when compiling with
6703 "-g3", for example.
6704
0068984b
HWN
67052003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6706
26e68795
HWN
6707 * ChangeLog: add my surname
6708
0068984b
HWN
6709 * srcprop.c (scm_finish_srcprop): use
6710 scm_gc_register_collectable_memory()
6711 (scm_make_srcprops): idem.
6712
131805f0
HWN
67132003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6714
6715 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6716 wrap-around for scm_mtrigger
6717 (scm_gc_register_collectable_memory): abort on overflowing
6718 scm_mallocated().
6719
d4611024
KR
67202003-05-13 Kevin Ryde <user42@zip.com.au>
6721
6722 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6723 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6724
7aaf8dc9
MD
67252003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6726
dfd03fb9
MD
6727 * backtrace.c (scm_display_error_message): Introduced fancy
6728 printing with max level 7 and length 10. (Purpose: avoid printing
6729 gigantic objects in error messages.)
6730
6731 * print.c, print.h (scm_i_port_with_print_state): New function.
6732
6733 * print.c (scm_iprin1, scm_printer_apply,
6734 scm_port_with_print_state): Use scm_i_port_with_print_state.
6735 (scm_simple_format): Modified not to destroy print states.
6736 (print_state_mutex): New mutex.
6737 (scm_make_print_state, scm_free_print_state, scm_prin1):
6738 Lock/unlock print_state_mutex.
241d9cea 6739
7aaf8dc9
MD
6740 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6741 Use current names in definitions.
6742
a4d9ffa1
KR
67432003-05-10 Kevin Ryde <user42@zip.com.au>
6744
6745 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6746
d25e96a4
KR
6747 * numbers.c (scm_integer_length): On negative bignums, adjust
6748 mpz_sizeinbase to account for it looking at absolute value where we
6749 want ones-complement.
6750
6751 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6752 since we're only using the ulong return value, and x might not fit.
6753
5bf6a6f0
DH
67542003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6755
6756 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6757 read. This will allow to make the definition in read.c static.
6758
f58c472a
DH
67592003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6760
6761 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6762 from evalext to eval. This will allow to make some of the
6763 definitions in eval.c static.
6764
90382aeb
KR
67652003-05-06 Kevin Ryde <user42@zip.com.au>
6766
6767 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6768 (scm_logcount): Use mpz_com, not mpz_neg.
6769
3b88ed2a
DH
67702003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6771
6772 The purpose of this patch is to make guile's internal memoizers
6773 distinguishable from memoizing macros created on the scheme level
6774 or from user provided primitive memoizing macros. The reason is,
6775 that the internal memoizers are the only ones that are allowed to
6776 transform their scheme input into memoizer byte code, while all
6777 other memoizing macros may only transform scheme code into new
6778 scheme code.
6779
6780 To achieve this, a new macro type 'builtin-macro!' is introduced.
6781 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6782 this will change when the memoizer and executor are separated.
6783
6784 * macros.[ch] (scm_i_makbimacro): New.
6785
6786 * macros.h (SCM_BUILTIN_MACRO_P): New.
6787
6788 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6789
6790 * eval.c, goops.c: All of guile's primitive memoizing macros are
6791 primitive builtin-macros now.
6792
6793 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6794 builtin-macros are handled equally to memoizing macros.
6795
b0780eb1
MV
67962003-05-04 Marius Vollmer <mvo@zagadka.de>
6797
6798 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6799 work around a bug in GCC 2.95.2 but is now a bug in itself.
6800
1cbf4fe9
MV
68012003-05-02 Marius Vollmer <mvo@zagadka.de>
6802
6803 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6804 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6805 scm_tcs_symbols): New.
6806
1a61d41b
MV
68072003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6808
096ecbaf
MV
6809 * deprecated.h, deprecated.c (scm_protect_object,
6810 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6811 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6812 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6813 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6814 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6815 scm_ptob_descriptor, scm_port_rw_active,
6816 scm_close_all_ports_except): New.
6817
1a61d41b
MV
6818 * ports.c (scm_c_port_for_each): New function, mostly copied from
6819 scm_port_for_each.
6820 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6821 * ports.h (scm_c_port_for_each): New prototype.
241d9cea 6822
c8e1d354
MD
68232003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6824
6825 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6826 macro was introduced in anticipation of GOOPS method compilation
6827 code.)
6828
6829 * goops.c: Removed binding of @dispatch.
6830
a4aa2134
DH
68312003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6832
6833 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6834 instructions that bind the macros on the scheme level back to
6835 goops.c in order to make sure again that the bindings go into the
6836 (oop goops) module and are not visible from the outside.
6837
9fbee57e
DH
68382003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6839
6840 * eval.c: Non functional change: Separated R5RS and non-R5RS
6841 macros into different sections of the file and ordered the
6842 memoizers alphabetically.
6843
12841895
DH
68442003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6845
6846 * eval.c (scm_ilookup): Rewritten to improve readability.
6847
6a3f13f0
DH
68482003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6849
6850 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6851 Partially reverted patch from 2003-04-23 in oder to find a better
6852 compromise between readability and debuggability.
6853
b0c5d67b
DH
68542003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6855
6856 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6857 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6858 definitions of the special goops memoizers from goops.[ch] to
6859 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6860 throughout guile.
6861
b9ad392e
MD
68622003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6863
6864 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6865
6866 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6867
6868 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6869
6870 * ioext.c (scm_fdes_to_ports): Ditto.
6871
6872 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6873 lock/unlock scm_i_port_table_mutex.
6874
6875 * strports.c (scm_mkstrport): Ditto.
6876
6877 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6878
6879 * fports.c (scm_fdes_to_port): Ditto.
6880
d0b07b5d
DH
68812003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6882
6883 This set of patches contains no functional changes, only debatable
6884 minor stylistic ones. Still, in order to prepare a patch between
6885 my local copy and the CVS version, I decided to submit the changes
6886 below. Then, the patch will hopefully only contain relevant
6887 modifications :-)
6888
6889 * eval.c (iqq): Added const specifier.
6890
6891 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6892 Use NULL instead of 0 to indicate that a pointer is returned.
6893 Removed some misleading 'fall through' comments.
6894
6895 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6896 Split up long expressions into smaller ones to be more debugging
6897 friendly.
6898
a98e8e98
DH
68992003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6900
6901 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6902 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6903 rather than casting to SCM.
6904
c178c3a6
DH
69052003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6906
6907 * sort.c, pairs.h: Removed unnecessary includes.
6908
d339981a
DH
69092003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6910
6911 * sort.c: Replaced hand-made trampline code by the new official
6912 mechanism from eval.c. This fixes a segfault in the new test file
6913 sort.test.
6914
6915 (quicksort, compare_function, scm_restricted_vector_sort_x,
6916 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6917 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6918 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6919 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6920 eval.c.
6921
6922 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6923 cmp_fun_t): Removed.
6924
6925 (compare_function): Added.
6926
6927 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6928 arithmetics with index arithmetics. Changed quicksort to work on
6929 an array of SCM values instead of an array of characters. Avoid
6930 bytewise copying of SCM elements. Avoid allocating memory on the
6931 stack with alloca. Fixed some comments.
6932
821f18a4
DH
69332003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6934
6935 * eval.c (EXTEND_ENV): Eliminated.
6936
6937 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6938 EXTEND_ENV.
6939
94fb5a6e
DH
69402003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6941
6942 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6943
6944 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6945 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6946
6947 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6948 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6949 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6950 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6951 functions such that they check if the object is a non-immediate.
6952 Further, renamed identifiers to use the scm_dbg_ prefix and made
6953 their inclusion into the lib dependent of the
6954 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6955
fce0b22d
DH
69562003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6957
6958 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6959 debug option.
6960
1685446c
DH
69612003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6962
821f18a4 6963 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
6964 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6965 any calls to SCM_NCONSP any more.
6966
6967 * unif.c (l2ra): Eliminate redundant check.
6968
9ff1720f
DH
69692003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6970
6971 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6972 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6973 SCM_NNULLP. Now, guile itself does not include any calls to
6974 SCM_NNULLP any more.
6975
05b15362
DH
69762003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6977
6978 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6979 scm_copy_tree): Place assignment expressions which are part of
6980 other expressions into an expression of their own.
6981
0c88d7df
DH
69822003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6983
6984 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6985 compare SCM values with !=.
6986
5cb22e96
DH
69872003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6988
6989 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6990 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6991 and definition of the memoizer for the generalized set! macro from
6992 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6993 define the macro object.
6994
6995 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6996 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6997 eval.c, it is made static and renamed to s_set_x.
6998
6999 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
7000 over SCM_N<foo>.
7001
a44a9715
DH
70022003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7003
7004 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
7005 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
7006 to undefineds and registered the object as a permanent object.
7007
7008 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
7009 static in eval.c, renamed it to f_apply and registered the object
7010 as a permanent object.
7011
1b43d24c
DH
70122003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7013
5cb22e96 7014 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
7015 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
7016
aec16f99
DH
70172003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7018
7019 * numbers.c (scm_logtest): Fixed argument bug in the call to
7020 mpz_and, which showed up when compiling with SCM_DEBUG defined.
7021
f96460ce
DH
70222003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7023
7024 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
7025 type errors that showed up when compiling with SCM_DEBUG defined.
7026
d0f6ceb8
DH
70272003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7028
7029 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
7030 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
7031 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
7032 fix compile errors with --disable-deprecated.
7033
19a7a089
RB
70342003-04-17 Rob Browning <rlb@defaultvalue.org>
7035
7036 * numbers.c (scm_integer_expt): fix case where we were declaring
7037 vars in the middle of a statement block. Thanks to Thamer
7038 Al-Harbash.
7039
47cd67db
MD
70402003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7041
0fd7dcd3
MD
7042 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
7043 change.
7044
47cd67db
MD
7045 * eq.c (scm_eqv_p): Turned into a primitive generic.
7046
3b8b889c
RB
70472003-04-16 Rob Browning <rlb@defaultvalue.org>
7048
312006bb
RB
7049 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
7050 Thanks to Boyd Gerber.
7051 Added check for __arm__ in addition to arm for LINUX and copied
7052 __s390__ defines from upstream libgc. Thanks to James Treacy for
7053 reporting the problems.
c7ef2ea1 7054
3b8b889c
RB
7055 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
7056
7057 * socket.c: use SCM_CHAR_BIT.
7058
7059 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
7060
7061 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
7062
43261b39
MD
70632003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7064
7065 * feature.c (scm_init_feature): Always add threads feature.
7066
58241edc
MD
70672003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7068
7069 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
7070 scm_at_assert_bound_ref. (We don't want the unbound check. See
7071 oop/goops/active-slot.scm.)
7072
94e91275
RB
70732003-04-14 Rob Browning <rlb@defaultvalue.org>
7074
7075 * tags.h: scm_t_intptr should have been intptr_t.
7076
3071ea27
RB
70772003-04-13 Rob Browning <rlb@defaultvalue.org>
7078
7079 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
7080 test. Instead use
7081 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
7082 as gc_os_dep.c suggests is appropriate.
7083
7084 * goops.c (prep_hashsets): make static to match prototype.
7085 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
7086 Chin.
241d9cea 7087
3071ea27
RB
7088 * c-tokenize.lex: remove trailing comma from enum. Thanks to
7089 Albert Chin.
7090
7091 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
7092 Klausner.
7093
21ab2aeb
MD
70942003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7095
7096 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
7097 indicated through extra fields in getters-n-setters.
7098 (scm_add_slot): Adapted to new format of getters_n_setters slot.
7099 (Thanks to Andy Wingo.)
7100
dff96e95
HWN
71012003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7102
7103 * gc-segment.c: add comment
7104
07921c76
RB
71052003-04-07 Rob Browning <rlb@defaultvalue.org>
7106
b5331f10
RB
7107 * debug.h: change "id" arg name to "info_id" to avoid objective-c
7108 clash.
7109
07921c76
RB
7110 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
7111 and add regression test to standalone/.
7112
71132003-04-06 Rob Browning <rlb@defaultvalue.org>
7114
7115 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
7116 Thanks to Dale P. Smith.
7117
7118 * random.c: #include gmp.h.
7119 (scm_c_random_bignum): normalize result on return.
7120
7121 * init.c: #include gmp.h.
7122
7123 * numbers.h: remove the gmp.h #include (not needed now).
7124
7125 * posix.h: change occurences of "id" to something else so we don't
7126 cause trouble when included via objective-c (can't hurt, might
7127 help). Still have usage in debug.h, though.
7128
938f6b7c
MD
71292003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7130
372691d8
MD
7131 * random.c (scm_c_random_bignum): Don't generate a random number
7132 equal to m (the second argument of scm_c_random_bignum); only
7133 generate numbers in the range 0 <= r < m.
c5f268f8
MD
7134 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
7135 scm_var_random_state.
372691d8 7136
938f6b7c
MD
7137 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
7138 clause.
7139
6cdb8c3f
RB
71402003-04-05 Rob Browning <rlb@defaultvalue.org>
7141
938f6b7c 7142 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
7143 uses before any code.
7144
15635be5
MD
71452003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7146
1ecfd013
MD
7147 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
7148 not top_srcdir.
7149
15635be5
MD
7150 * hashtab.c (rehash_after_gc): Clear to_rehash list before
7151 processing it in order to avoid an infinite loop.
7152
7153 * print.c (scm_prin1): Remember old state of pstate->writingp.
7154
73be1d9e
MV
71552003-04-05 Marius Vollmer <mvo@zagadka.de>
7156
7157 * Changed license terms to the plain LGPL thru-out.
7158
ad815c06
RB
71592003-04-04 Rob Browning <rlb@defaultvalue.org>
7160
7161 * socket.c (FLIPCPY_NET_HOST_128): new macro.
7162 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
7163 rewrite to handle GMP bignums.
7164
7165
7166 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
7167
7168 * ports.c (scm_getc): minor tweak.
7169
7170 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
7171 rewrite to handle GMP bignums.
7172
7173 * numbers.c: rewrite *many* functions to handle GMP bignums.
7174
7175 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
7176 handle GMP bignums.
7177
7178 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
7179
7180 * init.c (check_config): remove SCM_BIGDIG conditionals.
7181 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
7182
7183 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
7184
7185 * eval.c: remove SCM_BIGDIG conditionals.
7186
7187 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
7188
6cdb8c3f
RB
71892003-03-31 Rob Browning <rlb@defaultvalue.org>
7190
7191 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
7192 to Kevin Ryde.)
7193
71942003-03-27 Rob Browning <rlb@defaultvalue.org>
7195
7196 * threads.h: fix various preprocessor usages of new public
7197 symbols to expect 0 or 1 values rather than 1 or undefined.
7198 i.e. change #ifdef to #if, etc.
7199
7200 * threads.c: fix various preprocessor usages of new public
7201 symbols to expect 0 or 1 values rather than 1 or undefined.
7202 i.e. change #ifdef to #if, etc.
7203
7204 * tags.h: fix various preprocessor usages of new public
7205 symbols to expect 0 or 1 values rather than 1 or undefined.
7206 i.e. change #ifdef to #if, etc.
7207
7208 * stacks.c: fix various preprocessor usages of new public
7209 symbols to expect 0 or 1 values rather than 1 or undefined.
7210 i.e. change #ifdef to #if, etc.
7211
7212 * stackchk.h: fix various preprocessor usages of new public
7213 symbols to expect 0 or 1 values rather than 1 or undefined.
7214 i.e. change #ifdef to #if, etc.
7215
7216 * stackchk.c: fix various preprocessor usages of new public
7217 symbols to expect 0 or 1 values rather than 1 or undefined.
7218 i.e. change #ifdef to #if, etc.
7219
7220 * sort.c: fix various preprocessor usages of new public
7221 symbols to expect 0 or 1 values rather than 1 or undefined.
7222 i.e. change #ifdef to #if, etc.
7223
7224 * read.c: fix various preprocessor usages of new public
7225 symbols to expect 0 or 1 values rather than 1 or undefined.
7226 i.e. change #ifdef to #if, etc.
7227
7228 * random.c: fix various preprocessor usages of new public
7229 symbols to expect 0 or 1 values rather than 1 or undefined.
7230 i.e. change #ifdef to #if, etc.
7231
7232 * print.c: fix various preprocessor usages of new public
7233 symbols to expect 0 or 1 values rather than 1 or undefined.
7234 i.e. change #ifdef to #if, etc.
7235
7236 * objects.c: fix various preprocessor usages of new public
7237 symbols to expect 0 or 1 values rather than 1 or undefined.
7238 i.e. change #ifdef to #if, etc.
7239
7240 * numbers.h: fix various preprocessor usages of new public
7241 symbols to expect 0 or 1 values rather than 1 or undefined.
7242 i.e. change #ifdef to #if, etc.
7243
7244 * null-threads.c: fix various preprocessor usages of new public
7245 symbols to expect 0 or 1 values rather than 1 or undefined.
7246 i.e. change #ifdef to #if, etc.
7247
7248 * lang.c: fix various preprocessor usages of new public
7249 symbols to expect 0 or 1 values rather than 1 or undefined.
7250 i.e. change #ifdef to #if, etc.
7251
7252 * lang.h: fix various preprocessor usages of new public
7253 symbols to expect 0 or 1 values rather than 1 or undefined.
7254 i.e. change #ifdef to #if, etc.
7255
7256 * iselect.h: fix various preprocessor usages of new public
7257 symbols to expect 0 or 1 values rather than 1 or undefined.
7258 i.e. change #ifdef to #if, etc.
7259
7260 * init.c: fix various preprocessor usages of new public
7261 symbols to expect 0 or 1 values rather than 1 or undefined.
7262 i.e. change #ifdef to #if, etc.
7263
7264 * gh_data.c: fix various preprocessor usages of new public
7265 symbols to expect 0 or 1 values rather than 1 or undefined.
7266 i.e. change #ifdef to #if, etc.
7267
7268 * gh.h: fix various preprocessor usages of new public
7269 symbols to expect 0 or 1 values rather than 1 or undefined.
7270 i.e. change #ifdef to #if, etc.
7271
7272 * gen-scmconfig.c: change most new public symbols to be defined to
7273 0 or 1 rather than being either 1 or undefined.
7274
7275 * gc_os_dep.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 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
7279
7280 * gc.h: fix various preprocessor usages of new public
7281 symbols to expect 0 or 1 values rather than 1 or undefined.
7282 i.e. change #ifdef to #if, etc.
7283
7284 * gc-card.c: fix various preprocessor usages of new public
7285 symbols to expect 0 or 1 values rather than 1 or undefined.
7286 i.e. change #ifdef to #if, etc.
7287
7288 * gc-mark.c: fix various preprocessor usages of new public
7289 symbols to expect 0 or 1 values rather than 1 or undefined.
7290 i.e. change #ifdef to #if, etc.
7291
7292 * feature.c: fix various preprocessor usages of new public
7293 symbols to expect 0 or 1 values rather than 1 or undefined.
7294 i.e. change #ifdef to #if, etc.
7295
7296 * evalext.c: fix various preprocessor usages of new public
7297 symbols to expect 0 or 1 values rather than 1 or undefined.
7298 i.e. change #ifdef to #if, etc.
7299
7300 * eval.h: fix various preprocessor usages of new public
7301 symbols to expect 0 or 1 values rather than 1 or undefined.
7302 i.e. change #ifdef to #if, etc.
7303
7304 * eval.c: fix various preprocessor usages of new public
7305 symbols to expect 0 or 1 values rather than 1 or undefined.
7306 i.e. change #ifdef to #if, etc.
7307
7308 * eq.c: fix various preprocessor usages of new public
7309 symbols to expect 0 or 1 values rather than 1 or undefined.
7310 i.e. change #ifdef to #if, etc.
7311
7312 * coop.c: fix various preprocessor usages of new public
7313 symbols to expect 0 or 1 values rather than 1 or undefined.
7314 i.e. change #ifdef to #if, etc.
7315
7316 * coop-threads.c: fix various preprocessor usages of new public
7317 symbols to expect 0 or 1 values rather than 1 or undefined.
7318 i.e. change #ifdef to #if, etc.
7319
7320 * coop-pthreads.c: fix various preprocessor usages of new public
7321 symbols to expect 0 or 1 values rather than 1 or undefined.
7322 i.e. change #ifdef to #if, etc.
7323
7324 * coop-defs.h: fix various preprocessor usages of new public
7325 symbols to expect 0 or 1 values rather than 1 or undefined.
7326 i.e. change #ifdef to #if, etc.
7327
7328 * convert.i.c: fix various preprocessor usages of new public
7329 symbols to expect 0 or 1 values rather than 1 or undefined.
7330 i.e. change #ifdef to #if, etc.
7331
7332 * continuations.c: fix various preprocessor usages of new public
7333 symbols to expect 0 or 1 values rather than 1 or undefined.
7334 i.e. change #ifdef to #if, etc.
7335
7336 * _scm.h: fix various preprocessor usages of new public symbols to
7337 expect 0 or 1 values rather than 1 or undefined. i.e. change
7338 #ifdef to #if, etc.
7339
d11d697a
MV
73402003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7341
9686f86d
MV
7342 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
7343
7344 * deprecated.c, deprecated.h: New files, to collect deprecated
7345 things in one place.
7346 * Makefile.am: Added them in all the right places.
7347
d11d697a
MV
7348 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
7349 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
7350 builds work.
9686f86d
MV
7351 (DOT_X_FILES): Removed "iselect.x".
7352 (DOT_DOC_FILES): Removed "iselect.doc".
241d9cea 7353
e3c0c3b9
RB
73542003-03-25 Rob Browning <rlb@defaultvalue.org>
7355
7356 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
7357 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
7358
7359 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
7360
7361 * vports.c: #include <config.h> if HAVE_CONFIG_H.
7362
7363 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
7364 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7365
7366 * threads.h: replace usage of struct timespect with
7367 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
7368 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
7369 favor of scm_t_timespec from scmconfig.h.
7370
7371 * threads.c: move libguile/_scm.h include to the top so we pick up
7372 any critical defines like _GNU_SOURCE early. Replace usage of
7373 struct timespect with scm_t_timespec. Replace usage of
7374 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
7375 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
7376
7377 * threads-plugin.h: replace usage of struct timespect with
7378 scm_t_timespec.
7379
7380 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
7381 usage of struct timespect with scm_t_timespec.
7382
7383 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
7384 HAVE_INTTYPES_H handling to scmconfig.h. #include
7385 "libguile/__scm.h". Rework handling for scm_t_bits,
7386 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
7387 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
7388 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
7389 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
7390 SCM_HAVE_ARRAYS.
7391
7392 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
7393
7394 * struct.c: #include <config.h> if HAVE_CONFIG_H.
7395
7396 * strports.c: #include <config.h> if HAVE_CONFIG_H.
7397
7398 * strop.c: #include <config.h> if HAVE_CONFIG_H.
7399
7400 * stime.h: move handling of time related headers to scmconfig.h.
7401
7402 * stime.c: #include <config.h> if HAVE_CONFIG_H.
7403
7404 * stacks.c: replace usage of STACK_GROWS_UP with
7405 SCM_STACK_GROWS_UP.
7406
7407 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7408 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7409
7410 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7411 of uint32 and HAVE_UINT_32 with scm_t_int32.
7412
7413 * smob.c: #include <config.h> if HAVE_CONFIG_H.
7414
7415 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
7416
7417 * script.c: #include <config.h> if HAVE_CONFIG_H.
7418
7419 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
7420
7421 * scmconfig.h.top: new file -- preamble for scmconfig.h.
7422
7423 * rw.c: #include <config.h> if HAVE_CONFIG_H.
7424
7425 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
7426
7427 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7428
7429 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
7430
7431 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7432 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
7433 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
7434 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7435
7436 * ramap.c: replace usage of HAVE_LONG_LONGS with
7437 "SCM_SIZEOF_LONG_LONG != 0".
7438
7439 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
7440 "libguile/scmconfig.h".
7441
7442 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
7443
7444 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7445 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7446
7447 * posix.c: #include <config.h> if HAVE_CONFIG_H.
7448
7449 * ports.c: #include <config.h> if HAVE_CONFIG_H.
7450
7451 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7452
7453 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
7454 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
7455 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
7456 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
7457 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
7458 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
7459 "SCM_SIZEOF_LONG_LONG != 0".
7460
7461 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7462 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
7463 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
7464 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
7465
7466 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
7467
7468 * null-threads.h: replace usage of struct timespect with
7469 scm_t_timespec.
7470
7471 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
7472
7473 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
7474 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
7475 scm_t_uint64 and rename usages.
7476
7477 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
7478
7479 * load.c: #include <config.h> if HAVE_CONFIG_H.
7480
7481 * iselect.h: move handling of time related headers to scmconfig.h.
7482 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
7483 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
7484 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
7485
7486 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7487 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7488 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7489
7490 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
7491
7492 * inline.h: #include "libguile/__scm.h" at the top. Change code
7493 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
7494 what to do instead of creating a new public #define. Rename usage
7495 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7496 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
7497 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
7498
7499 * inline.c: rearrange handling -- now we just #define
7500 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
7501 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
7502 appropriate, and we use that in inline.h along with the above
7503 define to determine how to respond.
7504
7505 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7506 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7507
7508 * guile.c: #include <config.h> if HAVE_CONFIG_H.
7509
7510 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7511 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7512
7513 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7514
7515 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
7516
7517 * gen-scmconfig.c: new file -- see comments in file for details.
7518
7519 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
7520
7521 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
7522 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7523
7524 * gc.h: replace usage of SIZEOF_LONG with
7525 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
7526 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
7527 since we handle that in scmconfig.h now.
7528
7529 * gc.c: #include <config.h> if HAVE_CONFIG_H.
7530
7531 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7532 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
7533 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7534
7535 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
7536
7537 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7538 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7539
7540 * fports.c: #include <config.h> if HAVE_CONFIG_H.
7541
7542 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
7543
7544 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7545 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7546
7547 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
7548
7549 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7550 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7551
7552 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
7553 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
7554 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7555 with "SCM_SIZEOF_LONG_LONG != 0".
7556
7557 * error.c: #include <config.h> if HAVE_CONFIG_H.
7558
7559 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7560 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7561 with "SCM_SIZEOF_LONG_LONG != 0".
7562
7563 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
7564
7565 * coop.c: replace usage of struct timespect with scm_t_timespec.
7566 #include <config.h> if HAVE_CONFIG_H.
7567
7568 * coop-threads.c: #include "libguile/_scm.h" early. Replace
7569 usage of struct timespect with scm_t_timespec. Replace usage of
7570 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7571
7572 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
7573 usage of struct timespect with scm_t_timespec. Replace usage of
7574 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7575
7576 * coop-defs.h: move handling of time related headers to
7577 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
7578 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
7579 timespect with scm_t_timespec.
7580
7581 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7582
7583 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7584
7585 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7586 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7587
7588 * continuations.c: move libguile/_scm.h include to the top so we
7589 pick up any critical defines like _GNU_SOURCE early.
7590
7591 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
7592
7593 * async.c: #include <config.h> if HAVE_CONFIG_H.
7594
7595 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
7596
7597 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
7598 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
7599
7600 * __scm.h: move libguile/scmconfig.h include up to the top, so
7601 we're sure to pick up any critical defines like _GNU_SOURCE early.
7602 #include <limits.h> removed in favor of scmconfig.h inclusion when
7603 appropriate. STDC_HEADERS based inclusion of stdlib.h,
7604 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
7605 scmconfig.h inclusion when appropriate. Various Win32 related
7606 definitions removed in favor of scmconfig.h inclusion when
7607 appropriate.
7608 (HAVE_UINTPTR_T): definition removed (see NEWS).
7609 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
7610 (HAVE_LONG_LONGS): definition removed (see NEWS).
7611 (HAVE_LONG_LONG): definition removed (see NEWS).
7612 (HAVE_PTRDIFF_T): definition removed (see NEWS).
7613
7614 * Makefile.am: scmconfig.h is now generated by building and
7615 running gen-scmconfig.h and capturing its output. gen-scmconfig
7616 uses config.h and the configure.in generated gen-scmconfig.h to
7617 decide what to output. See gen-scmconfig.c for details.
7618 (noinst_PROGRAMS): add gen-scmconfig.
7619 (gen_scmconfig_SOURCES): new variable.
7620 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
7621 cross-compiling right.
7622 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
7623 (BUILT_SOURCES): add scmconfig.h.
7624
25e0bf97
MV
76252003-03-19 Marius Vollmer <mvo@zagadka.de>
7626
7627 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
7628 Adrian Bunk. Thanks!
7629
74b6d6e4
MD
76302003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7631
7632 * goops.c (make_class_from_template): New fourth arg:
7633 applicablep.
7634 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
7635 cpls.
7636
7637 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
7638
7639 * goops.c, objects.c, objects.h (scm_make_extended_class): New
7640 second arg: applicablep.
7641 (scm_i_inherit_applicable): New function.
7642
7643 * goops.c, goops.h (scm_class_applicable,
7644 scm_class_extended_accessor): New classes.
7645
5c9e7dad
DH
76462003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7647
7648 * procs.c (scm_procedure_documentation): Removed redundant
7649 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
7650 predicates.
7651
f8af5c6d
MD
76522003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7653
c614a00b
MD
7654 * list.c, list.h (scm_filter, scm_filter_x): New functions.
7655
109c2c9f
MD
7656 * modules.c (scm_module_import_interface): New function.
7657
f8af5c6d
MD
7658 * goops.c, goops.h (scm_class_accessor_method): Renamed from
7659 scm_class_accessor.
7660 (scm_class_accessor): New class.
7661
a48d60b1
MD
76622003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7663
7664 * goops.c (scm_primitive_generic_generic): Enable primitive
7665 generic if not enabled.
7666 (scm_sys_goops_loaded): Setup unextended primitive generics.
7667
7668 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
7669
7670 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
7671 snarf macros.
7672
7673 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
7674 testing example. All uses of SCM_GPROC should be converted.)
7675
7676 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
7677 scm_assoc.
7678
7679 * eq.c (scm_equal_p): Turned into a primitive generic.
7680
84edc049
RB
76812003-02-27 Rob Browning <rlb@defaultvalue.org>
7682
7683 * Makefile.am (scmconfig.h): new target -- generate file from
7684 ../config.h.
7685 (modinclude_HEADERS): remove version.h.
7686 (nodist_modinclude_HEADERS): add version.h.
7687
ea5c9285
MD
76882003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7689
b4a1358c
MD
7690 This fixes a serious GC bug, introduced during the latest
7691 reorganization of the GC, which disabled freeing of structs and
7692 GOOPS objects:
7693
7694 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
7695 SCM_EOL.
53af8255
MD
7696 (scm_struct_prehistory): Move scm_free_structs to
7697 scm_before_mark_c_hook.
ea5c9285 7698
b4a1358c
MD
7699 * gc-card.c (sweep_card): Check that we haven't swept structs on
7700 this card before. That can happen if scm_i_sweep_all_segments has
7701 been called from some other place than scm_igc.
7702
c35738c1
MD
77032003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7704
231a4ea8
MD
7705 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7706 (since hash tables now adapt their size).
7707
7708 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7709 (current number of prehistory bindings; hashtable code will select
7710 a prime which is greater than this value).
7711
7712 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7713 (current number of initial symbols).
7714
7715 * properties.c (scm_init_properties): Don't specify size of
7716 scm_properties_whash.
7717
7718 * objprop.c (scm_init_objprop): Don't specify size of
7719 scm_object_whash.
7720
7721 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7722
c35738c1
MD
7723 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7724
7725 The following changes introduce the use of resizable hash tables
7726 throughout Guile. It also renames the old *-hash-table* functions
7727 to *-alist-vector* and places them, together with the rest of the
7728 weak vector support, in the module (ice-9 weak-vector). We should
7729 probably introduce a new, better, API for weak references, for
7730 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7731 look like and are used like ordinary pairs.)
7732
7733 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7734 leaf_environment_fold, obarray_remove_all): Use hashtable
7735 accessors.
7736
7737 * gc.c (scm_init_storage): Moved hook initialization to
7738 scm_storage_prehistory.
7739 (scm_storage_prehistory): New function.
7740 (scm_igc): Added commentary about placement of
7741 scm_after_sweep_c_hook.
7742
7743 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7744 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7745 SCM_WVECT_WEAK_VALUE_P.
7746
7747 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7748 functions.
7749 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7750 Removed.
7751 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7752 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7753
7754 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7755 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7756
7757 * modules.c (module-reverse-lookup): Use hashtable accessors.
7758
7759 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7760
7761 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7762 scm_make_weak_value_alist_vector,
7763 scm_make_doubly_weak_alist_vector): New functions.
7764
7765 * weaks.c (scm_init_weaks_builtins): New function.
7766
7767 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7768 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7769 SCM_WVECT_NOSCAN_P): New macros.
7770
7771 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7772 and SCM_WVECT_WEAK_VALUE_P.
7773
7774 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7775 allocate_weak_vector and exported.
7776
0a4c1355
MD
77772003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7778
7779 * hashtab.c: Undid thread safety. (We decided that it's better to
7780 let the user explicitly protect the tables (or not) according what
7781 is suitable for the application.)
7782
87ca11ff
MD
77832003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7784
7785 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7786 thread safe and handle resizing tables.
7787 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7788 SCM_DEFER/ALLOW_INTS.
7789
f59a096e
MD
77902003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7791
7792 * hashtab.c (scm_vector_to_hash_table,
7793 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7794 functions.
7795 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7796 safe and handle resizing tables.
7797
7798 * weaks.c (scm_make_weak_key_hash_table,
7799 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7800 Size argument made optional. Return resizable table if not
7801 specified.
7802
4b612c5b
MD
78032003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7804
7805 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7806 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7807
b3d7f6df
MD
78082003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7809
7810 * debug.c (scm_procedure_source): Handle all objects for which
7811 procedure? is #t. (Thanks to Bill Schottstaedt.)
7812
756414cf
MD
78132003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7814
361d631f
MD
7815 * futures.c (mark_futures): Don't need to mark data of recycled
7816 futures.
7817 (scan_futures, cleanup_undead): Be smarter about marking
7818 futures---avoid unnecessary passes through future lists.
7819
756414cf
MD
7820 * futures.h, futures.c: New files; Introduced recycling of
7821 futures. For fine-grained threading this lifts performance to
7822 another level. We can now use parallelization in inner loops of
7823 Guile programs without impossible overhead.
7824
7825 * threads.h, threads.c: Moved futures to their own file.
7826
7827 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7828 (DOT_X_FILES): Added futures.x.
7829 (DOT_DOC_FILES): Added futures.doc.
7830 (modinclude_HEADERS): Added futures.h.
7831
7832 * threads.c, threads.h (scm_i_create_thread): Renamed from
7833 create_thread and made global.
7834
7835 * futures.c (scm_make_future): New procedure.
7836
7837 * eval.c: #include "libguile/futures.h".
7838
7839 * init.c: #include "futures.h"
7840 (scm_init_guile_1): Call scm_init_futures.
7841
7842 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7843
7844 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7845
7846 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7847 functions.
7848
7849 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7850
b4debead
MD
78512003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7852
7853 * threads.c (create_thread): Don't unwind dynwind chain of parent
7854 thread before creation. Just start the new thread with an empty
7855 dynwind chain.
7856
93f26b7b
MD
78572003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7858
7859 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7860
38d8927c
MD
78612003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7862
41c96c32
MD
7863 * threads.c (scm_timed_wait_condition_variable): Support timed
7864 waiting also for simple condition variables.
7865
38d8927c
MD
7866 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7867 of calling the procedure change-object-class.
7868
9cf5d9b7
MD
78692003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7870
7871 * ramap.c (scm_ramapc): Typo in error message.
7872
bbf8d523
MD
78732003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7874
b46fae00
MD
7875 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7876 slots with instance allocation.
241d9cea 7877
bbf8d523
MD
7878 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7879 class.
7880 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7881
7882 * goops.c (scm_generic_function_methods): Support extended
7883 generic functions.
7884
ebf9b47c
MD
78852002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7886
7887 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 7888 Thanks to Neil for pointing this out!
ebf9b47c 7889
14a9ba3f
NJ
78902002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7891
7892 * lang.h: Remove declarations matching definitions removed from
7893 lang.c (just below).
7894
c6a040a8
NJ
78952002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7896
6054d805
NJ
7897 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7898 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7899 and already commented out.
7900
c6a040a8
NJ
7901 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7902 scm_lreadparen): Support reading vectors with Elisp syntax if
7903 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7904 is not currently defined, and there isn't even a configure switch
7905 to enable it yet.)
7906
3742c12f
MV
79072002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7908
7909 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7910 builds work.
7911 (EXTRA_DIST): Added version.h.in.
241d9cea 7912
fb50ef08
MD
79132002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7914
7915 This change makes it possible for one thread to do lazy sweeping
7916 while other threads are running. Now only the mark phase need to
7917 have all threads asleep. We should look further into this issue.
7918 Presently, I've put the locking of scm_i_sweep_mutex at
7919 "conservative" places due to my current lack of knowledge about
7920 the garbage collector. Please feel free to restrict these regions
7921 further to allow for maximal parallelism!
7922
7923 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7924
7925 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7926 scm_gc_register_collectable_memory): Substitute locking of
7927 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7928 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7929 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7930 the single-thread section (which now only contains the mark
7931 phase).
7932 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7933 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7934
7935 * threads.c (gc_section_mutex): Removed.
7936
9ed24633
MD
79372002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7938
0d48aca5
MD
7939 * threads.c (create_thread): Clear parent field in root state in
7940 order not to unnecessarily remember dead threads.
7941
9ed24633
MD
7942 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7943 (scm_trampoline_1, scm_trampoline_2): Use them.
7944
29717c89
MD
79452002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7946
7947 Partial introduction of real plugin interface.
7948
7949 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7950 (EXTRA_DIST): Added threads-plugin.c.
7951
7952 * threads-plugin.h, threads-plugin.c: New files.
7953
7954 * threads.h: #include "libguile/threads-plugin.h".
7955
7956 * threads.c: #include "libguile/threads-plugin.c".
7957
7958 * pthread-threads.c: Temporarily remove debugging functions.
7959
7960 * threads.c, threads.h (scm_yield): Added back.
7961
e29e0b09
MD
79622002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7963
7964 * threads.c (really_launch): Detach before unlocking
7965 thread_admin_mutex in order not to risk being joined.
7966 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7967 thread_admin_mutex locked during GC.
7968
7969 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7970 functions.
7971
0b6843b1 79722002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 7973
6da2dfc4
MD
7974 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7975 support for debugging mutex operations.
7976
1b92fb6b
MD
7977 * threads.c (scm_thread): Removed filed joining_threads.
7978 (thread_print): Print thread number as well as address of thread
7979 structure.
0b6843b1
MD
7980 (scm_join_thread): Bugfix.
7981 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7982 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7983 scm_broadcast_condition_variable): Use the low-level API.
7984 (scm_all_threads): Return copy of thread list (to prevent
7985 unintended destruction).
7986 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 7987
93cd4dcd
MD
7988 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7989 pthread "native" recursive mutex support.
7990
2ff4f181
MD
79912002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7992
28d52ebb
MD
7993 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7994 Simply lock a thread C API recursive mutex.
7995 (SCM_NONREC_CRITICAL_SECTION_START,
7996 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7997 SCM_REC_CRITICAL_SECTION_END): Removed.
7998
7999 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
8000 direct calls to scm_rec_mutex_lock / unlock around the three calls
8001 to scm_m_expand_body.
8002
8003 * eval.c, eval.h (promise_free): New function.
8004 (scm_force): Rewritten; Now thread-safe; Removed
8005 SCM_DEFER/ALLOW_INTS.
8006
8007 * pthread-threads.h: Added partially implemented plugin interface
8008 for recursive mutexes. These are, for now, only intended to be
8009 used internally within the Guile implementation.
8010
8011 * pthread-threads.c: New file.
8012
8013 * threads.c: Conditionally #include "pthread-threads.c".
8014
8015 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
8016 thread-safe;
8017
8018 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
8019 SCM_GLOBAL_REC_MUTEX): New macros.
8020
8021 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
8022 macros---use mutexes instead.
8023
8024 * tags.h (SCM_IM_FUTURE): New tag.
8025
8026 * eval.c (scm_m_future): New primitive macro.
8027 (SCM_CEVAL): Support futures.
8028 (unmemocopy): Support unmemoization of futures.
8029
8030 * print.c (scm_isymnames): Name of future isym.
8031
2ff4f181
MD
8032 * version.c: Unmade some changes to my private copy that got
8033 committed by mistake.
8034
392d2833
MD
80352002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8036
e200ddee
MD
8037 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
8038 2002-12-10.
8039
392d2833
MD
8040 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
8041
8042 * gc.c (scm_gc_sweep): Call it here instead, which is a more
8043 logical place.
8044
8045 * threads.c (create_thread): Remember root object until the handle
8046 of the new thread is on all_threads list.
8047
8048 * root.c (scm_make_root): Moved copying of fluids until after
8049 creation of root handle so that the fluids are GC protected. Also
8050 removed the critical section.
8051
c4c52ebe
MD
80522002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8053
960c408c
MD
8054 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
8055
3cdde9d6 8056 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 8057 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
8058 (scm_realloc): Serialize call to realloc
8059 (scm_calloc): Same for calloc.
8060 Thanks to Wolfgang Jaehrling!
8061 (Now we have to make sure all calls to malloc/realloc are made
8062 through scm_malloc.)
8063
960c408c
MD
8064 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
8065
c4c52ebe
MD
8066 * threads.c (really_launch): Release heap (to prevent deadlock).
8067 (create_thread): Release heap before locking thread admin mutex.
8068
b0dc3d71
MD
80692002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8070
8071 * threads.c (scm_i_thread_invalidate_freelists): New
8072 function.
8073
8074 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
8075
8076 * modules.c (scm_export): Inserted a return statement.
8077
06e80f59
HWN
80782002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8079
8080 * modules.c (scm_export): new function
8081
8082 * gc-card.c: add a note about malloc()/free() overhead.
8083
a12611c3
MD
80842002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8085
8086 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
8087 in srcdir.
8088
c7fabadf
MD
80892002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8090
8091 These changes remove scm_ints_disabled (which hasn't has any
8092 effect in Guile for quite some time).
241d9cea 8093
c7fabadf
MD
8094 * async.c, error.h (scm_ints_disabled): Removed.
8095
8096 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
8097 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
8098 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
8099 (old_ints): Removed.
8100
8101 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
8102 critical section.
8103 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
8104 SCM_ALLOW_INTS.
8105
9bc4701c
MD
81062002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8107
52340b65
MD
8108 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
8109 Removed accidental #if 0 around these functions.
8110
9bc4701c
MD
8111 These changes are the start of support for preemptive
8112 multithreading. Marius and I have agreed that I commit this code
8113 into the repository although it isn't thoroughly tested and surely
8114 introduces many bugs. The bugs should only be exposed when using
8115 threads, though. Signalling and error handling for threads is
8116 very likely broken. Work on making the implementation cleaner and
8117 more efficient is needed.
241d9cea 8118
9bc4701c
MD
8119 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
8120 (SCM_NONREC_CRITICAL_SECTION_START,
8121 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
8122 SCM_REC_CRITICAL_SECTION_END): New macros.
8123 (SCM_CRITICAL_SECTION_START/END): Defined here.
8124
8125 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
8126 the three calls to scm_m_expand_body.
8127
8128 * gc.h: #include "libguile/pthread-threads.h";
8129 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
8130
8131 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
8132 scm_t_key;
8133
8134 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
8135 access.
8136
8137 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
8138
8139 * gc-freelist.c, threads.c (really_launch): Use
8140 SCM_FREELIST_CREATE.
8141
8142 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
8143
8144 * gc.c (scm_i_expensive_validation_check, scm_gc,
8145 scm_gc_for_newcell): Put threads to sleep before doing GC-related
8146 heap administration so that those pieces of code are executed
8147 single-threaded. We might consider rewriting these code sections
8148 in terms of a "call_gc_code_singly_threaded" construct instead of
8149 calling the pair of scm_i_thread_put_to_sleep () and
8150 scm_i_thread_wake_up (). Also, we would want to have as many of
8151 these sections eleminated.
8152
8153 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
8154
8155 * inline.h: #include "libguile/threads.h"
8156
8157 * pthread-threads.h: Macros now conform more closely to the
8158 pthreads interface. Some of them now take a second argument.
8159
8160 * threads.c, threads.h: Many changes.
8161
81622002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8163
8164 * Makefile.am (version.h): Changed $^ --> $< in rule for
8165 version.h.
241d9cea 8166
b2cbe8d8
RB
81672002-12-08 Rob Browning <rlb@defaultvalue.org>
8168
8169 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
8170 (SCM_MINOR_VERSION): use @--@ substitution now.
8171 (SCM_MICRO_VERSION): use @--@ substitution now.
8172 (scm_effective_version): new function prototype.
8173
8174 * version.c (scm_effective_version): new function, also add
8175 effective-version.
8176
8177 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
8178 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
8179 SCM_LIBRARY_DIR.
8180 (version.h): generate this here rather than configure.in. This
8181 approach tracks source edits better (i.e. more immediately).
8182 Might be worth considering for other .in files too.
8183
5441c65c
MV
81842002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
8185
8186 Reorganized thread package selection. A thread package now only
8187 implements a small set of pthread like functions and Guile
8188 implements the rest on top of that. Guile's implementation is
8189 what the "coop-pthreads" package has been previously. Support for
8190 "coop" threads has been removed until I get time to add it again.
241d9cea 8191
5441c65c
MV
8192 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
8193 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
8194 null-threads.c, coop-pthreads.c.
8195 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
8196 pthread-threads.h.
241d9cea 8197
5441c65c
MV
8198 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
8199
8200 * threads.h: Do not include "libguile/coop-defs.h". Include
8201 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
8202 (previously deprecated) C level thread API prototypes. They are
8203 now in the thread package specific headers, "null-threads.h" and
8204 "pthread-threads.h".
8205 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
8206 New.
8207 (scm_threads_init): Removed.
8208 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
8209 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
8210 SCM_I_THREAD_SWITCH_COUNT): Define here.
8211 (scm_single_thread_p): Removed.
8212 (scm_call_with_new_thread): Take two args directly instead of list
8213 of two args.
8214 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
8215 SCM_SET_THREAD_LOCAL_DATA): Define here.
8216
8217 * threads.c: Merged with "coop-pthreads.c".
8218
8219 * null-threads.h: Implement pthread-like API as a set of macros.
8220
8221 * pthread-threads.h: New, implement pthread-like API by deferring
8222 to pthread itself.
241d9cea 8223
5441c65c
MV
8224 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
8225 has been lost in the reorganization.
8226
504d99c5
MD
82272002-12-01 Mikael Djurfeldt <mdj@linnaeus>
8228
8229 The following change makes it possible to move procedure
8230 application dispatch outside inner loops. The motivation was
8231 clean implementation of efficient replacements of R5RS primitives
8232 in SRFI-1.
8233
8234 The semantics is clear: scm_trampoline_N returns an optimized
8235 version of scm_call_N (or NULL if the procedure isn't applicable
8236 on N args).
8237
8238 Applying the optimization to map and for-each increases efficiency
8239 noticeably. For example, (map abs ls) is 8 times faster than
8240 before.
8241
8242 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
8243
8244 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
8245
8246 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
8247 (map, for-each): Handle also application on two args as a special
8248 case; Use trampolines.
8249
8250 Other changes:
241d9cea 8251
504d99c5
MD
8252 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
8253 (subr2oless): Removed.
8254 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
8255 vector GC protected.
8256
8257 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
8258 scm_out_of_range.
8259
63dd3413
DH
82602002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8261
8262 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
8263
4ba5f279
MD
82642002-11-17 Mikael Djurfeldt <mdj@linnaeus>
8265
8266 * debug.c (scm_make_iloc): Added missing "return".
8267
56ae231f
MV
82682002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
8269
8270 * strports.c (scm_eval_string_in_module): Validate second arg to
8271 be a module. Thanks to Arno Peters!
8272
80b28865
DH
82732002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8274
8275 * .cvsignore: remove goops.c
8276
c88b1456
DH
82772002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8278
8279 * modules.c (scm_env_top_level, scm_lookup_closure_module,
8280 module_variable, scm_module_lookup_closure,
8281 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
8282 scm_system_module_env_p): Don't compare SCM values with C
8283 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
8284 over SCM_NFALSEP.
8285
a8a19efc
DH
82862002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8287
8288 * eval.h (SCM_MAKE_ILOC): New macro.
8289
8290 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
8291 the iloc bitpattern here.
8292
76734914
MD
82932002-11-14 Mikael Djurfeldt <mdj@linnaeus>
8294
8295 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
8296 part of the API, otherwise it's difficult to write Guile
8297 extensions using non-blocking I/O => moved #include
8298 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
8299
8300 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
8301 s_unlock_mutex.
8302
8b5b4a75
MV
83032002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
8304
8305 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
8306 are defined in configure.in.
8307
8308 * threads.c: Removed SCM_API from function definitions. SCM_API
8309 is only for declarations.
8310
e5a83084
MD
83112002-11-07 Mikael Djurfeldt <mdj@linnaeus>
8312
9be8bb45
MD
8313 * coop-pthreads.h: Added support for thread specific data to the
8314 generic C API for the coop-pthreads case.
8315
e5a83084
MD
8316 * threads.c, threads.h (scm_cond_init): Undo unintentional API
8317 change.
6c214b62 8318 (scm_cond_broadcast): Added missing function.
e5a83084 8319
7edf178e
MV
83202002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8321
8322 * coop.c (coop_next_runnable_thread): Removed, wich should have
8323 happened when GUILE_ISELECT was hard-wired.
8324
7f5b1b77
MV
83252002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
8326
7caa1b07
MV
8327 * Makefile.am (libguile_la_SOURCES): Added threads.c
8328 (DOT_DOC_FILES): Added threads.doc.
8329 (DOT_X_FILES): Added threads.x.
8330 (EXTRA_libguile_la_SOURCES): Removed threads.c.
8331 (noinst_HEADERS): Added coop-pthreads.c.
8332 (modinclude_HEADERS): Added coop-pthreads.h.
8333
8334 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
8335 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
8336
bb11cbf4
MV
8337 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
8338 Thanks to Bill Schottstaedt!
8339
1d4cbbed
MV
8340 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
8341
7f5b1b77
MV
8342 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
8343 SCM_COPT_THREADS is defined.
8344 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
8345 is defined.
241d9cea 8346
7f5b1b77
MV
8347 * coop-pthreads.c: Some harmless renamings of internal stuff.
8348 (create_thread): New, generalized version of
8349 scm_call_with_new_thread.
8350 (scm_call_with_new_thread): Use it.
8351 (scm_spawn_thread): New, use create_thread.
241d9cea 8352
d52f53b1
MV
83532002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
8354
8355 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
8356 start testing it now.
8357
8358 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
8359 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
8360 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
8361 is defined.
8362
30f920c3
MV
83632002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
8364
8365 * scmsigs.c (signal_cell_handlers, install_handler_data,
8366 scm_delq_spine_x, really_install_handler, install_handler): New
8367 scheme for triggering signal handlers, to simplify take_signal.
8368 (take_signal): Simplified, to avoid race conditions.
8369 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
8370 hasn't exited yet.
241d9cea 8371
30f920c3
MV
8372 * async.c (scm_async_click): Reset pending_asyncs, handle
8373 signal_asyncs. Don't set cdr of a non-signal async to #f.
8374 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
8375 always. Set pending_asyncs.
8376 (scm_system_async_mark_for_thread): Check that thread has not
8377 exited.
8378 (scm_unmask_signals, decrease_block): Call scm_async_click after
8379 block_asyncs becomes zero.
241d9cea 8380
30f920c3
MV
8381 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
8382 active_asyncs.
8383
8384 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
8385 fields.
8386 * root.c (root_mark): Mark them.
8387 (make_root): Initialize them.
241d9cea 8388
30f920c3
MV
8389 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
8390 USE_COOP_THREADS.
8391 (scm_internal_select): Define one version for USE_COOP_THREADS and
8392 one for USE_NULL_THREADS.
8393 (scm_init_iselect): Likewise.
241d9cea 8394
30f920c3
MV
8395 * inline.h (scm_cell, scm_double_cell): Also allow
8396 USE_COPT_THREADS to not protect the slot initializers.
241d9cea 8397
30f920c3
MV
8398 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
8399 because threads need to be initialized before the stack, but
8400 gsubrs such as scm_timed_condition_variable_wait can only be
8401 created later.
8402
8403 * threads.h: Include "coop-pthreads.h" when requested.
8404 (scm_threads_make_mutex, scm_threads_lock_mutex,
8405 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
8406 not implemented anyway.
8407 (scm_init_thread_procs, scm_try_mutex,
8408 scm_timed_condition_variable_wait,
8409 scm_broadcast_condition_variable, scm_c_thread_exited_p,
8410 scm_thread_exited_p): New prototypes.
8411 (struct timespec): Define if not already defined.
8412 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8413 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8414 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8415 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
8416 deprecated.
8417
8418 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
8419 requested.
8420 (scm_thread_exited_p): New.
8421 (scm_try_mutex, scm_broadcast_condition_variable): Newly
8422 registered procedures.
8423 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
8424 Use the latter as the procedure for "wait-condition-variable",
8425 thus offering a optional timeout parameter to Scheme.
8426 (scm_wait_condition_variable): Implement in terms of
8427 scm_timed_wait_condition_variable.
8428 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8429 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
8430 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8431 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
8432 scm_make_mutex, etc, and deprecate.
8433 (scm_init_threads): Do not create smobs, leave this to
8434 scm_threads_init. Do not include "threads.x" file.
8435 (scm_init_thread_procs): New, include "threads.x" here.
8436
8437 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
8438 scm_null_mutex_lock, scm_null_mutex_unlock,
8439 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
8440 scm_null_condvar_wait, scm_null_condvar_signal,
8441 scm_null_condvar_destroy): Removed.
8442 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
8443 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
8444 scm_cond_destory): Do not define, they are now deprecated and
8445 handled by threads.{h,c}.
241d9cea 8446
30f920c3
MV
8447 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
8448 (scm_threads_init): Create smobs here, using the appropriate
8449 sizes.
8450 (block): Removed, now unused.
8451 (scm_c_thread_exited_p): New.
8452 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
8453 scm_null_mutex_destroy, scm_null_condvar_init,
8454 scm_null_condvar_wait, scm_null_condvar_signal,
8455 scm_null_condvar_destroy): Removed and updated users to do their
8456 task directly.
8457 (scm_try_mutex, timeval_subtract,
8458 scm_timed_wait_condition_variable,
8459 scm_broadcast_condition_variable): New.
8460 (scm_wait_condition_variable): Removed.
8461
8462 * coop-defs.h (coop_m): Added 'level' field.
8463 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8464 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8465 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8466 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
8467 define.
8468 (coop_condition_variable_broadcast): New.
8469
8470 * coop-threads.c (scm_threads_init): Create smobs here, using the
8471 appropriate sizes.
8472 (scm_c_thread_exited_p, scm_try_mutex,
8473 scm_timed_wait_condition_variable,
8474 scm_broadcast_condition_variable): New.
8475 (scm_wait_condition_variable): Removed.
8476
8477 * coop.c (coop_new_mutex_init): Initialize level.
8478 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
8479 level.
8480 (coop_condition_variable_signal): Renamed to
8481 coop_condition_variable_broadcast and reimplemented in terms of
8482 that. Thus...
8483 (coop_condition_variable_broadcast): New.
8484
8485 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
8486
8487 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
241d9cea 8488
087ed40d
MV
84892002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
8490
65a23095
MV
8491 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
8492 of system headers.
8493
087ed40d
MV
8494 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
8495 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 8496 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 8497
5ec1d2c8
DH
84982002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8499
8500 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
8501 scm_definedp to scm_defined_p and deprecated scm_definedp.
8502
100ae50d
DH
85032002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8504
8505 * async.h, async.c (scm_system_async): Fixed deprecation to work
8506 correctly when deprecated features are excluded.
8507
2794cb50
MV
85082002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8509
8510 * async.c (scm_system_async_mark_for_thread): Validate thread
8511 argument.
8512
8513 * coop-threads.c (scm_i_thread_root): Do not validate argument.
8514
8515 * feature.c (scm_init_feature): Don't add 'threads' for
8516 USE_NULL_THREADS.
8517
8518 * inline.h (scm_cell, scm_double_cell): Also allow
8519 USE_NULL_THREADS to not protect the slot initializers.
8520
8521 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
8522 "USE_THREAD".
8523
8524 * Makefile.am (noinst_HEADERS): Added null-threads.c.
8525 (modinclude_HEADERS): Added null-threads.h.
8526
8527 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
8528 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
8529 (scm_init_threads): Use generic type names scm_t_mutex and
8530 scm_t_cond instead of coop_m and coop_c.
8531
8532 * null-threads.c, null-threads.h: New files.
8533
ff810d7a
MV
85342002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
8535
8536 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
8537 This is to support makes that know about "$<" only in pattern
8538 rules, like Sun's make.
8539
a90bdb73
MV
85402002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
8541
8542 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
8543 substitution. Thanks to David Allouche!
8544
e71a8bf2
DH
85452002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8546
8547 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
8548 !SCM_ENABLE_DEPRECATED.
8549
41f77ff5
MV
85502002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8551
504d99c5 8552 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
8553 scm_i_thread_root when USE_THREADS is defined. Use scm_root
8554 otherwise.
8555
8556 * scmsigs.c (take_signal): Only call scm_i_thread_root when
8557 USE_THREADS is defined. Use scm_root otherwise.
8558 (scm_sigaction_for_thread): Ignore THREAD argument when
8559 USE_THREADS is not defined. Also, move THREAD argument defaulting
8560 out of HAVE_SIGACTION section, which was a bug.
8561
6d16b125
MV
85622002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8563
8564 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
8565 signal_handlers, not the closure that is used as the async.
8566 The closure is stored in signal_handler_cells, as previously.
241d9cea 8567
acfa1f52
MV
85682002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
8569
8570 * root.h (scm_root_state): Added 'block_async' slot.
8571 (scm_active_asyncs): Removed abbrev.
8572 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
8573
8574 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
8575 abbrev.
8576
8577 * async.h (scm_call_with_blocked_asyncs,
8578 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8579 scm_c_call_with_unblocked_asyncs): New prototypes.
8580 (scm_mask_signals, scm_unmask_signals): Deprecated.
8581 (scm_mask_ints): Turned into a macro.
8582 * async.c (scm_mask_ints): Removed.
8583 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
8584 this should not be necessary.
8585 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
8586 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
8587 deprecation warning and check for errornous use. Set block_asyncs
8588 instead of scm_mask_ints.
8589 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
8590 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8591 scm_c_call_with_unblocked_asyncs): New.
241d9cea 8592
acfa1f52
MV
8593 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
8594 Asyncs are enabled by default.
8595
34010f56
NJ
85962002-10-09 Neil Jerram <neil@ossau.uklinux.net>
8597
8598 * vports.c (scm_make_soft_port): Allow vector argument to carry a
8599 6th element: an input waiting thunk.
8600 (sf_input_waiting): New.
8601
9310d6f2
MV
86022002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
8603
8604 * root.c (root_mark): Mark active_asyncs slot.
8605
8606 * async.c (scm_async_click): Set the cdr of a executed handler
8607 cell to SCM_BOOL_F, not SCM_EOL.
8608 (scm_i_queue_async_cell): Queue the cell at the end of the list,
8609 and only if the handler procedure is not already present.
8610 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
8611 with SCM_BOOL_F.
8612 * scmsigs.c (scm_sigaction_for_thread): Likewise.
241d9cea 8613
ac48c719
RB
86142002-10-04 Rob Browning <rlb@defaultvalue.org>
8615
1360a142
RB
8616 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
8617
8618 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
8619 scm_lt_dlopenext, and scm_lt_dlerror.
8620 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
8621 and scm_lt_dlerror.
8622 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
8623 and scm_lt_dlerror.
8624 (sysdep_dynl_init): switch to scm_lt_dlinit();
8625
8626 * Makefile.am (libguile_la_LIBADD): switch to use
8627 libguile-ltdl.la.
8628
504d99c5 8629 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 8630
497092c9
MV
86312002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
8632
8633 * scmsigs.h (scm_sigaction_for_thread): New prototype.
8634 * scmsigs.c (got_signal): Removed.
8635 (signal_handler_cells, signal_handler_threads): New.
8636 (take_signal): Queue the cell of the signal for the specified
8637 thread. Reset the signal handler on systems that don't have
8638 sigaction.
8639 (sys_deliver_signals): Removed.
8640 (close_1): New.
8641 (scm_sigaction_for_thread): Renamed from scm_sigaction and
8642 extended to also set the thread of a signal and allocate a cell
8643 for it. Keep the Scheme name "sigaction". Check that signum is
8644 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
8645 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
8646 (scm_init_scmsigs): Allocate signal_handler_cells and
8647 signal_handler_threads vectors.
8648
8649 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
8650 that system asnycs and user asyncs are separated. Reimplemented
8651 system asyncs to work per-thread.
8652
8653 * gc.c (scm_init_gc): Do not use scm_system_async.
8654
8655 * async.h (scm_asyncs_pending, scm_set_tick_rate,
8656 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
8657 Removed prototypes.
8658 (scm_i_queue_async_cell): New.
241d9cea 8659
497092c9
MV
8660 * __scm.h (scm_asyncs_pending_p): Removed.
8661 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
8662 scm_asyncs_pending_p.
8663
8664 * async.h (scm_system_async_mark_for_thread): New prototype.
8665
8666 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
8667
8668 * root.h (scm_root_state): Added new "active_asyncs" slot.
8669 * root.c (scm_make_root): Initialize it to SCM_EOL.
8670
8671 * coop-defs.h (coop_t): Added new "handle" slot.
8672 * coop-threads.c (all_threads, scm_current_thread,
8673 scm_all_threads, scm_i_thread_root): New.
8674 (scm_threads_init): Add main thread to all_threads.
8675 (scheme_launch_thread): Remove thread from all_threads when it
8676 terminates.
8677 (scm_call_with_new_thread): Initialize handle slot of coop_t
8678 structure and add new thread to all_threads.
8679 (scm_spawn_thread): Likewise.
8680
8681 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
8682 * threads.c (scm_current_thread, scm_all_threads): Register as
8683 primitives.
8684
8685 * dynl.c: Use scm_lt_ prefix for libltdl functions.
8686
480fa28d
NJ
86872002-09-29 Neil Jerram <neil@ossau.uklinux.net>
8688
8689 * script.c (scm_compile_shell_switches): Fix bad spelling of
8690 `explicitly' in comment.
8691
86922002-09-28 Neil Jerram <neil@ossau.uklinux.net>
8693
8694 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
8695 Refer to provided? in doc string rather than deprecated feature?.
8696
3553e1d1
GH
86972002-09-24 Gary Houston <ghouston@arglist.com>
8698
8699 * inline.h (scm_double_cell): prevent reordering of statements
8700 with any following code (for GCC 3 strict-aliasing).
8701 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8702 the earlier version of the reordering prevention.
8703
4ad0814a
HWN
87042002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8705
241d9cea 8706 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
4ad0814a 8707
e88e4f2e
HWN
87082002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8709
8710 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8711 protection.
8712
1e71eafb
HWN
87132002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8714
8715 * inline.h: include stdio.h
8716
8717 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8718
61ef9c1f
HWN
87192002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8720
dac04e9f
HWN
8721 * gc-segment.c (scm_i_make_initial_segment): check user settings
8722 for sanity.
8723
8724 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8725 sanity.
dac04e9f 8726
241d9cea 8727 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
dac04e9f 8728
ffd72400
HWN
8729 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8730
8731 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
8732 these won't ever wrap around with high memory usage. Thanks to
8733 Sven Hartrumpf for finding this.
ffd72400 8734
5bd4a949
HWN
8735 * gc-freelist.c: include <stdio.h>
8736
61ef9c1f
HWN
8737 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8738
ffd0ef3b
MV
87392002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8740
a27e3d14
MV
8741 * vectors.h (SCM_VECTOR_REF): New.
8742
ffd0ef3b
MV
8743 * snarf.h (SCM_DEFINE_PUBLIC): New.
8744
f8a1712b
MV
87452002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8746
8747 * socket.c (scm_addr_vector): Added size of address to arguments.
8748 Use it to avoid accessing a non-existent path in a sockaddr_un.
8749 Changed all callers.
8750
7200a36b
HWN
87512002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8752
1383773b
HWN
8753 * gc.h: remove DOUBLECELL card flags.
8754
8755 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8756 scm_realloc().
8757
8758 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8759 init loop; handle this from scm_init_card_freelist()
8760
8761 * gc-card.c (scm_init_card_freelist): init bit vector here.
8762
7200a36b 8763 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 8764 num2float.i.c (FLOAT2NUM): idem
7200a36b 8765
9981de3a
HWN
87662002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8767
8768 * eval.h: prepend libguile/ to include path
8769
19647556
MV
87702002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8771
8772 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
9a5fa6e9 8773 years. Thanks to Martin Grabmüller!
19647556 8774
38d1262a
HWN
87752002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8776
8777 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8778 unsigned numbers for computing minimum heap increment. This
8779 prevents weird results when a a negative minimum increment is
8780 computed.
8781
f800ebfb
MV
87822002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8783
8784 * gc_os_dep.c: When we have __libc_stack_end, use that directly
19647556 8785 instead of the old tricks.
f800ebfb
MV
8786
8787 * guile-snarf.in: Do not expect the input file to be the first
8788 argument after the optional "-o" option, just pass everything to
8789 the pre-processor without extracting the input file name.
8790
4a5309c9
HWN
87912002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8792
8793 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
241d9cea 8794 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
4a5309c9 8795
f2893a25
HWN
87962002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8797
8798 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8799 Bill Schottstaedt for the bug report
8800
483f518b
MV
88012002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8802
8803 * print.c (scm_iprin1): Print primitives generics always as
8804 "primitive-generic" even when they have no primitive methods yet.
8805
917adc55
GH
88062002-08-17 Gary Houston <ghouston@arglist.com>
8807
8808 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8809 call.
8810
67329a9e
HWN
88112002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8812
85835e59 8813 * ports.c (scm_add_to_port_table): small bugfix.
67329a9e
HWN
8814
8815 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8816 malloc.
8817
8818 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8819 only use SCM_MIN_HEAP_SEG_SIZE.
8820
8821 * ports.c (scm_add_to_port_table): add backwards compatibility
8822 function
8823
8824 * ports.h: use scm_i_ prefix for port table and port table size.
241d9cea 8825
f07c886a
MD
88262002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8827
8828 * vports.c (scm_make_soft_port): Initialize pt variable.
8829
dc61cbc6
MV
88302002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8831
8832 * strports.h (scm_c_eval_string_in_module,
8833 scm_eval_string_in_module): New prototypes.
8834 * strports.c (scm_eval_string_in_module): New, but use
8835 "eval-string" as the Scheme name and make second parameter
8836 optional.
8837 (scm_eval_string): Implement using scm_eval_string_in_module.
8838 (scm_c_eval_string_in_module): New.
8839 Thanks to Ralf Mattes for the suggestion!
241d9cea 8840
da220f27
HWN
88412002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8842
be3ff021
HWN
8843 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8844 message and abort.
241d9cea 8845
be3ff021
HWN
8846 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8847
da220f27
HWN
8848 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8849 stead of scm_t_port*. The function now takes a tag argument.
8850
eab1b259
HWN
88512002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8852
8853 * gc.h: add scm_debug_cells_gc_interval to public interface
8854
8855 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8856
8857 * gc.c (scm_i_expensive_validation_check): separate expensive
8858 validation checks from cheap ones.
8859
ba1b2226
HWN
88602002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8861
8862 * read.c (scm_input_error): new function: give meaningful error
8863 messages, and throw read-error
8864
8865 * gc-malloc.c (scm_calloc): add scm_calloc.
8866
39e8f371
HWN
88672002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8868
241d9cea 8869 * tags.h: remove GC bits documentation from the tags table.
33138b05 8870
39e8f371
HWN
8871 * read.c (INPUT_ERROR): Prepare for file:line:column error
8872 messages for errors in scm_lreadr() and friends.
8873
88742002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8875
8876 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
241d9cea 8877 implementation).
39e8f371
HWN
8878 (scm_gc_calloc): new function
8879
26e68795 88802002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
402788a9 8881
5f16b897
HWN
8882 * ports.c (scm_new_port_table_entry): init port entry to 0
8883 completely.
241d9cea 8884
402788a9
HWN
8885 * ports.c (scm_new_port_table_entry): change function from
8886 scm_add_to_port_table. This prevents cells with null-pointers from
8887 being exposed to GC.
8888
504d99c5 8889 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
402788a9 8890 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
c8a1bdc4 8891
504d99c5 8892 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
c2cbcc57
HWN
8893 to gc-stats.
8894
c8a1bdc4
HWN
8895 * numbers.c (big2str): return "0" for 0 iso. ""
8896
c2cbcc57
HWN
8897 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8898 private-gc.h: new file
c8a1bdc4
HWN
8899
8900 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8901 sweeping. More documentation in workbook/newgc.text
8902
aea06b34
MV
89032002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8904
8905 * random.c (rstate_free): Return zero.
8906
35060ae9
DH
89072002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8908
8909 * environments.c (remove_key_from_alist): Removed.
8910
8911 (obarray_remove): Simplified.
8912
6a535440
SJ
89132002-07-24 Stefan Jahn <stefan@lkcc.org>
8914
241d9cea 8915 * continuations.h: ia64: Include <signal.h> before
6a535440
SJ
8916 <sys/ucontext.h>.
8917
bcbd25b7
DH
89182002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8919
8920 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8921
26e68795 89222002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1d1559ce
HWN
8923
8924 * goops.c (scm_compute_applicable_methods): use
8925 scm_remember_upto_here_1 iso scm_remember_upto_here
8926
8927 * macros.c: include deprecation.h
8928
504d99c5 8929 * vectors.c (scm_vector_move_right_x): remove side effect in
1d1559ce 8930 macro arg.
504d99c5 8931 (scm_vector_move_left_x): idem.
1d1559ce
HWN
8932
8933 * net_db.c, posix.c, socket.c: variable naming: change ans to
8934 result.
8935
8936 * sort.c (scm_merge_vector_x): accept vector as argument
8937 iso. SCM*. This is needed for full GC correctness.
8938
8939 * gc.h: undo previous undocumented changes related to #ifdef
8940 GENGC.
8941
26e68795 89422002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
34d19ef6
HWN
8943
8944 * *.c: add space after commas everywhere.
8945
8946 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8947 Document cases where SCM_WRITABLE_VELTS() is used.
241d9cea 8948
34d19ef6
HWN
8949 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8950 SCM_VELTS() return a const pointer
8951 (SCM_VECTOR_SET): add macro.
8952
3063e30a
DH
89532002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8954
8955 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8956 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8957 Deprecated the special kind of built-in dynamic syntax transformer
8958 that was inaccurately named "macro". Note: The built-in syntax
8959 transformers that are named "mmacro" or "memoizing-macro" still
8960 exist, and it is these which come much closer to what one would
8961 call a macro.
8962
4c5f8e8f
NJ
89632002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8964
8965 * eval.c (unmemocopy): Fix for
8966 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8967 with internal definitions and local-eval).
8968
4f6f9ae3
GH
89692002-07-12 Gary Houston <ghouston@arglist.com>
8970
8971 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8972 defined. They don't do anything useful, especially since the
8973 only case where DYNAMIC_LINKING is undefined seems to be
8974 when --with-modules=no is given to configure, which is basically
8975 requesting that the "dynamic linking module" be omitted.
8976
8977 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8978 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8979
8980 * extensions.c (load_extension): check DYNAMIC_LINKING for
8981 scm_dynamic_call.
8982 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8983 scm_init_dynamic_linking.
8984
c21935e6
MV
89852002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8986
8987 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8988 check for Cygwin when including <winsock2.h>, this is already
8989 check for by configure. Thus, revert change from 2002-07-07.
8990
ee95d597
GH
89912002-07-10 Gary Houston <ghouston@arglist.com>
8992
9540b68f 8993 * eq.c: include <string.h>
ee95d597
GH
8994 * dynl.c: docstring editing.
8995
46732b54
GH
89962002-07-09 Gary Houston <ghouston@arglist.com>
8997
8998 * dynl.c (scm_dynamic_call): docstring editing.
8999
c09d12e0
RB
90002002-07-08 Rob Browning <rlb@defaultvalue.org>
9001
9002 * gc_os_dep.c: HURD fixes.
9003
3f6571eb
MV
90042002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
9005
9006 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
9007
9008 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
9009 this should be compiled for BUILD host.
9010 Override default rule for
9011 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
9012 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
9013 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
9014
9015 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
9016 <winsock2.h> on Cygwin even when we have it.
9017
bd987b8e
DH
90182002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9019
9020 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
9021 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
9022 the code. Full number of arguments checking of closures is
9023 mandatory now. However, the option to disable the checking has
9024 most probably not been used anyway.
9025
8505e285
DH
90262002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
9027
bd987b8e
DH
9028 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
9029 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
9030 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
9031 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
9032 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
9033 (scm_source_properties, scm_set_source_properties_x,
9034 scm_source_property): Removed compile time option SCM_RECKLESS to
9035 clean up the code. Full number of arguments checking of closures
9036 is mandatory now. However, the option to disable the checking has
9037 most probably not been used anyway.
8505e285
DH
9038
9039 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
9040 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
9041
2ee08a28
GH
90422002-06-30 Gary Houston <ghouston@arglist.com>
9043
732b9327
GH
9044 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
9045 do anything useful. Added a comment about need for a mutex if
9046 pre-emptive threading is supported.
9047
2ee08a28
GH
9048 * posix.c (scm_convert_exec_args), dynl.c
9049 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
9050 allocate_string_pointers. 2) simplified: don't reallocate the
9051 strings, just make an array of pointers 3) avoid memory leaks on
9052 error 4) let the procedure report errors in its own name.
9053 Consequences: 1) the procedures now assume that SCM strings are
9054 nul-terminated, which should always be the case. 2) Since strings
9055 are not reallocated, it's now possible for strings passed to
9056 dynamic-args-call to be mutated.
9057
c136c920
DH
90582002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9059
9060 * __scm.h, eval.c, eval.h: Removed compile time option
9061 MEMOIZE_LOCALS to clean up the code. Now, caching of local
9062 variable positions during memoization is mandatory. However, the
9063 option to disable the caching has most probably not been used
9064 anyway.
9065
e540802f
MV
90662002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
9067
9068 * print.c (scm_simple_format): Print missing part of format before
9069 ~% control. Thanks to Daniel Skarda!
9070
4c1ffcdd
MV
90712002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
9072
9073 * mkstemp.c: Added exception notice to license statement.
9074
ba1b077b
MV
90752002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
9076
8dc434c7
MV
9077 * numbers.c (mem2ureal): When returning an inexact zero, make sure
9078 it is represented as a floating point value so that we can change
9079 its sign.
9080
ba1b077b
MV
9081 From John W. Eaton <jwe@bevo.che.wisc.edu>
9082
9083 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
9084
74c58131
TTN
90852002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
9086
9087 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
0926d46e 9088 in addition to `i386'. Thanks to Dale P. Smith.
74c58131 9089
8766d4b5
MV
90902002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
9091
9092 * eq.c (real_eqv): New.
9093 (scm_eqv_p): Use it when comparing reals and complexes.
9094
9095 * numbers.c: Include <string.h>, for strncmp.
9096 (mem2complex): Do not create negative NaNs.
9097 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
9098 NaN.
9099 (scm_inexact_to_exact): Signal error when converting a NaN.
74c58131 9100
1d8c3cad
MV
91012002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
9102
9103 * posix.c (scm_putenv): Handle removing variables explicitely by
9104 calling unsetenv.
9105
9106 From John W. Eaton.
74c58131 9107
1d8c3cad
MV
9108 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
9109 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
9110 and scm_nan.
9111 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
9112 [SCO && ! HAVE_ISINF] (isinf): New function.
9113 (xisinf, xisnan): New functions.
9114 (IS_INF): Delete.
9115 (isfinite): Define in terms of xisinf.
9116 (scm_inf_p, scm_nan_p): New functions.
9117 (guile_Inf, guile_NaN): New file-scope vars.
9118 (guile_ieee_init): New function.
9119 (scm_inf, scm_nan): New functions.
9120 (idbl2str): Handle Inf and NaN. Remove funny label and
9121 corresponding gotos.
9122 (ALLOW_DIVIDE_BY_ZERO): New macro.
9123 (scm_divide): Allow division by zero to occur if
9124 ALLOW_DIVIDE_BY_ZERO is defined.
9125 Handle bignums and ints as special cases.
9126
9127 Additional stuff by me:
9128
9129 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
9130 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
9131 (iflo2str): Don't output a '+' for negative numbers or for Inf and
9132 NaN. They will provide their own sign.
9133 (scm_divide): Only allow divides by inexact zeros. Dividing by
9134 exact zeros still signals an errors.
74c58131 9135
7a0c65eb
TTN
91362002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
9137
87b72063 9138 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb 9139 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
504d99c5 9140 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb
TTN
9141 Thanks to Andreas Rottmann.
9142
5e423a39
GH
91432002-04-20 Gary Houston <ghouston@arglist.com>
9144
9145 * removal of unused fields in root state (thanks to Christopher
9146 Cramer for pointing out the disuse.)
9147 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1841c44a 9148 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
b6287a25 9149
5e423a39
GH
9150 * root.c (root_mark): don't mark them.
9151 (scm_make_root): don't set them to #f.
9152 * init.c (scm_init_standard_ports): don't initialise with the
9153 default ports.
9154
9d2cce76
MV
91552002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
9156
9157 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
9158 cpp_sig_symbols.c.
9159
91602002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
9161
9162 * guile-snarf.in: Do not clean input file. This would write to
9163 the $(srcdir) during a VPATH build, which is not allowed. It also
9164 isn't needed since it only works when an output filename has been
9165 specified and in that case we don't need to clean the input file
9166 because the output file will already exist.
9167
6f79b6cc
MV
91682002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
9169
9170 * guile-snarf: Install the trap for removing $cleanfile only when
9171 the value of $cleanfile is actually known.
9172
21550b10
RB
91732002-04-10 Rob Browning <rlb@defaultvalue.org>
9174
9175 * .cvsignore: add versiondat.h and *.c.clean.c.
9176
bc76d628
DH
91772002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
9178
9179 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
9180 function, replaces macro SRCBRKP.
9181
9182 (SRCBRKP): Deprecated.
9183
9184 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
9185 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
9186 temporary variable.
9187
5132eef0
DH
91882002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9189
9190 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
9191 CHECK_EXIT and removed all references to them.
9192
680516ba
DH
91932002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
9194
9195 * debug.h (scm_ready_p, debug_print): Removed declarations.
9196
9197 * eval.c (EVALCELLCAR): Removed.
9198
9199 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
9200 operation from condition.
9201
e2bd68e0
MV
92022002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
9203
9204 * guile-snarf.in: When the output filename is "-", write to
9205 stdout. When no "-o" option is given, use "-" as the output
9206 filename (i.e., stdout). Only 'clean' the inputfile or remove the
9207 output file on error when the output file name is not "-". Define
9208 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
9209
9210 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
9211
ab1f1094
DH
92122002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
9213
9214 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
9215 and the corresponding goto statements. Removed redundant code.
9216
42030fb2
DH
92172002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
9218
9219 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
9220 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
9221 Re-enabled handing of rpsubrs and asubrs.
9222
e050d4f8
DH
92232002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
9224
9225 * eval.c (SIDEVAL): Removed.
9226
9227 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
9228 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
9229 argument checking order for set! to locals, variables and symbols.
9230 Improvements to control structure. Removed some uses of arg1 and
9231 arg2 as temporary variables.
9232
a6d344d3
TTN
92332002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
9234
9235 * guile-snarf.in: Remove "--compat=1.4" support.
9236 Add "-d" and "-D" support.
9237
9238 (deprecated_list): New var.
9239 (compat_mode_clean_xxx): Delete.
9240 (grep_deprecated): New func.
9241 ("main"): If "-d" or "-D", call `grep_deprecated'.
9242
3939e9df
NJ
92432002-03-15 Neil Jerram <neil@ossau.uklinux.net>
9244
387d418c
NJ
9245 * hooks.h: Change scm_t_c_hookype_t everywhere to
9246 scm_t_c_hook_type.
9247
bb2c02f2 9248 Docstring fixes:
a6d344d3 9249
bb2c02f2
NJ
9250 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
9251
9252 * ports.c (scm_sys_make_void_port): Use `@file'.
9253
9254 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
9255 than `else'.
9256
9257 * macros.c (scm_makmacro): Don't say that the form replaces its
9258 source, because it doesn't.
9259 (scm_makmmacro): Clarify difference between this and scm_makmacro.
9260
9261 * backtrace.c (scm_display_error), filesys.c (scm_umask,
9262 scm_select, scm_basename), goops.c (scm_method_generic_function),
9263 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
9264 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
9265 spelling mistakes.
9266
3939e9df
NJ
9267 * debug.c (scm_debug_options), eval.c
9268 (scm_eval_options_interface), read.c (scm_read_options): Change
9269 incorrect @var in docstring to @code.
9270
3b3cc781
MV
92712002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
9272
500b0d5b
MV
9273 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
9274
3b3cc781
MV
9275 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
9276 guile-snarf can remove trailing non-init code.
9277
9278 * guile-snarf.in (modern_snarf): Remove everything following and
9279 including "^:^" from the output.
9280
dff98306
DH
92812002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9282
9283 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
9284
9285 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
9286
2287fb53
TTN
92872002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
9288
9289 * guile-snarf.in: Update copyright.
9290 Rewrite to internalize error handling.
9291 Add "--compat=1.4" handling.
9292 Add commentary.
9293
9294 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
9295 (snarfcppopts): New var.
9296 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
9297 (.c.doc): Use $(snarfcppopts).
9298
822250a4
TTN
9299 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
9300 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
9301 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
9302 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
9303 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
9304 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
9305 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
9306 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
9307 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
9308 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
9309 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
9310 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
9311 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
9312 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
9313
b7798e10
DH
93142002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9315
9316 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
9317 The next step will be to remove the union 't' and simplify the
9318 code of SCM_CEVAL that way.
9319
04a98cff
NJ
93202002-03-12 Neil Jerram <neil@ossau.uklinux.net>
9321
9322 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
9323 rreadfds, rwritefds, rexceptfds): Made static.
9324
9325 * gc.c (terminating), fports.c (terminating): Renamed
9326 scm_i_terminating.
9327
16d98032
MV
93282002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
9329
5046250e
MV
9330 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
9331 potential overflow problems. Thanks to John W Eaton!
9332
8794207d
MV
9333 * strop.c (string_capitalize_x): Treat characters as unsigned so
9334 that 8-bit chars work. Thanks to David Pirotte!
16d98032 9335
1d15ecd3
DH
93362002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9337
9338 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
9339 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
9340 proc as temporary variables. Introduced temporary variables with
9341 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9342 by a more explicit predicate in some places.
9343
93442002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
f12745b6
DH
9345
9346 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
9347 Added lots of comments regarding the implementation of #@dispatch.
9348 Changed intra-procedure communication to use t.arg1 instead of
9349 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
9350 variables. Introduced temporary variables with hopefully
9351 descriptive names for clarification. Replaced SCM_N?IMP by a more
9352 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
9353 of computing the expression explicitly. Eliminate now unused
9354 label nontoplevel_cdrxbegin.
9355
9356 * goops.h (SCM_INSTANCE_HASH): New macro.
9357
9358 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
9359
1ebf1566
TTN
93602002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9361
9362 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
9363 "guile-snarf" moved back from `noinst_SCRIPTS'.
9364
020c890c
NJ
93652002-03-08 Neil Jerram <neil@ossau.uklinux.net>
9366
58d233cc
NJ
9367 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
9368 exists when adding a source property other than those that are
9369 handled explicitly, add the new property to the SRCPROPS obj's
9370 plist.
9371
020c890c
NJ
9372 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
9373 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
9374
9375 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
9376 debug.status. It isn't needed, and it can overflow the bits
9377 reserved for it (which may lead to a segv or a GC abort).
9378
3f04400d
DH
93792002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9380
9381 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
9382 side-effecting operations from conditions and macro calls.
9383 Replaced SCM_N?IMP by a more explicit predicate in some places.
9384 Minimized the scope of some variables.
9385
97820583
SJ
93862002-03-02 Stefan Jahn <stefan@lkcc.org>
9387
9388 * convert.i.c: Fixed int <-> long conversions which would have
9389 failed if their sizes were different.
9390
38ace99e
DH
93912002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9392
9393 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
9394 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
9395 as temporary variables. Removed side-effecting operations from
9396 conditions and macro calls. Introduced temporary variables with
9397 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9398 by a more explicit predicate in some places. Removed code that
9399 was conditionally compiled if SICP was defined - which it never
9400 is.
9401
e5cb71a0
DH
94022002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9403
9404 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
9405 Removed some uses of t.arg1 and proc as temporary variables.
9406 Removed side-effecting operations from conditions and macro calls.
9407 Introduced temporary variables with hopefully descriptive names
9408 for clarification. Replaced SCM_N?IMP by a more explicit
9409 predicate in some places.
9410
6a0f6ff3
DH
94112002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9412
9413 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
9414 explicit predicate in some places.
9415
9416 (CHECK_EQVISH): Removed.
9417
9418 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
9419 variables. Removed side-effecting operations from conditions and
9420 macro calls. Introduced temporary variables for clarification.
9421 Sorted if-else-if check for the type of the last form in a list by
9422 frequency. Avoided some unnecessary tail-recursion calls.
9423
228a24ef
DH
94242002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9425
9426 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
9427 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
9428 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
9429 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
9430 scm_cell and all its uses to scm_t_cell in accordance to Guile's
9431 naming scheme for types.
9432
9433 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
9434 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
9435 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
9436 (scm_make_environment), eval.c (scm_closure), fports.c
9437 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
9438 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
9439 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
9440 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
9441 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
9442 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
9443 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
9444 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
9445 scm_alloc_cell to scm_cell.
9446
9447 * environments.c (core_environments_observe), gc.c
9448 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
9449 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
9450 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
9451 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
9452 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
9453 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
9454 (allocate_weak_vector): Renamed scm_alloc_double_cell to
9455 scm_double_cell.
9456
edb810bb
SJ
94572002-02-27 Stefan Jahn <stefan@lkcc.org>
9458
9459 * convert.i.c, convert.c: Better range checking.
9460
9461 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
9462
1ebf1566 9463 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
edb810bb
SJ
9464 Windows (MinGW).
9465
327d4dd3
TTN
94662002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
9467
9468 * Makefile.am: Update path to pre-inst-guile automake frag.
9469
89d7a92c 94702002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
646052c0
DH
9471
9472 * gc.c (scm_gc_sweep): Make it compile even when deprecated
9473 features are excluded.
9474
89d7a92c 94752002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
bac0e232
DH
9476
9477 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
9478
4f2716b6
GH
94792002-02-25 Gary Houston <ghouston@arglist.com>
9480
9481 * convert.c: include <string.h> for convert_i.c.
9482
46151112
RB
94832002-02-24 Rob Browning <rlb@defaultvalue.org>
9484
9485 * .cvsignore: add stamp-h1.
9486
cd328b4f
NJ
94872002-02-21 Neil Jerram <neil@ossau.uklinux.net>
9488
9489 * unif.c (scm_array_to_list): Correct name, which had been
9490 accidentally changed to scm_t_arrayo_list!
9491
c709de7f
MD
94922002-02-20 Mikael Djurfeldt <mdj@linnaeus>
9493
9494 * gc.c (scm_gc_sweep): Print an error message when aborting due to
9495 underflowing scm_mallocated.
9496
c1965d31
MV
94972002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9498
9499 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
9500 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
9501 Reimplemented using the new scm_gc_malloc, etc., functions and
9502 deprecated.
9503
b606945b
TTN
95042002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
9505
9506 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
9507 to `noinst_PROGRAMS'.
9508 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
9509 (noinst_PROGRAMS, noinst_SCRIPTS): New.
9510
7c686ba8
MV
95112002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9512
9513 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
9514 non-zero is returned from a port or smob free function.
9515 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
9516 scm_gc_register_collectable_memory,
9517 scm_gc_unregister_collectable_memory, scm_gc_malloc,
9518 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
9519
9520 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
9521 debug-malloc.c, dynl.c, environments.c, environments.h,
9522 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
9523 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
9524 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
9525 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
9526 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
9527 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
9528 appropriate. Return zero from smob and port free functions.
9529
9530 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
9531
9532 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
9533 messages while the GC is running.
9534 (scm_c_issue_deprecation_warning_fmt): New.
9535
9536 * fports.c (scm_setvbuf): Reset read buffer to saved values when
9537 it is pointing to the putback buffer.
9538
66adc0a6
TTN
95392002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9540
9541 * gsubr.c (create_gsubr): On "too many args" error,
9542 also display arg count and name. Thanks to Bill Schottstaedt.
9543
0187b4f4
TTN
95442002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
9545
9546 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
9547
9548 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
9549 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
9550 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
9551
9552 * guile-snarf-docs-texi.in: Bye bye.
9553
402e687c
MV
95542002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9555
9556 * symbols.c (scm_make_symbol): Fix typo in docstring.
9557
9558 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9559 scm_make_symbol): New prototypes.
9560
319b98ed
MV
95612002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
9562
9563 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
9564 (SCM_SYMBOL_INTERNED_P): New.
9565 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
9566 SCM_MAKINUM since hash values can well be bignums.
9567 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
9568 This signals a interned symbol.
9569 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9570 scm_make_symbol): New.
0187b4f4 9571
319b98ed
MV
9572 * print.c (scm_iprin1): Print uninterned symbols unreadably.
9573
34472dfe
TTN
95742002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
9575
9576 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
9577 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
0187b4f4 9578 Thanks to Dave Love.
34472dfe 9579
1b39c2e3
MV
95802002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
9581
9582 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
319b98ed 9583 This might help to make unintended clashes less likely.
1b39c2e3
MV
9584 (scm_string_to_symbol): Protect the string until the symbols is
9585 created.
9586
1fa86ca5
SJ
95872002-01-31 Stefan Jahn <stefan@lkcc.org>
9588
9589 * convert.c, convert.h, convert.i.c: New files containing C
34472dfe 9590 array to Scheme conversion helpers meant to be replacement
1fa86ca5
SJ
9591 functions for the deprecated gh interface.
9592
9593 * Makefile.am: Setup rules for new `convert.*' files.
9594
af68e5e5
SJ
95952002-01-28 Stefan Jahn <stefan@lkcc.org>
9596
9597 * symbols.c (scm_c_symbol2str): New function, replacement for
9598 `gh_scm2newsymbol()'.
9599
34472dfe 9600 * strings.c (scm_c_substring2str): New function. Proper
af68e5e5
SJ
9601 replacement for `gh_get_substr()'.
9602
9603 * socket.c: Include `stdint.h' if available for the `uint32_t'
9604 declaration.
9605
504d99c5 9606 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
af68e5e5
SJ
9607 compiler warning).
9608
9609 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
9610
c96d76b8 96112002-01-22 Neil Jerram <neil@ossau.uklinux.net>
34472dfe 9612
c96d76b8 9613 Other changes unrelated to Elisp...
34472dfe 9614
c96d76b8
NJ
9615 * eval.c (scm_m_if): Use s_if rather than repeating string literal
9616 "if".
9617 (comments): Fix a few typos.
9618 (scm_for_each): Add parentheses around oddly unparenthesized
9619 if/while conditions.
9620
9621 * read.c (scm_read_opts): Add full stop at end of doc for
9622 `keywords' option.
9623
9624 * script.c (scm_compile_shell_switches): Use scm_str2symbol
9625 instead of gh_symbol2scm.
9626
9627 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
9628 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
9629
9630 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
9631 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
9632
9633 First batch of changes for Elisp support...
9634
9635 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
9636 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
9637 throw.c, vectors.c, weaks.c: Add #include for lang.h.
9638
9639 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
9640 conditionalize compilation and initialization of Elisp support
9641 function.
34472dfe 9642
c96d76b8
NJ
9643 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
9644 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
9645 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
9646 filesys.c (fill_select_type, retrieve_select_type), fluids.c
9647 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
9648 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
9649 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
bbd26b5a
NJ
9650 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
9651 options.c (change_option_setting, scm_options), posix.c
9652 (environ_list_to_c), print.c (scm_iprlist), throw.c
9653 (scm_exit_status), vectors.c (scm_vector), weaks.c
9654 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
c96d76b8
NJ
9655
9656 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
9657 just SCM_FALSEP.
34472dfe 9658
c96d76b8
NJ
9659 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
9660 of just SCM_BOOLP.
9661
9662 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
9663 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
9664 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
9665 (scm_m_atfop): Support function aliasing. Support both function
9666 args, which need transformation, and macro args, which do not.
9667 Add explanatory comments.
9668 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
9669 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
9670 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
9671 SCM_NULLP || SCM_NILP instead of checks against (removed)
9672 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
9673 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
9674
9675 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
9676 scm_m_while, scm_nil_eq): Commented out; I don't think we need
9677 these, but I don't want to remove them yet, just in case.
9678 (scm_init_lang): Define `%nil' variable on Scheme level to hold
9679 Elisp nil value.
9680
9681 * lang.h (SCM_NILP): Test against Elisp nil value instead of
9682 against (removed) scm_lisp_nil.
9683 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
9684 (SCM_NULL_OR_NIL_P): New.
9685
9686 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
9687 SCM_VALIDATE_NULL.
9688
9689 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
9690 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
9691 value).
9692
9693 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
9694 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
9695 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9696 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9697
9698 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9699 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9700 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9701 Numbering shifted down accordingly.
9702 (SCM_ELISP_NIL): New IFLAG.
9703
9704 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
34472dfe 9705
a392ee15
DH
97062002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9707
9708 * eval.c: Removed outdated references to "everr". Improved some
9709 comments.
9710
9711 (scm_deval_args, deval_args): Renamed scm_deval_args to
9712 deval_args, since it is not part of the interface.
9713
9714 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9715 use references to debug.vect[0] before it exists. Add parentheses
9716 to switch statement.
9717
9718 * goops.h: Added local emacs variables.
9719
24933780
DH
97202002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9721
9722 * eval.[ch] (scm_deval_args): Made static.
9723
9724 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9725 test.
9726
9727 * strings.c (scm_c_string2str): Clarified comment. Replaced
9728 THINKME by FIXME for uniformness. Removed question about whether
9729 arguments need to be protected from garbage collection: Arguments
9730 must be protected as any other variable.
9731
f9450cdb
DH
97322002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9733
9734 * procs.h (SCM_CLOSURE_BODY): New Macro.
9735
9736 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9737 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9738 get_slot_value, set_slot_value), procs.c
9739 (scm_procedure_documentation), sort.c (closureless), stacks.c
9740 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9741 SCM_CLOSURE_BODY.
9742
9743 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9744
5dc64f64
MV
97452001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9746
9747 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9748 use "cp" instead.
9749
197ee3d3
MV
97502001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9751
9752 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9753 everywhere.
9754
9755 * continuations.c (scm_make_continuation): Do not retain the
9756 throw_value when the continuation is invoked.
9757
4d4528e7
SJ
97582001-12-08 Stefan Jahn <stefan@lkcc.org>
9759
9760 * strings.c (scm_c_string2str): New function. Converts a
34472dfe 9761 given Scheme string into a C string. Also put in two
4d4528e7
SJ
9762 THINKME's regarding the malloc policy for the missing converter
9763 routines.
9764
98347362
NJ
97652001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9766
9767 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9768 gh_symbol2scm.
9769
1fc8902f
DH
97702001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9771
9772 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9773 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9774
9775 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9776 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9777 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9778 macros.
9779
9780 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9781
9782 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9783 SCM_GC_CELL_* macros when accessing free cells.
9784
4878beec
MV
97852001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9786
9787 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
34472dfe 9788 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
4878beec
MV
9789 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9790 * strings.h (SCM_MAKE_STRING_TAG): New.
9791 * procs.h (SCM_MAKE_CCLO_TAG): New.
9792 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9793
9794 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9795 !SCM_ENABLE_DEPRECATED.
9796
9797 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9798 New.
9799
9800 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9801 signal handlers are allowed to divert the flow of control. Call
9802 scm_system_async_mark_from_signal_handler instead of
9803 scm_system_async_mark.
9804
9805
9806 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9807 scm_alloc_double_cell in their place.
34472dfe 9808
4878beec
MV
9809 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9810 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9811 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9812 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9813 scm_deprecated_newcell and scm_deprecated_newcell2.
9814
9815 gc.c (scm_tc16_allocated): Only define when including deprecated
9816 features.
9817 (scm_debug_newcell, scm_debug_newcell2): Removed.
9818 (scm_init_storage): Do not initialize scm_tc16_allocated.
9819 (scm_init_gc): Do it here.
9820 (allocated_mark): New, from old code.
9821 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
34472dfe 9822
4878beec 9823 * inline.c, inline.h: New files.
34472dfe 9824 * Makefile.am: Added them in all the right places.
4878beec 9825
34472dfe 9826 * _scm.h: Include "libguile/inline.h".
4878beec
MV
9827
9828 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9829 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9830 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9831 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9832 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9833 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9834 scm_alloc_double_cell, respectively.
9835
d2bc7fae
MV
98362001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9837
9838 * modules.c (scm_c_use_module): Adapt to changes to
9839 `process-use-modules'.
9840
5eec27e9
DH
98412001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9842
9843 * numbers.c (scm_divide): Fix more division by zero errors.
9844
8978878f
GH
98452001-11-21 Gary Houston <ghouston@arglist.com>
9846
9847 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9848 obsolete. autogen.sh says:
9849 invalid unused variable name: `OMIT_DEPENDENCIES'
9850
164826d3
DH
98512001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9852
9853 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9854 reporting the bug.
9855
84aff7a7
MV
98562001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9857
9858 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9859 Thanks to Eric Gillespie, Jr!
34472dfe 9860
6063dc1d
SJ
98612001-11-21 Stefan Jahn <stefan@lkcc.org>
9862
34472dfe
TTN
9863 * win32-socket.c (getservent, setservent, endservent,
9864 getprotoent, setprotoent, endprotoent): New functions.
6063dc1d
SJ
9865 Appropriate replacements for M$-Windows.
9866
9867 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9868 these definitions for GUILE_DEBUG.
9869
9870 * net_db.c: Include "win32-socket.h" if compiling with a native
34472dfe
TTN
9871 M$-Windows compiler. Include some pieces of code (protoent and
9872 servent interface) protected by HAVE_* macros when using a
6063dc1d
SJ
9873 native M$-Windows compiler.
9874
351982f6
MV
98752001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9876
9877 * modules.c (scm_c_export): Do nothing when the first argument is
9878 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9879
849038b5
TTN
98802001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9881
9882 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9883 also include `buildstamp'.
9884
5c790b44
RB
98852001-11-18 Rob Browning <rlb@defaultvalue.org>
9886
9887 * version.c
9888 (s_scm_major_version): use SCM_MAJOR_VERSION.
9889 (s_scm_minor_version): use SCM_MINOR_VERSION.
9890 (s_scm_micro_version): use SCM_MICRO_VERSION.
9891 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9892 SCM_MICRO_VERSION.
9893
9894 * version.h.in
9895 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9896 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9897 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9898
694a9bb3
NJ
98992001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9900
9901 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9902 Rewrite docstrings without reference to substring-move-left/right,
9903 since the latter no longer exist.
9904
302c12b4
DH
99052001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9906
9907 * eval.c: Removed bogus comment about acros.
9908
9909 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9910 Minimize scope of local variable. Eliminate dependency on
9911 macro DEBUG_EXTENSIONS.
9912
9913 (s_splicing): New error message string.
9914
9915 (scm_m_body): Issue 'bad body' message rather than 'missing
9916 expression' message.
9917
9918 (scm_m_quote): Eliminate unnecessary copying.
9919
9920 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9921 checking of the body to scm_m_body.
9922
9923 (scm_m_do): Move comment to function header. Rename arg1 to
9924 binding. Made the code a bit easier to read.
9925
9926 (evalcar): Removed.
9927
9928 (iqq): Added a comment. Changed the depth parameter to
9929 unsigned. Use size_t for vector lengths. Make sure vector object
9930 is gc protected as long as its contents are read. Add some syntax
9931 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9932 control structure a bit.
9933
9934 (scm_m_delay): Added comment about the implementation of
9935 scm_m_delay.
9936
9937 (scm_m_define): Add comment about guile's currying define
9938 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9939 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9940
9941 (scm_m_letrec1): Removed. Part of the functionality is taken
9942 over by the new function 'transform_bindings'.
9943
9944 (transform_bindings): New function. Takes over some of the
9945 functionality of removed function 'scm_m_letrec1', namely to split
9946 a list of bindings into a reversed list of variables and a list of
9947 initializers.
9948
9949 (scm_m_letrec): Call 'transform_bindings'.
9950
9951 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9952 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9953 test. Use 'transform_bindings'. Fixed scoping error with named
9954 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9955 Jerram for suggesting the fix). Cleaned up the control structure
9956 a bit.
9957
9958 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9959 unnecessary consing. Eliminated unnecessary
9960 SCM_DEFER/ALLOW_INTS.
9961
9962 (SCM_CEVAL): Un-obfuscated some loops.
9963
cecb4a5e
NJ
99642001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9965
8f85c0c6
NJ
9966 * gc.h (scm_unhash_name): Old declaration removed.
9967
9968 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9969 @code{primitive-eval}.
9970
9971 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9972 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9973 Change @deffnx lines in docstrings to say {Scheme Procedure}
9974 rather than primitive or procedure.
9975
9976 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9977 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9978 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9979 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9980 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9981 (scm_string_split, scm_string_ci_to_symbol), strings.c
9982 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9983 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9984 Docstring fixes and improvements reflecting edits that have been
9985 made in the reference manual source.
9986
9987 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9988 scm_object_property, scm_set_object_property_x): Remove invalid
9989 @deffnx lines for corresponding procedure property primitives.
9990
cecb4a5e
NJ
9991 These changes add a @deffnx C function declaration and function
9992 index entries for each Guile primitive to the copy of the doc
9993 snarf output that is used for reference manual synchronization.
9994 Online help is unchanged.
849038b5 9995
cecb4a5e
NJ
9996 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9997 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9998 name to SCM_SNARF_DOCS.
849038b5 9999
cecb4a5e
NJ
10000 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
10001 snarf-check-and-output-texi.
10002
10003 * Makefile.am (guile-procedures.texi): New rule.
10004 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
10005 Changed so that the last stage of doc snarfing is now performed
10006 twice, once to produce guile-procedures.txt for online help, and
10007 once to produce guile.texi for reference manual synchronization.
10008
ddea3325
DH
100092001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
10010
10011 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
10012 safely usable as a single statement followed by a ';', for example
10013 in an if statement.
10014
10015 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
10016
72dd0a03
NJ
100172001-11-13 Neil Jerram <neil@ossau.uklinux.net>
10018
10019 * random.c (scm_random_solid_sphere_x,
10020 scm_random_hollow_sphere_x): Correct "shere" typos.
10021
10022 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
10023
10024 * version.c (scm_version): Update docstring to include
10025 `micro-version'.
10026
6558eda6
MV
100272001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
10028
409b8588
MV
10029 * modules.c (scm_c_export): Call va_end after collecting the
10030 symbols.
10031
adb8c0f2
MV
10032 * strop.h, strop.c (scm_substring_move_left_x,
10033 scm_substring_move_right_x): Removed.
10034
6558eda6
MV
10035 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
10036 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
10037 configure does.
10038
5d8fc640
MV
100392001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
10040
10041 * numbers.c: Document macros to define when including
10042 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
10043 now rely on SIZEOF_ macros that have been figured out at
10044 configure time.
10045
10046 * num2integral.i.c: Adapt to new interface.
10047 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
10048 target type by casting it and checking whether it is still the
10049 same. Do not try to handle bignums for integral types that are
10050 smaller than fixnums. When handling bignums, collect the
10051 magnituse first into a unsigned type, and correctly check for
10052 overflow.
10053 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
10054 only -MIN_VALUE can still be negative of all negative numbers (in
10055 twos-complement).
10056
849038b5 10057 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
10058
10059 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
10060 HAVE_LONG_LONG depending on whether their size is non-zero.
10061
d6b8cf11
TTN
100622001-11-11 Thien-Thi Nguyen <ttn@glug.org>
10063
10064 * strop.c (scm_string_null_p): Docfix; nfc.
10065 Thanks to Scott Lenser.
10066
9401323e
NJ
100672001-11-07 Neil Jerram <neil@ossau.uklinux.net>
10068
10069 * extensions.c (scm_load_extension): Canonicalize docstring
10070 whitespace.
10071
10072 * unif.c (scm_uniform_array_write), ports.c
10073 (scm_current_output_port, scm_force_output), dynwind.c
10074 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
10075 filesys.c (scm_open, scm_lstat), struct.c
10076 (scm_make_struct_layout), random.c (scm_random,
10077 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
10078 (scm_i_index): Remove superfluous whitespace from end of docstring
10079 lines.
10080
10081 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
10082 strings.c (scm_make_string), variable.c (scm_make_variable,
10083 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
10084 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
10085 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
10086 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
10087 newline at end of docstrings.
10088
10089 * modules.c (scm_set_current_module): Add missing newline to
10090 docstring.
10091
b4e15479
SJ
100922001-11-07 Stefan Jahn <stefan@lkcc.org>
10093
10094 * win32-socket.[ch]: New files. Defines Winsock-API error codes
10095 and makes them available through Guile. That is because the
10096 Winsock-API does not store its errors in `errno' and thus cannot
10097 return error messages via `strerror (errno)'.
10098
10099 * socket.c (scm_init_socket): Initialize `win32-socket' part
10100 here under M$-Windows.
10101
d6b8cf11 10102 * numbers.h: Added missing declaration of
b4e15479
SJ
10103 `scm_sys_check_number_conversions()'.
10104
10105 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
10106 and use in `(strerror)' and `(system-error)'.
10107
d6b8cf11 10108 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
10109 `win32-socket.[ch]' to extra source and header files.
10110
7ab89df1
MV
101112001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
10112
10113 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
10114 a call to turn-on-debugging when --debug has been given instead of
10115 turning it on directly. Also, handle new `--no-debug' option,
10116 which might suppress the call to turn-on-debugging.
10117
0233bfc1
SJ
101182001-11-05 Stefan Jahn <stefan@lkcc.org>
10119
10120 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
10121
8f99e3f3
SJ
101222001-11-04 Stefan Jahn <stefan@lkcc.org>
10123
10124 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 10125 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
10126 correctly and allows a clean build on Win32.
10127
d6b8cf11 10128 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
10129 into FOO.
10130
10131 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
10132 import macros for external libraries (libcrypt, libqthreads,
10133 libreadline and libregex).
10134
10135 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
10136
10137 * posix.c (flock): Added support for flock() in M$-Windows.
10138
10139 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
10140 of __SCM_IMPORT__.
10141
10142 * fports.c (getflags): Differentiate reading and writing pipes
10143 descriptors.
10144
10145 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
10146 M$-Windows.
10147
10148 * coop.c (coop_condition_variable_timed_wait_mutex): Use
10149 conditionalized error code if `ETIMEDOUT' is not available.
10150 (scm_thread_usleep): Remove bogus declaration of `struct timeval
10151 timeout'.
10152
10153 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
10154 belongs. That is because NO_PREPRO_MAGIC gets undefined after
10155 each inclusion of `num2integral.i.c'.
10156 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
10157
4e21fa60
MV
101582001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
10159
10160 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
10161 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
10162
08112c95
MD
101632001-11-02 Mikael Djurfeldt <mdj@linnaeus>
10164
7663c008
MD
10165 * print.c (scm_iprin1): Mark print state as revealed when
10166 dispatching to generic write or display.
10167
08112c95
MD
10168 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
10169
f712d833
MV
101702001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
10171
10172 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 10173
f712d833
MV
10174 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
10175 and win32-dirent.h to extra source and header files. These
10176 include the uname() and the POSIX dirent interface implementation
10177 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
10178 linkers which do not allow unresolved symbols inside shared
10179 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
10180 dependency.
10181
d6b8cf11
TTN
10182 * __scm.h: Defined SCM_API. This macro gets prepended to all
10183 function and data definitions which should be exported or imported
f712d833
MV
10184 in the resulting dynamic link library in the Win32 port.
10185
10186 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 10187 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
10188 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
10189 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
10190 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
10191 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
10192 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 10193 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
10194 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
10195 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
10196 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
10197 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
10198 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
10199 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
10200 vports.h, weaks.h:
10201 Prefixed each each exported symbol with SCM_API.
10202
d6b8cf11 10203 * continuations.c: Added comment about the use of the extern
f712d833
MV
10204 declarations of {get,set}context() functions used in the ia64 port.
10205
10206 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
10207 is meant to be a `unsigned long *'.
10208
10209 * filesys.c: Include `direct.h' if possible. Use local
10210 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
10211 macros for M$-Windows. Implementation of `fstat_Win32()' which is
10212 able to differentiate between sockets and other file descriptors.
10213 Use this function as wrapper in `scm_fstat()'. Fixed typo in
10214 `scm_dirname()'.
10215
10216 * fports.c: Include `io.h' is possible. Put `*fp' into referring
10217 statement block in `scm_fport_buffer_add()'.
10218 Some corrections in `getflags()'.
d6b8cf11 10219
f712d833
MV
10220 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
10221
10222 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
10223 build on Win32. Disable preloaded symbols on Win2 platforms.
10224
10225 * ioext.c, ports.c: Include `io.h' is possible.
10226
10227 * mkstemp.c: Include `process.h' is possible.
10228
10229 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
10230 too.
10231 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
10232
10233 * posix.c: Remove unnecessary dirent includes and defines. Include
10234 local `win32-uname.h' for MinGW. Extern declaration of
10235 `mkstemp()' for systems where it does not exists. Make
10236 `getlogin()' available on M$-Windows.
10237
10238 * scmsigs.c: Made `usleep()' avalable on MinGW.
10239
10240 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
10241
10242 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
10243
10244 * win32-uname.c: Include "win32-uname.h", not "uname.h".
10245
d245ce23
MD
102462001-10-28 Mikael Djurfeldt <mdj@linnaeus>
10247
10248 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
10249 Don't apply scm_uniform_vector_length on arrays.
10250
8ea46249
DH
102512001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
10252
10253 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
10254 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
10255 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
10256 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
10257 scm_list_<n> over scm_cons[2]?.
10258
10259 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
10260 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
10261 SCM_C[AD][AD]R instead of explicit form.
10262
10263 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
10264 comparison parameters.
10265
10266 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
10267 !SCM_NULLP instead of SCM_NIMP.
10268
10269 (scm_m_case): Don't copy the form. Renamed proc to clause and
10270 minimized its scope. Renamed x to clauses. Removed side
10271 effecting operation from macro call.
10272
10273 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
10274 minimized its scope. Renamed x to clauses. Minimized the scope
10275 of variable 'len'. Make sure the else clause is treated specially
10276 even in case of '=>' occurences. Don't change the else to #t in
10277 order to be able to distinguish this case in the evaluator. Leave
10278 type checking of the recipient to the evaluator.
10279
10280 (scm_c_improper_memq): Made the comment somewhat clearer.
10281
10282 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
10283 test for SCM_IM_LET at the place of the formal parameters.
10284 Simplified the formal parameter checking.
10285
10286 (scm_m_letstar): Added Comment. Renamed proc to bindings.
10287 Renamed arg1 to binding and minimized its scope. Eliminated
10288 unnecessary consing.
10289
10290 (scm_m_do): Renamed proc to bindings. Minimized the scope of
10291 variable 'len'.
10292
10293 (build_binding_list): New static function.
10294
10295 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
10296 Further, split up the 'letrec' unmemoizing code to the
10297 corresponding parts for 'do', 'let' and 'letrec', adding comments
10298 to each form. Cleanup the handling of the do form (This removes
10299 some *real* code :-).
10300
10301 (SCM_CEVAL): Removed side effecting operation from macro call.
10302 Handle the 'else clause of the 'cond form specially - the symbol
10303 'else is not replaced with #t any more.
10304
8186c4f5
GH
103052001-10-14 Gary Houston <ghouston@arglist.com>
10306
10307 * version.c (scm_version): use sprintf instead of snprintf,
10308 for portability. thanks to Bill Schottstaedt.
10309
89759084
MD
103102001-10-14 Mikael Djurfeldt <mdj@linnaeus>
10311
10312 * read.c (scm_lreadr): When user-defined hash procedure returns
10313 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
10314 an exception. (This prevents parsing of uniform vectors from
10315 interfering with parsing of numbers.)
10316
9c7ce563
MV
103172001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
10318
10319 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
10320 PTRDIFF_MIN. Thanks to Ken Raeburn.
10321
103222001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
10323
10324 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
10325
10326 * eval.c (scm_m_atbind): First try to find the variable without
10327 defining it locally; when it has not been found, define it
10328 locally.
10329
10330 * modules.c (module_variable): Pass over variables that exist but
10331 are unbound.
10332
103332001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10334
10335 * backtrace.c (display_backtrace_file_and_line): Only use
10336 scm_basename when POSIX support is compiled in. Thanks to Chris
10337 Cramer.
10338
1fe5e088
DH
103392001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10340
10341 * numbers.c (mem2uinteger): Return number read so far when coming
10342 across a hexdigit after having read a # or if not reading a hex
10343 value. This will enable the calling code to correctly handle
10344 forms like 1e2. (The background is, that the exponent markers d,
10345 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
10346 providing this patch.
10347
10348 (mem2complex): Fix erroneous double-negation. Now, numbers like
10349 1-i will be read correctly.
10350
68665a97
MD
103512001-10-12 Mikael Djurfeldt <mdj@linnaeus>
10352
10353 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
10354
10355 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
10356
d5cf5324
DH
103572001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
10358
10359 * print.c (scm_print_state_vtable, print_state_pool):
10360 Initialize. These variables are now registered as gc roots.
10361
10362 (scm_current_pstate): Update documentation.
10363
10364 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
10365 scm_prin1, scm_init_print): print_state_pool is registered as a
10366 gc root and thus does not need to be protected by a surrounding
10367 pair any more.
10368
10369 (make_print_state): The car of print_state_pool no longer holds
10370 the scm_print_state_vtable.
10371
10372 (scm_current_pstate, scm_make_print_state, print_circref,
10373 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
10374 SCM_N<foo>.
10375
10376 (scm_prin1): When building lists, prefer scm_list_<n> over
10377 scm_cons[2]?.
10378
10379 (scm_iprlist): Removed a redundant SCM_IMP test.
10380
10381 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
10382
37c56aec
DH
103832001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10384
10385 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
10386
10387 (scm_memcons, scm_mem_to_proc): When building lists, prefer
10388 scm_list_<n> over scm_cons[2]?.
10389
10390 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
10391
10392 (scm_procedure_name): Use SCM_CADR instead of explicit form.
10393
10394 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
10395 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
10396 for some reason his patch didn't make it into the cvs.
10397
79d34f68
DH
103982001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
10399
10400 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
10401 little bit - should even be somewhat more accurate now.
10402
5e137c65
RB
104032001-10-08 Rob Browning <rlb@defaultvalue.org>
10404
10405 * gc.c: support ia64 register backing store.
10406 (SCM_MARK_BACKING_STORE): new macro.
10407
10408 * continuations.h: support ia64 register backing store.
10409 (struct scm_t_contregs): add ia64 register backing store.
10410
10411 * continuations.c: support ia64 register backing store.
10412 (continuation_mark): mark ia64 register backing store.
10413 (continuation_free): free ia64 register backing store.
10414 (scm_make_continuation): capture ia64 register backing store.
10415 (copy_stack_and_call): copy ia64 register backing store.
10416
ee083ac2
DH
104172001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10418
10419 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
10420 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
10421 instead of SCM_NIMP to test for that case.
10422
10423 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
10424 scm_t_bits instead of long.
10425
71dcdbf9
MV
104262001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10427
10428 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
10429 SCM_T_SIGNED_BITS_MIN): New.
10430 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
10431 Use them to make these macros computable by the preprocessor.
10432
10433 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
10434 whether the integral type fits in a fixnum, not the compiler.
10435 This removes a spurious compiler warning. Also, honor the
10436 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
10437 needed for `long long's.
10438
10439 * numbers.c: Define NO_PREPRO_MAGOC when including
10440 num2integral.c.i for `long long' and `signed long long'.
10441
152812c0
MD
104422001-10-06 Mikael Djurfeldt <mdj@linnaeus>
10443
10444 These changes fixes a race condition in the Guile coop - pthread
10445 compatibility code.
d6b8cf11 10446
152812c0
MD
10447 * coop.c (mother_awake_p): New variable.
10448 (coop_create): Set mother_awake_p before creating or signalling
10449 mother; wait until mother is going to sleep before returning.
10450 (mother): Reset mother_awake_p before going to sleep.
10451
11d49f54
DH
104522001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10453
10454 * options.c (protected_objects, scm_init_options): The content of
10455 protected_objects is now protected from garbage collection using
10456 scm_gc_register_root instead of scm_permanent_object.
10457
10458 (get_option_setting): New static function that computes an option
10459 setting as it was formerly done in the function scm_options.
10460
10461 (get_documented_option_setting): New static function that
10462 returns option documentation as it was formerly done in the
10463 function scm_options. Note that documentation C strings are no
10464 longer precomputed into SCM objects. Instead, they are converted
10465 into SCM strings every time get_documented_option_setting is
10466 called.
10467
10468 (change_option_setting): New static functions that modifies the
10469 option setting as it was formerly done in the function
10470 scm_options. The function is now exception safe, i. e. won't
10471 cause a memory leak when interrupted. Further, only non-immediate
10472 option values are added to the protection list.
10473
10474 (scm_options): This function now has only the purpose to dispatch
10475 to to get_option_setting, get_documented_option_setting or
10476 change_option_setting, depending on the arguments given to
10477 scm_options.
10478
10479 (scm_init_opts): Don't convert documentation C strings into SCM
10480 strings. Further, don't protect any object values: They _must_
10481 be immediate values, otherwise there is no guarantee that they
10482 have not been collected before anyway.
10483
10484 * options.[ch] (scm_t_option): Made type unsigned, name into a
10485 constant char* and val into a scm_t_bits type.
10486
10487 (scm_options, scm_init_opts): The number of options is guaranteed
10488 to be larger or equal to zero. Thus, the type is changed to
10489 unsigned.
10490
3dbacabc
DH
104912001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10492
10493 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
10494 testing an unsigned value for being >= 0.
10495
14282d0f
DH
104962001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10497
10498 * numbers.h: Removed old comment about using SCM_CAR to access
10499 non-pair cells.
10500
10501 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
10502 the return value is signed. Thanks to Brian Crowder for the bug
10503 report.
10504
10505 (SCM_SRS): Avoid unnecessary casting and don't unpack input
10506 values. With this patch, SCM_SRS can be safely used for other
10507 types than scm_t_signed_bits. However, it should still better be
10508 an internal macro and thus be renamed to SCM_I_SRS.
10509
10510 (SCM_MAKINUM, SCM_INUM): Use proper casting.
10511
2dbec7b5
GH
105122001-10-03 Gary Houston <ghouston@arglist.com>
10513
10514 * continuations.h, unif.h: in the descriptions of the bit patterns
10515 of the heap cells, make bit 0 the least significant.
10516
cf4ee841
TTN
105172001-09-25 Thien-Thi Nguyen <ttn@glug.org>
10518
10519 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
10520 Thanks to Golubev I. N.
10521
4a151b3d
GH
105222001-09-25 Gary Houston <ghouston@arglist.com>
10523
10524 * ports.c (scm_drain_input): extended the docstring. thanks to
10525 Alex Schroeder and Thien-Thi Nguyen.
10526
581ded70
MD
105272001-09-23 Mikael Djurfeldt <mdj@linnaeus>
10528
10529 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
10530 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
10531 macros. (The NUM names might soon change.)
10532
10533 * numbers.h: Added missing declarations.
10534
5437598b
MD
105352001-09-22 Mikael Djurfeldt <mdj@linnaeus>
10536
10537 * Makefile.am: Distribute num2float.i.c.
10538
10539 * num2float.i.c: New file, multiply included by numbers.c, used
10540 to "templatize" the float <-> num conversion routines.
10541
10542 * numbers.c: New functions: scm_num2float, scm_float2num,
10543 scm_num2double, scm_double2num.
10544
0b073f0f
RB
105452001-09-21 Rob Browning <rlb@defaultvalue.org>
10546
10547 * .cvsignore: really add version.h
10548
10549 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
10550 Otherwise it fails on the alpha. However, we might rather choose
10551 this size conditionally.
10552
10553 * numbers.c (scm_gcd): change "k" to a long from an int.
10554 Otherwise it fails on the alpha. However, we might rather choose
10555 this size conditionally.
10556
10557 * error.c (scm_wta): coerce char* to intptr_t before int
10558 assignment.
10559
10560 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
10561 int.
10562
10563 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
10564
2830fd91
MD
105652001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10566
10567 * numbers.c (scm_integer_expt): Accept inexact integer in second
10568 argument. (Thanks to Bill Schottstaedt.)
10569
c13f0a90
RB
105702001-09-20 Rob Browning <rlb@defaultvalue.org>
10571
10572 * .cvsignore: add version.h
10573
10574 * versiondat.h.in: removed (obsolete).
10575
10576 * version.h.in: renamed from version.h.
10577 (SCM_GUILE_MAJOR_VERSION): new public macro.
10578 (SCM_GUILE_MINOR_VERSION): new public macro.
10579 (SCM_GUILE_MICRO_VERSION): new public macro.
10580
10581 * version.h: renamed to version.h.in.
10582
10583 * version.c
10584 (scm_major_version): support integer *_VERSION macros.
10585 (scm_minor_version): support integer *_VERSION macros.
10586 (scm_micro_version): support integer *_VERSION macros.
10587 (scm_version): support integer *_VERSION macros.
10588
147c18a0
MD
105892001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10590
10591 * error.c, error.h: Made error keys globally accessible.
10592 Applications might want to test for these or use them in a direct
10593 call to scm_error.
10594
10595 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
10596 routines are passed an inexact. This change in behavior is
10597 motivated by concordance with R5RS: It is more common that a
10598 primitive doesn't want to accept an inexact for an exact.
10599
662c5539
DH
106002001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10601
10602 The following patch partially undoes my patch from 2001-06-30,
10603 where I added the function scm_gc_mark_cell_conservatively. The
10604 function is buggy, since it breaks guile during conservative
10605 marking if a pointer on the stack points directly into the list of
10606 free cells on the heap: With conservative cell marking this will
10607 cause the whole free list to be scanned and marked - boom!
10608
10609 * gc.c (allocated_mark, MARK, heap_segment,
10610 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 10611 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
10612 scm_gc_mark_cell_conservatively and update the corresponding
10613 comments and uses accordingly. Thanks to Christopher Cramer for
10614 the patch. (Minor corrections by me.)
10615
6c1b7628
GH
106162001-09-15 Gary Houston <ghouston@arglist.com>
10617
10618 * root.h (scm_root_state): removed the continuation_stack and
10619 continuation_stack_ptr members, which have no apparent purpose.
10620 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
10621 removed.
662c5539 10622
6c1b7628
GH
10623 * root.c (root_mark), init.c (restart_stack, start_stack), gc
10624 (scm_igc): remove all references to contination_stack and
10625 continuation_stack_ptr, avoiding allocation of a vector and
10626 useless processing during gc.
10627
455c0ac8
DH
106282001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10629
10630 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
10631
10632 (TCONC_IN): Make sure that the cell word 0 is initialized last.
10633
10634 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
10635
10636 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
10637
10638 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
10639 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
10640
22ba637b
DH
106412001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10642
10643 * guardians.c (mark_dependencies_in_tconc,
10644 whine_about_self_centered_zombies, scm_init_guardians): Register
10645 the static global variable `self_centered_zombies' via
10646 scm_gc_register_root, to make some cdr-ing unnecessary.
10647
c3c4d801
DH
106482001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10649
10650 * backtrace.c (display_backtrace_file,
10651 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
10652 values, use SCM_FALSEP when comparing SCM values against #f.
10653 Thanks to Rob Browning for the bug report.
10654
b00418df
DH
106552001-09-12 Martin Baulig <martin@home-of-linux.org>
10656
10657 * strings.[ch] (scm_str2string): New function.
10658
a0d34a0b
MV
106592001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
10660
10661 * gc.c (scm_done_free): Always subtract size from scm_mallocated
10662 when computing nm, even if it's negative.
10663 (scm_must_malloc): Abort on overflow of scm_mtrigger.
10664 (scm_must_realloc): Likewise.
10665
b10586f0
ML
106662001-09-01 Michael Livshin <mlivshin@bigfoot.com>
10667
10668 * numbers.c (scm_sys_check_number_conversions): new function,
10669 defined if Guile is compiled in debugging mode. currently checks
10670 `scm_num2ulong', should check much much more.
10671
10672 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
10673 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 10674
8c494e99
DH
106752001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10676
10677 * __scm.h: Added new section about compile time selectable
10678 features.
10679
10680 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
10681 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
10682 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
10683 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
10684 Removed.
10685
10686 * deprecation.c (scm_include_deprecated_features): Simplified.
10687
10688 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9a5fa6e9 10689 `SCM_IMP' instead of `!SCM_CELLP´.
8c494e99
DH
10690
10691 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
10692 Extract side-effecting operations from macros.
10693
10694 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
10695 scm_top_level_lookup_closure_var and scm_system_transformer.
10696
10697 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10698
10699 (heap_segment): Use CELL_P instead of SCM_CELLP.
10700
10701 * init.c (start_stack): Don't initialize
10702 scm_top_level_lookup_closure_var and scm_system_transformer.
10703
10704 * modules.c (scm_set_current_module): Don't access
10705 scm_top_level_lookup_closure_var and scm_system_transformer.
10706
10707 (scm_sym2var): Don't call scm_variable_set_name_hint.
10708
10709 (scm_post_boot_init_modules): Removed deprecated initializations.
10710
10711 * print.c (scm_ipruk): Don't access cell contents of non cells.
10712
10713 * strings.c (scm_string_set_x): All strings are writable.
10714
10715 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10716 type. There is only one string type now.
10717
10718 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10719
10720 * tags.h: Remove comments about two different string types.
10721
10722 (SCM_CELLP, SCM_NCELLP): Deprecated.
10723
10724 * variable.c (make_variable): Remove code variant for vcells.
10725
10726 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10727 SCM_VARIABLE_LOC): Remove code variant for vcells.
10728
10729 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10730 SCM_ENABLE_DEPRECATED with the logic reversed.
10731
10732 * dynl.c (moddata, registered_mods), dynl.[ch]
10733 (scm_register_module_xxx, scm_registered_modules,
10734 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10735 (*top-level-lookup-closure*), eval.[ch]
10736 (scm_top_level_lookup_closure_var, scm_system_transformer,
10737 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10738 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10739 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10740 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10741 scm_unprotect_object), modules.c (root_module_lookup_closure,
10742 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10743 beautify_user_module_x_var, try_module_autoload_var,
10744 scm_module_full_name), modules.[ch] (scm_the_root_module,
10745 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
cf4ee841 10746 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
8c494e99
DH
10747 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10748 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10749 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10750 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10751 scm_make_shared_substring), tags.h (scm_tc7_substring,
10752 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10753 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10754 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10755 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10756 Removed.
10757
10758 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10759 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10760 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10761 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10762 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10763 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10764 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10765 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10766 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10767 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10768 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10769 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10770 (setzone, scm_strftime, scm_strptime), vports.c
10771 (scm_make_soft_port): Remove calls to
10772 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10773 gone, all strings are 0-terminated anyway.
10774
10775 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10776 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10777 double inclusion of the same headers to the SCM_<filename>_H
10778 format.
10779
10780 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10781 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10782 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10783 any more.
10784
10785 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10786 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10787 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10788 !SCM_<foo> over SCM_N<foo>.
10789
dee01b01
DH
107902001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10791
10792 * Makefile.am: Remove references to symbols-deprecated.c.
10793
10794 * symbols.c (scm_init_symbols): Don't initialize deprecated
10795 symbol functions.
10796
10797 * symbols-deprecated.c: Removed.
10798
10799 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10800 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10801 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10802 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10803 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10804 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10805 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10806 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10807 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10808 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10809 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10810 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10811 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10812 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10813 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10814 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10815 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10816 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10817 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10818 scm_intern0, scm_sysintern, scm_sysintern0,
10819 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10820 scm_string_to_obarray_symbol, scm_intern_symbol,
10821 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10822 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10823 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10824 vectors.[ch] (scm_vector_set_length_x): Removed.
10825
10826 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10827 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10828 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10829 Renamed the macros that are defined to inhibit double inclusion of
10830 the same headers to the SCM_<filename>_H format.
10831
10832 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10833 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10834 SCM_N<foo>.
10835
b29058ff
DH
108362001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10837
10838 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10839 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10840 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10841 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10842 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10843 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10844 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10845 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10846 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10847 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10848 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10849 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10850
10851 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10852 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10853 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10854 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10855 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10856 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10857 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10858 double inclusion of the same headers to the SCM_<filename>_H
10859 format.
10860
10861 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10862 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10863 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10864 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10865 !SCM_<foo> over SCM_N<foo>.
10866
0527e687
DH
108672001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10868
10869 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10870 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10871 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10872 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10873 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10874 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10875 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10876 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10877 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10878 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10879 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10880 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10881 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10882 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10883 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10884 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10885 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10886 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10887 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10888 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10889 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10890 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10891 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10892 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10893 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10894 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10895 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10896 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10897 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10898 the macros that are defined to inhibit double inclusion of the
10899 same headers to the SCM_<filename>_H format.
10900
fada26b2
MV
109012001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10902
10903 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10904 "scm_t_portable" with "scm_port_table" which was an artifact from
10905 the great "scm_*_t -> scm_t_" renaming.
10906
e4d1c1ea
TTN
109072001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10908
10909 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10910 used; nfc. Thanks to Bill Schottstaedt.
10911
10912 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10913 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10914 Thanks to Chris Cramer.
10915
b573e744
MV
109162001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10917
10918 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10919
10920 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10921 dynamic scope.
10922 * dynwind.h (scm_swap_bindings): Declare.
10923 * dynwind.c (scm_swap_bindings): Make non-static.
10924
8a3e715b
ML
109252001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10926
10927 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10928 doing exactly nothing about them). thanks Neil!
10929
cf504ee0
NJ
109302001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10931
10932 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
ec2667f0 10933
43b83b54
TTN
109342001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10935
10936 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10937 (proto) in the case when either `GUILE_DEBUG' or
10938 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10939
10940 (map_free_list): Fix typo: Ref `f' correctly.
10941
10942 Thanks to Chris Cramer.
10943
ab4cd34b
RB
109442001-08-15 Rob Browning <rlb@defaultvalue.org>
10945
10946 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10947 variables.
10948 (libpath.h): change libguileversion to libguileinterface.
10949
b754e3d1
MV
109502001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10951
10952 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10953 ChangeLog-2000. Thanks to Daniel Skarda!
10954
8b1d12c7
ML
109552001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10956
10957 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10958 do it from the Makefile.
10959
10960 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10961 are of a reasonable size.
10962
baffb19f
NJ
109632001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10964
10965 * stacks.c (scm_make_stack): Improve docstring by explaining use
10966 of cutting args.
10967
c1151355
MV
109682001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10969
10970 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10971 scm_char_whitespace_p, scm_char_upper_case_p,
10972 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10973 characters to fulfill isascii in addition to the primary
10974 predicate.
10975
3c9a524f
DH
109762001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10977
10978 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10979 scm_istr2flo, scm_istring2number): Removed.
10980
10981 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10982 SCM_SLOPPY_<foo>.
10983
10984 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10985 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10986 Added.
10987
10988 (scm_string_to_number): Use new number parser.
10989
10990 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10991 handles complex numbers.
10992
10993 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10994 SCM_<foo>_H.
10995
10996 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10997 SCM_N<pred>.
10998
10999 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
11000
11001 (scm_i_mem2number): Added.
11002
11003 (scm_exact_to_inexact): Changed signature.
11004
11005 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
11006 here instead of within scm_i_mem2number. Call scm_i_mem2number
11007 instead of scm_istr2int and scm_istring2number.
11008
01f11e02
DH
110092001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11010
11011 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
11012 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
11013 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
11014 !SCM_<pred> over SCM_N<pred>.
11015
11016 (scm_eval_body): Remove side effecting code from macro call.
11017
11018 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
11019 SCM_NIMP test.
11020
6cf69537
DH
110212001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11022
11023 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
11024
54866b6c
MV
110252001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
11026
11027 Removed vcell slot from structs.
43b83b54 11028
54866b6c
MV
11029 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
11030 subsequent indices.
11031
11032 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
11033 zero. Use scm_vtable_index_layout instead of "0" when accessing
11034 said slot.
11035 (scm_init_struct): Remove vcell slot layout code from
11036 required_vtable_fields.
11037
11038 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
11039
11040 * goops.c (build_class_class_slots): Removed vcell slot
11041 definition.
11042
11043 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
11044 Removed vcell slot layout code.
11045 (scm_si_vcell): Removed.
11046
5b54c4da
MV
110472001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
11048
a0f5718e 11049 "Glocs" have been removed.
43b83b54 11050
a0f5718e
MV
11051 * tags.h: Update tag system docs.
11052 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
11053 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
11054 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
11055 or SCM_NCONSP, respectively.
11056
11057 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
11058 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
11059 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
11060
11061 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
11062 tell glocs from structs.
43b83b54 11063
a0f5718e
MV
11064 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
11065
11066 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
11067 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
11068 instead of with glocs.
11069 (EVALCAR): Do not test for glocs.
11070 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
11071 condition.
11072 (scm_unmemocar): Do not handle glocs.
11073 (scm_m_atfop): Memoize as a variable, not as a gloc.
11074 (scm_eval_args, scm_deval_args): Do not handle glocs.
11075 (scm_ceval, scm_deval): Likewise.
43b83b54 11076
a0f5718e
MV
11077 * eval.h (SCM_XEVALCAR): Do not test for glocs.
11078 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
11079 Removed.
11080
11081 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
11082
11083 * dynwind.c (scm_swap_bindings): Likewise.
11084 (scm_dowinds): Updated to recognize lists of variables instead of
11085 lists of glocs.
11086
11087 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
11088
43b83b54 11089
5b54c4da
MV
11090 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
11091 where it is needed.
43b83b54 11092
3c3db128
GH
110932001-07-25 Gary Houston <ghouston@arglist.com>
11094
11095 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
11096 docstrings to reflect the n-ary implementation.
11097
dd29a169
MV
110982001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
11099
11100 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
11101 value of a variable, not the plain "return" statement.
11102
f5fe6c2f
MV
111032001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
11104
11105 * eval.c: Allow variables in memoized code (in addition to glocs).
11106 (scm_lookupcar): Handle variables in lost races. Replace symbol
11107 with variable directly, do not make a gloc.
11108 (scm_unmemocar): Rewrite variables using a reverse lookup, just
11109 like glocs.
11110 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
11111 the main switch.
11112
ee0c7345
MV
111132001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
11114
6d9ad98a
MV
11115 * variable.c (scm_i_variable_print): Use "value" instead of
11116 "binding" since a binding is the mapping between symbols and
11117 variables, not between variables and their values.
11118
ee0c7345
MV
11119 * tags.h (scm_tc7_variable): New.
11120 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
11121 * print.c (scm_iprin1): Likewise.
11122
11123 * variable.h (scm_tc16_variable): Removed.
11124 (SCM_VARIABLEP): Test for new tc7 code.
11125 (scm_i_variable_print): New.
11126 * variable.c (scm_tc16_variable): Removed.
11127 (variable_print): Renamed to scm_i_variable_print and made
11128 non-static.
11129 (variable_equal_p): Removed.
11130 (make_variable): Construct a tc7 object instead of a smob.
11131 (scm_init_variable): Do not register smob.
43b83b54 11132
f3805ebb
MV
111332001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
11134
11135 * tags.h: Include inttypes.h when we have it.
11136
111372001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
11138
11139 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
11140 is taken by the new SCM_IM_CALL_WITH_VALUES.
11141 * print.c (scm_isymnames): Update table accordingly.
43b83b54 11142
6a1677a3
GH
111432001-07-22 Gary Houston <ghouston@arglist.com>
11144
11145 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
11146 SCM_MAKINUM to convert regoff_t value to SCM.
11147
1bed8c28
GH
111482001-07-21 Gary Houston <ghouston@arglist.com>
11149
11150 * scmsigs.c: include sys/time.h for itimer stuff.
11151
e658215a
RB
111522001-07-19 Rob Browning <rlb@defaultvalue.org>
11153
11154 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
11155
11156 * c-tokenize.lex: add option %nounput to quiet warning.
11157 Add prototype for yylex to quiet warning.
11158
11159 * scmconfig.h.in: add flags for setitimer and getitimer.
11160
11161 * scmsigs.h (scm_init_scmsigs): new prototype.
11162 (scm_init_scmsigs): new prototype.
11163
11164 * scmsigs.c (s_scm_setitimer): new function.
11165 (s_scm_setitimer): new function.
11166
58ade102
MG
111672001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11168
11169 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
11170 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
11171 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
11172 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
11173 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
11174 guile-func-name-check.in, guile-snarf-docs-texi.in,
11175 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
11176 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
11177 objprop.c, objprop.h, options.c, options.h, random.h,
11178 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
11179 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
11180 version.c, version.h: Updated copyright notice.
11181
6b80d352
DH
111822001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11183
11184 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
11185 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
11186 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
11187 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
11188 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
11189 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
11190 sym_environment, scm_sym_change_class): New static variables to
11191 hold predefined symbols.
11192
11193 (build_class_class_slots): Build the list using scm_list_n
11194 instead of cons. Also, slots are already created as lists, thus
11195 making a call to maplist unnecessary.
11196
11197 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
11198 scm_class_direct_subclasses, scm_class_direct_methods,
11199 scm_class_precedence_list, scm_class_slots, scm_class_environment,
11200 scm_method_procedure, create_standard_classes, purgatory): Use
11201 predefined symbols.
11202
11203 (build_slots_list, compute_getters_n_setters,
11204 scm_sys_initialize_object, scm_sys_inherit_magic_x,
11205 get_slot_value_using_name, set_slot_value_using_name,
11206 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
11207 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
11208 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
11209
11210 (scm_sys_prep_layout_x): Minimize variable scopes.
11211
11212 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
11213 scm_sys_fast_slot_set_x): Fix signedness.
11214
11215 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
11216 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
11217 scm_memoize_method, scm_wrap_object): Use packing and unpacking
11218 when converting to and from SCM values.
11219
11220 (scm_enable_primitive_generic_x): Add rest argument checking.
11221
11222 (map, filter_cpl, maplist, scm_sys_initialize_object,
11223 scm_sys_prep_layout_x, slot_definition_using_name,
11224 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
11225 call_memoize_method, scm_make, scm_make_class): Prefer explicit
11226 predicates over SCM_N?IMP tests.
11227
11228 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
11229 checking.
11230
11231 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
11232 alias.
11233
63bcad19
DH
112342001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11235
11236 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
11237
11238 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
11239
11240 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
11241
11242 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
11243
4d6aae71
ML
112442001-07-12 Michael Livshin <mlivshin@bigfoot.com>
11245
11246 * strings.c (s_scm_string): fix arg position in assert.
11247
4b8ec619
GH
112482001-07-11 Gary Houston <ghouston@arglist.com>
11249
11250 * strports.c (st_write): use memcpy, not strncpy. thanks to
11251 Dale P. Smith.
11252
dbb640bd
TTN
112532001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
11254
11255 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
11256 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
11257 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
11258 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
11259 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
11260 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
11261 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
11262 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
11263 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
11264 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
11265 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
11266 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
11267 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
11268 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
11269 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
11270 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
11271 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
11272 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
11273 weaks.c, weaks.h: Remove "face-lift" comment.
11274
fd6c6321
RB
112752001-07-08 Rob Browning <rlb@defaultvalue.org>
11276
11277 * .cvsignore: add stamp-h.in.
11278
f91e4547
MG
112792001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11280
11281 * hooks.c (scm_make_hook, scm_add_hook_x),
11282 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
11283 value info to the docstrings.
11284
7beabedb
MG
112852001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11286
11287 Some more compatibility patches for Windows.
dbb640bd 11288
7beabedb
MG
11289 * posix.c (getlogin): getlogin() implementation for Windows.
11290
11291 * backtrace.c, ioext.c: Include <stdio.h>.
11292
11293 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
11294 exist.
11295
11296 * cpp_sig_symbols.in: Added SIGBREAK.
11297
0d0560d0
MV
112982001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
11299
11300 * strports.c (scm_read_0str, scm_eval_0str): Call
11301 scm_c_read_string and scm_c_eval_string respectively, not
11302 themselves. Thanks to Dale P. Smith!
11303
9a97e362
DH
113042001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11305
11306 * unif.c (scm_array_set_x): The variable args does not
11307 necessarily have to be a list. Further, got rid of a redundant
11308 SCM_NIMP test.
11309
592996c9
DH
113102001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11311
11312 * list.c (SCM_I_CONS): Make sure the cell type is initialized
11313 last.
11314
11315 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
f91e4547 11316 init_heap_seg): Fixed signedness.
592996c9
DH
11317
11318 (init_heap_seg): Replaced strange for-loop with a while loop.
11319
11320 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
11321
11322 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
11323
11324 The following patch adds conservative marking for the elements of
11325 free or allocated cells.
11326
11327 * gc.c (allocated_mark, heap_segment): New static functions.
11328
11329 (which_seg): Deleted, since the functionality is now provided by
11330 function heap_segment.
11331
11332 (map_free_list): Use heap_segment instead of which_seg.
11333
11334 (MARK): If cell debugging is disabled, mark free cells
11335 conservatively.
11336
11337 (scm_mark_locations, scm_cellp): Extracted the search for the
11338 heap segment of a SCM value into function heap_segment.
11339
11340 (scm_init_storage): Allocated cells must be marked
11341 conservatively.
11342
11343 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
11344
11345 The following patch changes the representation of weak vectors to
11346 double cells instead of using an extension of the vector's
11347 allocated memory.
11348
11349 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
11350 the result of SCM_WVECT_GC_CHAIN.
11351
11352 (scm_gc_sweep): Weak vectors don't have extra fields any more.
11353
11354 * weaks.c (allocate_weak_vector): New static function. It does
11355 not patch any previously created vector object during the
11356 construction of a weak vector, and thus doesn't need to switch
11357 off interrupts during vector creation.
11358
11359 (scm_make_weak_vector, scm_make_weak_key_hash_table,
11360 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11361 Use allocate_weak_vector to provide the new weak vector object.
11362
11363 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
11364 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
11365 now stored in the double cell.
11366
11367 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
11368 Use SCM_WVECT_TYPE.
11369
11370 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
11371 using an entry of the double cell.
11372
4dadf664
TTN
113732001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
11374
11375 * stamp-h.in: bye bye
11376
02202352
MV
113772001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
11378
11379 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
11380 scm_eval_0str.
11381
11382 * load.c, load.h (scm_c_primitive_load,
11383 scm_c_primitive_load_path): New.
11384
11385 * strports.c, strports.h (scm_c_read_string): Renamed from
11386 scm_read_0str. Also, added "const" qualifier to argument.
11387 (scm_c_eval_string): Renamed from scm_eval_0str.
11388 (scm_read_0str, scm_eval_0str): Deprecated.
11389
df1ad0d1
MG
113902001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11391
11392 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
11393 SCM_LIST1.
11394
1afff620
KN
113952001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
11396
11397 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
11398 scm_list_n): New functions.
11399 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
11400 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
11401 (lots of files): Use the new functions.
4dadf664 11402
1afff620
KN
11403 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
11404
11405 * strings.c: #include "libguile/deprecation.h".
11406
b858464a
MG
114072001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11408
11409 * read.c (scm_lreadr): When reading a hash token, check for a
11410 user-defined hash procedure first, so that overriding the builtin
11411 hash characters is possible (this was needed for implementing
11412 SRFI-4's read synax `f32(...)').
4dadf664 11413
b858464a
MG
11414 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
11415 because the latter is unsigned now and breaks comparisons like
11416 (n < (scm_t_signed_bits)MIN_VALUE).
4dadf664 11417
d95c0b76
NJ
114182001-06-26 Neil Jerram <neil@ossau.uklinux.net>
11419
11420 * eval.h, eval.c (scm_call_4): New function.
11421
11422 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
11423 directly rather than dispatching to them via scm_ithrow and a lazy
11424 catch.
4dadf664 11425
d95c0b76
NJ
11426 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
11427 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
11428 for trap handler procedures.
11429
11430 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
11431 procedures not being #f.
11432
30e3be5a
ML
114332001-06-27 Michael Livshin <mlivshin@bigfoot.com>
11434
11435 * Makefile.am (c-tokenize.c): add rule to generate it.
11436 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
11437
11438 filter-doc-snarfage.c: remove.
11439
82893676
MG
114402001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11441
11442 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
11443
11444 The following set of changes makes compiling Guile under various
11445 Windows compilers easier. Compilation under GNU systems should
11446 not be affected at all.
11447
11448 Thanks to Stefan Jahn for all necessary information, patches and
11449 testing.
4dadf664 11450
82893676
MG
11451 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
11452 getpgrp, ttyname, primitive-fork and some header inclusion for
11453 Windows.
11454
11455 * random.c: Define M_PI, if not predefined and use __int64 for
11456 LONG64 under Windows.
11457
11458 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
11459 Windows and conditionalize some signal names.
11460
4dadf664 11461 * socket.c (scm_getsockopt): Added missing comma.
82893676
MG
11462 Include socket library header under Windows.
11463
11464 * stime.c (CLKTCK): Add cast to int, to make it compile under
11465 Windows.
11466
11467 * ports.c (truncate): New function, compiled only under Windows.
11468
11469 * net_db.c: Do not declare errno under Windows.
11470
11471 * iselect.h, inet_aton.c: Include socket library headers under
11472 Windows.
11473
11474 * guile.c (inner_main): Under Windows, initialize socket library
11475 and initialize gdb_interface data structures.
11476
11477 * gdb_interface.h: Under Windows, gdb_interface cannot be
11478 initialized statically. Initialize at runtime instead.
11479
11480 * fports.c (write_all): ssize_t -> size_t.
11481 (fport_print): Conditionalize call to ttyname().
11482 (getflags): New function, compiled only under Windows.
11483
11484 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
11485 primitives chown, link, fcntl.
11486 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
11487 as path seperator.
11488
11489 * backtrace.c: Include <io.h> under Windows.
11490
11491 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
11492
11493 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
11494 declaration.
11495
fdc28395
KN
114962001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
11497
11498 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11499 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
11500 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11501 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
11502 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
11503 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
11504 (scm_dynamic_wind, scm_dowinds), environments.c
11505 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
11506 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
11507 goops.c (GETVAR, purgatory, make_class_from_template,
11508 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
11509 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
11510 (scm_primitive_load), modules.c (scm_resolve_module,
11511 scm_c_define_module, scm_c_use_module, scm_c_export,
11512 module_variable, scm_eval_closure_lookup, scm_sym2var,
11513 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
11514 ports.c (scm_port_for_each), print.c (scm_printer_apply),
11515 properties.c (scm_primitive_property_ref), ramap.c (ramap,
11516 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
11517 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
11518 (scm_object_to_string, scm_call_with_output_string,
11519 scm_call_with_input_string), throw.c (scm_body_thunk,
11520 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
11521 scm_make_shared_array), vports.c (sf_flush, sf_write,
11522 sf_fill_input, sf_close): Use one of the above functions.
11523 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
11524
36284627
DH
115252001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11526
11527 * filesys.c (scm_close), ports.c (scm_close_port,
11528 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
11529 instead of SCM_NEGATE_BOOL.
11530
11531 * filesys.c (scm_stat): Clean up type dispatch.
11532
11533 * filesys.c (scm_stat), ports.c (scm_input_port_p,
11534 scm_output_port_p): Get rid of redundant IM type check.
11535
11536 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
11537 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
11538 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
11539 scm_return_entry), numbers.c (scm_number_to_string), objects.c
11540 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
11541 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
11542 scm_addr_vector), stime.c (scm_strftime), strings.c
11543 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
11544 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
11545 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11546 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
11547 instead of scm_makfromstr.
11548
11549 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
11550 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
11551 scm_read_hash_extend), stime.c (scm_strftime), strings.c
11552 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
11553 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
11554 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
11555 !SCM_<pred> over SCM_N<pred>.
11556
11557 * strings.[ch] (scm_makfromstr): Deprecated.
11558
11559 (scm_mem2string): New function, replaces scm_makfromstr.
11560
11561 * strings.c (scm_substring), strop.c (string_copy,
11562 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11563 (scm_symbol_to_string): Fix gc problem.
11564
11565 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
11566 SCM_<foo>_H.
11567
11568 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
11569 warning about comparing signed and unsigned values. This fix is
11570 not optimal, since it won't work reliably if sizeof (c_start) >
11571 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
11572 solution is to define this macro as an inline function, thus
11573 allowing to specifiy the types of c_start and c_end.
11574
13dcb666
DH
115752001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
11576
11577 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
11578 scm_t_debug_frame*.
11579
11580 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
11581 Rename <foo>H to SCM_<foo>_H.
11582
11583 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
11584 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11585
11586 (narrow_stack): Make i unsigned. Don't use side-effecting
11587 operations in conditions.
11588
11589 (narrow_stack, scm_make_stack, scm_stack_id,
11590 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
11591
11592 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
11593 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
11594 more.
11595
11596 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
11597 signedness.
11598
ea2c3968 11599 (scm_last_stack_frame): Remove bogus `;'.
13dcb666
DH
11600
11601 * stacks.h (SCM_FRAMEP): Fix type check.
11602
ac13d9d2
ML
116032001-06-25 Michael Livshin <mlivshin@bigfoot.com>
11604
ee0c0e03
ML
11605 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
11606 c-tokenize.c when doing maintainer-clean.
11607
ac13d9d2
ML
11608 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
11609
11610 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
11611 simplify.
11612
11613 * eval.c: all hash signs are in column 0.
11614
11615 * Makefile.am (guile_filter_doc_snarfage): build using
11616 c-tokenize.c, not filter-doc-snarfage.c.
11617 rearrange snarfing dependencies a bit.
11618
11619 * c-tokenize.lex: new file.
11620
16be44e5
MV
116212001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
11622
11623 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
11624 scm_t_srcpropso_plist. See the big type renaming.
11625 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
11626 Thanks to Seth Alves!
4dadf664 11627
16be44e5
MV
11628 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
11629 they aren't defined already.
11630
5843e5c9
DH
116312001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
11632
11633 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
11634 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
11635 problem.
11636
11637 * backtrace.c (display_expression, scm_set_print_params_x,
11638 display_application, display_frame, scm_backtrace), numbers.c
11639 (scm_istring2number), objects.c (scm_class_of,
11640 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
11641 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11642
11643 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
11644 always positive.
11645
11646 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
11647 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
11648
11649 * objects.c (scm_class_of): Type fix.
11650
11651 (scm_mcache_lookup_cmethod): Improved comment, simplified,
11652 eliminated goto.
11653
11654 * pairs.h (scm_error_pair_access): The function can return if
11655 called recursively.
11656
6b41a313
MG
116572001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11658
11659 * init.c (scm_init_guile_1): Removed initialization of tag.c.
11660
11661 * gdbint.c, init.c: Removed inclusion of tag.h.
11662
11663 * tag.h, tag.c: Removed files.
11664
11665 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
11666
fbbdb121
GH
116672001-06-20 Gary Houston <ghouston@arglist.com>
11668
11669 * deprecation.c, extensions.c, rw.c: include string.h.
11670
72c17ed0
GH
116712001-06-19 Gary Houston <ghouston@arglist.com>
11672
11673 * filter-doc-snarfage.c (process): added ungetc in
11674 MULTILINE_COOKIE case since otherwise it fails when there's no
11675 space between the '(' and the quote of the following string
11676 (gcc 3.0).
11677
4ff9f825
MV
116782001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11679
4927dd28
MV
11680 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
11681
b629af45
MV
116822001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11683
11684 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
0f002b27
MV
11685 extension takes place.
11686 * strings.h (SCM_STRING_LENGTH): Likewise.
11687 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4dadf664 11688
4ff9f825
MV
11689 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
11690 it.
11691
11692 * tags.h: Include <stdint.h> when we have it.
11693 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
11694 available. Else use "unsigned long".
11695 (scm_signed_bits_t): New.
11696
11697 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11698 (SCM_INUM): Cast result to scm_signed_bits_t.
11699
58bee6a8
TTN
117002001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11701
11702 * mkstemp.c: Update path to #include file scmconfig.h.
11703 Thanks to Golubev I. N.
11704
00d8d838
DH
117052001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11706
11707 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11708
ea2c3968 11709 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
00d8d838
DH
11710 the macro definition.
11711
11712 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11713 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11714 instead of SCM_INST_TYPE.
11715
11716 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11717 the object is a struct before accessing its struct flags.
11718
11719 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11720
495c67e5
GH
117212001-06-10 Gary Houston <ghouston@arglist.com>
11722
11723 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11724 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11725 work reliably anymore. try it from boot-9.scm instead.
11726
6a9003d3
MV
117272001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11728
11729 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
9a5fa6e9 11730 Thanks to Matthias Köppe!
58bee6a8 11731
47bcd646
ML
117322001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11733
a88ff5b6
ML
11734 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11735 space-happy C preprocessors.
11736
47bcd646 11737 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
9a5fa6e9 11738 inside cookies. thanks to Matthias Köppe!
47bcd646 11739
bab246f3
DH
117402001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11741
11742 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11743 keywords. Fix gc protection.
11744
11745 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11746 operations in macro calls.
11747
11748 * pairs.c (scm_error_pair_access): Avoid recursion.
11749
11750 Thanks to Matthias Koeppe for reporting the bugs that correspond
11751 to the following set of patches.
11752
11753 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11754 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11755 bitvector base address using SCM_BITVECTOR_BASE.
11756
11757 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11758 unsigned long*.
11759
dcb410ec
DH
117602001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11761
11762 * goops.c (SCM_CLASS_REDEF): Removed.
11763
11764 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11765 SCM_<foo>_H.
11766
11767 Thanks to Matthias Koeppe for reporting the bugs that correspond
11768 to the following set of patches.
11769
11770 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11771 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11772 scm_sys_allocate_instance, clear_method_cache,
11773 scm_sys_invalidate_method_cache_x, scm_make,
11774 create_standard_classes, scm_make_port_classes, scm_make_class,
11775 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11776
11777 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11778
11779 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11780
11781 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11782 UNARY_ELTS_CODE): Remove bogus break statement.
11783
11784 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11785 Don't access bit vectors elements as SCM objects.
11786
11787 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11788 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11789 Don't assign to an unpacked value.
11790
e81d98ec
DH
117912001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11792
11793 * __scm.h (SCM_NORETURN): Moved here from error.h.
11794
11795 (SCM_UNUSED): New macro.
11796
11797 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11798
11799 * backtrace.c (display_error_handler), continuations.c
11800 (continuation_print), debug.c (debugobj_print), dynwind.c
11801 (guards_print), environments.c (observer_print,
11802 core_environments_finalize, leaf_environment_cell,
11803 leaf_environment_print, eval_environment_print,
11804 eval_environment_observer, import_environment_define,
11805 import_environment_undefine, import_environment_print,
11806 import_environment_observer, export_environment_define,
11807 export_environment_undefine, export_environment_print,
11808 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11809 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11810 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11811 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11812 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11813 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11814 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11815 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11816 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11817 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11818 set_slot_value, test_slot_existence, scm_change_object_class,
11819 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11820 default_setter), guardians.c (guardian_print, guardian_gc_init,
11821 guardian_zombify, whine_about_self_centered_zombies), guile.c
11822 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11823 mallocs.c (malloc_print), numbers.c (scm_print_real,
11824 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11825 end_input_default, scm_port_print, fill_input_void_port,
11826 write_void_port), root.c (root_print), smob.c (scm_mark0,
11827 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11828 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11829 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11830 (scm_struct_free_0, scm_struct_free_standard,
11831 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11832 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11833 scm_handle_by_throw, scm_ithrow), weaks.c
11834 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11835 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11836 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11837
11838 * error.h (SCM_NORETURN): Moved to __scm.h.
11839
11840 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11841 Renamed <foo>H to SCM_<foo>_H.
11842
11843 * gc.c (debug_cells_gc_interval): New static variable.
11844
11845 (scm_assert_cell_valid): If selected by the user, perform
11846 additional garbage collections.
11847
11848 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11849 if additional garbage collections are desired.
11850
11851 (mark_gc_async): If additional garbage collections are selected
11852 by the user, don't call the after-gc-hook. Instead require the
11853 user to run the hook manually.
11854
11855 * pairs.c (scm_error_pair_access): New function. Only compiled
11856 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11857
11858 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11859
11860 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11861 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11862 is a real pair object. (Glocs are also accepted, but that may
11863 change.) If not, abort with an error message.
11864
17fa3fcf
DH
118652001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11866
11867 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11868
11869 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11870 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11871
feeedafb
MV
118722001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11873
11874 * extensions.c (scm_c_register_extension): Allow NULL as library
11875 name.
11876 (load_extension): Ignore NULL library names when comparing.
58bee6a8 11877
feeedafb
MV
11878 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11879 non-pointers are being compared. Thanks to Alexander Klimov!
11880
4bcdfe46
GH
118812001-06-04 Gary Houston <ghouston@arglist.com>
11882
11883 * rw.c (scm_write_string_partial): new procedure implementing
11884 write-string/partial in (ice-9 rw).
11885 * rw.h: declare scm_write_string_partial.
58bee6a8 11886
f480396b
MV
118872001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11888
feeedafb
MV
11889 * keywords.c (keyword_print): Substract 1 from length of symbol
11890 name, accounting for the silly dash.
11891
11892 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11893 Do not emit deprecation warning.
11894
f480396b
MV
11895 Added exception notice to all files.
11896
11897 * dynl.c: Include "deprecation.h".
11898
c794483c
MV
118992001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11900
11901 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11902 scm_clear_registered_modules): Deprecated.
11903
9454d8d5
RB
119042001-06-02 Rob Browning <rlb@cs.utexas.edu>
11905
11906 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11907 guile-snarf-docs-texi.
11908
11909 * fports.c: HAVE_ST_BLKSIZE changed to
11910 HAVE_STRUCT_STAT_ST_BLKSIZE.
11911 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11912 HAVE_STRUCT_STAT_ST_BLKSIZE.
11913
11914 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11915 HAVE_STRUCT_STAT_ST_RDEV.
11916 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11917 HAVE_STRUCT_STAT_ST_BLKSIZE.
11918 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11919 HAVE_STRUCT_STAT_ST_BLOCKS.
11920
114f9bab
MV
119212001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11922
b0c16cd9
MV
11923 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11924 of scm_eval_x to allow module changes between the forms in the
11925 string. Set/restore module using scm_c_call_with_current_module.
11926
114f9bab
MV
11927 * mkstemp.c: New file, slightly modified from libiberties
11928 mkstemps.c.
11929
c99f9605
ML
119302001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11931
11932 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11933 filter-doc-snarfage.c: new files.
11934
11935 * Makefile.am: add stuff to [build,] use and distribute
11936 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11937
11938 * guile-snarf.in: grok the new snarf output.
11939
11940 * snarf.h: make the output both texttools- and `read'-friendly.
11941
47bcd646
ML
11942 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11943 guile-snarf-docs. (should also deprecate, I guess. maybe not).
c99f9605 11944
7eb5d7b2
MV
119452001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11946
11947 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11948 error for unsupported format controls and for superflous
ec2667f0 11949 arguments. Thanks to Daniel Skarda!
7eb5d7b2
MV
11950
11951 * print.h, print.c (scm_print_symbol_name): Factored out of
11952 scm_iprin1.
11953 (scm_iprin1): Call it.
58bee6a8 11954
7eb5d7b2
MV
11955 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11956 weird names are printed correctly.
11957
11958 * print.c (scm_print_symbol_name): Symbols whose name starts with
11959 `#' or `:' or ends with `:' are considered weird.
11960
609c3d30
MG
119612001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11962
11963 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11964 and /.
11965
119662001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11967
11968 * debug.h: Removed prototype for scm_eval_string.
11969
8d09eb04
MG
119702001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11971
11972 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
58bee6a8 11973 (make-string 2000 #\!))' in an older version).
8d09eb04
MG
11974
11975 Change strncpy to memcpy to allow embedded NUL characters in
11976 symbol prefix.
11977
dd85ce47
ML
119782001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11979
fde50407
ML
11980 * hooks.c (scm_create_hook): deprecated.
11981 (make_hook): deleted.
11982 (scm_make_hook): all the hook creation code is now here.
11983
11984 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11985 a hook, make it permanent, and do a `scm_c_define' on it.
11986
dd85ce47
ML
11987 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11988
11989 * socket.c (s_scm_inet_pton): fix docstring quoting.
11990 (s_scm_inet_ntop): ditto.
11991
11992 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11993
11994 * hashtab.c (scm_internal_hash_fold): fix argument position in
11995 SCM_ASSERT.
11996
11997 * environments.c (s_scm_import_environment_set_imports_x): fix
11998 argument position in SCM_ASSERT.
11999
12000 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
12001 (s_scm_make_iloc): ditto.
12002
729dbac3
DH
120032001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
12004
12005 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
12006
12007 * eval.c (promise_print): Read the promise's value as an object.
12008
12009 (SCM_CEVAL): Don't perform side-effecting operations in macro
12010 parameters.
12011
12012 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
12013 conditional expression.
12014
12015 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
12016 initializer.
12017
12018 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
12019 text, removed redundant computation of effective_length and fixed
12020 the overflow check.
12021
12022 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
12023 values.
12024
12025 (wrap_init): Don't use SCM_C[AD]R for non pairs.
12026
12027 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
12028
12029 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
12030 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
12031
12032 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
12033
12034 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
12035 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
12036 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
12037 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
12038
12039 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
12040
12041 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
12042
ea2c3968 12043 * ramap.c (ramap_rp): Removed bogus `;'.
729dbac3
DH
12044
12045 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
12046 problem.
12047
12048 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
12049 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
12050 Read SCM objects rather than scm_bits_t values.
12051
12052 * tags.h (SCM_VOIDP_TEST): Removed.
12053
12054 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
12055 value of 2 now corresponds to the former 1, the current 1
12056 corresponds to the former situation that SCM_VOIDP_TEST was
12057 defined.
12058
58bee6a8
TTN
12059 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
12060 If this appears to be not ANSI compliant, we will change it to
729dbac3
DH
12061 typedef struct scm_unused_struct { } * SCM;
12062 Thanks to Han-Wen Nienhuys for the suggestion.
12063
12064 * unif.c (scm_array_set_x): Fix typing problem, and use
12065 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
12066 dealing with uniform vectors.
12067
6b1b030e
ML
120682001-05-27 Michael Livshin <mlivshin@bigfoot.com>
12069
12070 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
12071 (scm_igc): mark from them, too (precisely, not conservatively!).
12072
12073 * root.h (scm_gc_registered_roots): new object in
12074 scm_sys_protects.
12075
12076 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
12077 `scm_protect_object'. shouldn't call it at all, though, it seems.
12078
12079 * gc.c (scm_[un]protect_object): deprecated.
12080 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
12081 (scm_gc_[un]register_root[s]): new.
12082
12083 * gc.h: add prototypes for scm_gc_[un]protect_object,
12084 scm_gc_[un]register_root[s].
12085
c014a02e
ML
120862001-05-26 Michael Livshin <mlivshin@bigfoot.com>
12087
12088 revert the controversial part of the 2001-05-24 changes.
12089
0120801d
MV
120902001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
12091
f4e0611e
MV
12092 * modules.c (scm_env_module): Exported to Scheme.
12093
0120801d 12094 * eval.c (scm_debug_opts): New option `show-file-name'.
729dbac3 12095
0120801d 12096 * debug.h (SCM_SHOW_FILE_NAME): New.
729dbac3 12097
0120801d
MV
12098 * backtrace.c: Include "libguile/filesys.h".
12099 (sym_base, display_backtrace_get_file_line,
12100 display_backtrace_file, display_backtrace_file_and_line): New.
12101 (display_frame): Call display_backtrace_file_and_line if that is
12102 requested.
12103 (display_backtrace_body): Call scm_display_backtrace_file if
12104 requested.
12105
12106 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
12107 Prototypes removed since there's no definition for these
12108 functions.
12109
880a7d13
MG
121102001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12111
12112 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
12113 Changed use of scm_array->scm_array_t and
12114 scm_array_dim->scm_array_dim_t to enable build with
12115 --disable-deprecated.
12116
1be6b49c
ML
121172001-05-24 Michael Livshin <mlivshin@bigfoot.com>
12118
12119 The purpose of this set of changes is to regularize Guile's usage
12120 of ANSI C integral types, with the following ideas in mind:
12121
d69c867a
ML
12122 - SCM does not nesessarily have to be long.
12123 - long is not nesessarily enough to store pointers.
1be6b49c
ML
12124 - long is not nesessarily the same size as int.
12125
12126 The changes are incomplete and possibly buggy. Please test on
12127 something exotic.
12128
12129 * validate.h
12130 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
12131 new macros.
12132
12133 * unif.h: type renaming:
12134 scm_array -> scm_array_t
12135 scm_array_dim -> scm_array_dim_t
12136 the old names are deprecated, all in-Guile uses changed.
12137
12138 * tags.h (scm_ubits_t): new typedef, representing unsigned
12139 scm_bits_t.
12140
12141 * stacks.h: type renaming:
12142 scm_info_frame -> scm_info_frame_t
12143 scm_stack -> scm_stack_t
12144 the old names are deprecated, all in-Guile uses changed.
12145
12146 * srcprop.h: type renaming:
12147 scm_srcprops -> scm_srcprops_t
12148 scm_srcprops_chunk -> scm_srcprops_chunk_t
12149 the old names are deprecated, all in-Guile uses changed.
12150
12151 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
12152 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
12153 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
12154 vectors.c, vports.c, weaks.c:
12155 various int/size_t -> size_t/scm_bits_t changes.
12156
12157 * random.h: type renaming:
12158 scm_rstate -> scm_rstate_t
12159 scm_rng -> scm_rng_t
12160 scm_i_rstate -> scm_i_rstate_t
12161 the old names are deprecated, all in-Guile uses changed.
12162
12163 * procs.h: type renaming:
12164 scm_subr_entry -> scm_subr_entry_t
12165 the old name is deprecated, all in-Guile uses changed.
12166
12167 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
12168 type renaming:
12169 scm_option -> scm_option_t
12170 the old name is deprecated, all in-Guile uses changed.
12171
12172 * objects.c: various long -> scm_bits_t changes.
12173 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
12174
12175 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
12176 SCM_I_FIXNUM_BIT.
12177
12178 * num2integral.i.c: new file, multiply included by numbers.c, used
12179 to "templatize" the various integral <-> num conversion routines.
12180
12181 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
12182 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
12183 deprecated.
12184 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
12185 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
12186 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
12187 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
12188 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
12189 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
12190 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
12191 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
12192 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
12193 scm_num2size): new functions.
12194
d69c867a 12195 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
1be6b49c
ML
12196
12197 * load.c: change int -> size_t in various places (where the
12198 variable is used to store a string length).
12199 (search-path): call scm_done_free, not scm_done_malloc.
12200
12201 * list.c (scm_ilength): return a scm_bits_t, not long.
12202 some other {int,long} -> scm_bits_t changes.
12203
12204 * hashtab.c: various [u]int -> scm_bits_t changes.
12205 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
12206 (scm_ihashx): n: uint -> scm_bits_t
12207 use scm_bits2num instead of scm_ulong2num.
12208
12209 * gsubr.c: various int -> scm_bits_t changes.
12210
12211 * goops.[hc]: various {int,long} -> scm_bits_t changes.
12212
d69c867a 12213 * gh_data.c (gh_num2int): no loss of precision any more.
1be6b49c
ML
12214
12215 * gh.h (gh_str2scm): len: int -> size_t
12216 (gh_{get,set}_substr): start: int -> scm_bits_t,
12217 len: int -> size_t
12218 (gh_<num>2scm): n: int -> scm_bits_t
12219 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
12220 (gh_length): return scm_bits_t, not unsigned long.
12221
12222 * gc.[hc]: various small changes relating to many things stopping
12223 being long and starting being scm_[u]bits_t instead.
12224 scm_mallocated should no longer wrap around.
12225
12226 * fports.h: type renaming:
12227 scm_fport -> scm_fport_t
12228 the old name is deprecated, all in-Guile uses changed.
12229
12230 * fports.c (fport_fill_input): count: int -> scm_bits_t
12231 (fport_flush): init_size, remaining, count: int -> scm_bits_t
12232
12233 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
12234 those prototypes, as the functions they prototype don't exist.
12235
12236 * fports.c (default_buffer_size): int -> size_t
12237 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
12238 default_size: int -> size_t
12239 (scm_setvbuf): csize: int -> scm_bits_t
12240
12241 * fluids.c (n_fluids): int -> scm_bits_t
12242 (grow_fluids): old_length, i: int -> scm_bits_t
12243 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
12244 scm_bits_t
12245 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
12246
12247 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
12248 the new and shiny SCM_NUM2INT.
12249
12250 * extensions.c: extension -> extension_t (and made a typedef).
12251
12252 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
12253 there are no nasty surprises if/when the various deeply magic tag
12254 bits move somewhere else.
12255
12256 * eval.c: changed the locals used to store results of SCM_IFRAME,
12257 scm_ilength and such to be of type scm_bits_t (and not int/long).
12258 (iqq): depth, edepth: int -> scm_bits_t
12259 (scm_eval_stack): int -> scm_bits_t
12260 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
12261 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
12262 i: int -> scm_bits_t
12263
12264 * environments.c: changed the many calls to scm_ulong2num to
12265 scm_ubits2num.
12266 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
12267
12268 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
12269
12270 * debug.h: type renaming:
12271 scm_debug_info -> scm_debug_info_t
12272 scm_debug_frame -> scm_debug_frame_t
12273 the old names are deprecated, all in-Guile uses changed.
12274 (scm_debug_eframe_size): int -> scm_bits_t
12275
12276 * debug.c (scm_init_debug): use scm_c_define instead of the
12277 deprecated scm_define.
12278
12279 * continuations.h: type renaming:
12280 scm_contregs -> scm_contregs_t
12281 the old name is deprecated, all in-Guile uses changed.
12282 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
12283 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
12284
12285 * continuations.c (scm_make_continuation): change the type of
d69c867a 12286 stack_size from long to scm_bits_t.
1be6b49c
ML
12287
12288 * ports.h: type renaming:
12289 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
12290 scm_port -> scm_port_t
12291 scm_ptob_descriptor -> scm_ptob_descriptor_t
12292 the old names are deprecated, all in-Guile uses changed.
12293 (scm_port_t.entry): int -> scm_bits_t.
12294 (scm_port_t.line_number): int -> long.
12295 (scm_port_t.putback_buf_size): int -> size_t.
12296
12297 * __scm.h (long_long, ulong_long): deprecated (they pollute the
d69c867a 12298 global namespace and have little value beside that).
1be6b49c
ML
12299 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
12300 SCM handle).
12301 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
d69c867a 12302 exist (for size_t & ptrdiff_t).
1be6b49c
ML
12303 (scm_sizet): deprecated.
12304
12305 * Makefile.am (noinst_HEADERS): add num2integral.i.c
12306
a6219f22
MV
123072001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
12308
12309 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
12310 SCM_VARIABLE_INIT since that it what it used to be.
12311
12312 * deprecation.c (scm_include_deprecated_features): Make docstring
9a5fa6e9 12313 ANSIsh. Thanks to Matthias Köppe!
a6219f22 12314
311b6a3c
MV
123152001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
12316
9dfc4faa
MV
12317 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
12318 needed for weak-key hashtables.
12319
12320 * procs.c (scm_make_subr_with_generic): Add missing last argument
12321 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
12322
12323 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
12324 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
311b6a3c
MV
12325
12326 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
12327
2fc933fe
MV
123282001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
12329
57ae112d
MV
12330 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
12331 `duplicate_string'. Do not use an indirect cell, store symbol
12332 directly in collision list of hash table.
12333 (duplicate_string): Removed.
58bee6a8 12334
57ae112d
MV
12335 * init.c (scm_init_guile_1): Call scm_init_extensions.
12336
12337 * Makefile.am: Add "extensions.c" and related files in all the
12338 right places.
12339
12340 * extensions.h, extension.c: New files.
12341
12342 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
12343
2fc933fe
MV
12344 * modules.h (scm_system_module_env_p): Move out of deprecated
12345 section.
12346
12347 * rw.h (scm_init_rw): Added prototype.
12348
12349 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
12350 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
12351 New functions. They replace scm_make_gsubr and
12352 scm_make_gsubr_with_generic. The `make' variants only create the
12353 gsubr object, while the `define' variants also put it into the
12354 current module. Changed all callers.
12355 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
12356
12357 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
12358 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
12359 functions. They replace scm_make_subr, scm_make_subr_opt and
12360 scm_make_subr_with_generic. The `make' variants only create the
12361 subr object, while the `define' variants also put it into the
12362 current module. Changed all callers.
12363 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
12364 Deprecated.
12365
12366 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
12367 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
12368 the comments above.
58bee6a8 12369
18928596
NJ
123702001-05-19 Neil Jerram <neil@ossau.uklinux.net>
12371
12372 * throw.c (scm_lazy_catch): Slight docstring clarification.
12373
21a13beb
MV
123742001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
12375
e2b6ddc6
MV
12376 * throw.c: Lazy-catch handlers are no longer allowed to return.
12377 Fixed comments throughout.
12378 (scm_ithrow): Signal an error when a lazy-catch handler returns.
12379 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
12380 recognized as such.
12381
21a13beb
MV
12382 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
12383 refered to s_scm_minor_version previously.
12384
12385 * modules.h, modules.c: Moved around a lot of code so that
12386 deprecated features appear at the bottom.
12387 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
12388 module_prefix, make_modules_in_var, beautify_user_module_x_var,
12389 scm_the_root_module, scm_make_module, scm_ensure_user_module,
12390 scm_load_scheme_module): Deprecated.
12391 (scm_system_module_env_p): Return SCM_BOOL_T directly for
12392 environments corresponding to the root module.
12393 (convert_module_name, scm_c_resolve_module,
12394 scm_c_call_with_current_module, scm_c_define_module,
12395 scm_c_use_module, scm_c_export): New.
12396 (the_root_module): New static variant of scm_the_root_module. Use
12397 it everywhere instead of scm_the_root_module.
58bee6a8 12398
21a13beb
MV
12399 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
12400 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
12401 (scm_c_with_fluid): New.
12402 (scm_with_fluids): Use scm_c_with_fluids instead of
12403 scm_internal_with_fluids.
58bee6a8 12404
21a13beb
MV
12405 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
12406 `scm_init_goops'. Do not explicitly create/switch modules.
12407 Return SCM_UNSPECIFIED.
12408 (scm_init_goops): Only register `%init-goops-builtins' procedure.
12409 (scm_load_goops): Use scm_c_resolve_module instead of
12410 scm_resolve_module.
58bee6a8 12411
21a13beb
MV
12412 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
12413 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
12414 `scm_init_rw' prior to loading the startup files.
12415
12416 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
12417 scm_init_rdelim. Do not explicitly create/switch modules.
12418 Return SCM_UNSPECIFIED.
12419 (scm_init_rdelim): Only register `%init-rdelim-builtins'
12420 procedure.
58bee6a8 12421
21a13beb
MV
12422 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
12423 explicitly create/switch modules. Return SCM_UNSPECIFIED.
12424 (scm_init_rw): Only register `%init-rw-builtins' procedure.
12425
12426 * script.c (scm_shell): Evaluate the compiled switches in the
12427 current module, not in the root module.
12428
124292001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
12430
12431 * fluids.c (scm_c_with_fluids): Rename from
12432 scm_internal_with_fluids.
12433 (scm_internal_with_fluids): Deprecated.
12434 (scm_c_with_fluid): New.
12435
09cb9e73
DH
124362001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12437
12438 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
12439
12440 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
12441 accessed with SCM_C[AD]R.
12442
12443 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
12444
c81ea65d
RB
124452001-05-16 Rob Browning <rlb@cs.utexas.edu>
12446
12447 * version.c (s_scm_major_version): doc fixes.
12448 (s_scm_minor_version): doc fixes.
12449 (s_scm_minor_version): new function.
12450
12451 * version.h (scm_init_version): new function.
12452
12453 * versiondat.h.in: add GUILE_MICRO_VERSION.
12454
887dfa7d
DH
124552001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
12456
12457 * deprecation.c (scm_init_deprecation): Renamed
12458 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
12459
78930a69
MV
124602001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
12461
12462 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
12463 dependent on cpp_cnvt.awk
12464
39cde5c5
MG
124652001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12466
12467 * script.c (scm_compile_shell_switches): New command line option
12468 `--use-srfi' for loading a list of SRFIs on startup.
12469 (scm_shell_usage): Added `--use-srfi' to help message.
12470
f3f9dcbc
MV
124712001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12472
78930a69 12473 Merged from mvo-vcell-cleanup-1-branch.
887dfa7d 12474
f3f9dcbc
MV
12475 The concept of vcells has been removed from Guile. With it,
12476 explicit obarrays and associated operations are gone. Use
12477 hashtables instead of obarrays.
887dfa7d 12478
f3f9dcbc
MV
12479 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
12480 result as variable instead of vcell. Glocs no longer point to a
12481 vcell but to a variable. Use scm_c_define instead of
12482 scm_sysintern and treat the result as a variable (which it is),
12483 not a vcell.
887dfa7d 12484
f3f9dcbc
MV
12485 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
12486 SCM_DEFVARIABLEP): Deprecated.
12487 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
12488 (variable_print): Do not print name of variable.
12489 (variable_equalp): Compare values, not vcells.
12490 (anonymous_variable_sym): Removed.
12491 (make_vcell_variable): Removed.
12492 (make_variable): New, as replacement.
12493 (scm_make_variable, scm_make_undefined_variable): Do not take name
12494 hint parameter.
12495 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
12496 error in that case.
12497 (scm_builtin_variable): Deprecated.
12498
12499 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
12500 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
12501 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
12502 scm_sysintern, scm_sysintern0, scm_symbol_value0,
12503 scm_string_to_obarray_symbol, scm_intern_symbol,
12504 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
12505 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
12506 Deprecated and moved to "symbols-deprecated.c".
12507 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
12508 (scm_init_symbols): Call scm_init_symbols_deprecated.
12509 * symbols-deprecated.c: New file.
12510 * Makefile.am: Added symbols-deprecated.c and related files in all
12511 the right places.
887dfa7d 12512
f3f9dcbc
MV
12513 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
12514 SCM_GLOBAL_VCELL_INIT): Deprecated.
12515 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
12516 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
887dfa7d 12517
f3f9dcbc
MV
12518 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
12519 SCM_GLOC_SYM.
12520
12521 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
12522 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
12523 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
12524 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
12525 Changed according to the `throughout' comments.
12526
12527 * modules.h, modules.c (scm_module_system_booted_p): Changed type
12528 to `int'.
12529 (scm_module_type): Removed.
12530 (the_root_module): Renamed to the_root_module_var. Now points to
12531 a variable instead of a vcell. Updated all uses.
12532 (scm_the_root_module): Return SCM_BOOL_F when module systems
12533 hasn't been booted yet.
12534 (SCM_VALIDATE_STRUCT_TYPE): Removed.
12535 (scm_post_boot_init_modules): Made static.
12536 (scm_set_current_module): Call scm_post_boot_init_modules on first
12537 call.
12538 (make_modules_in, beautify_user_module_x, resolve_module,
12539 try_module_autoload, module_make_local_var_x): Tacked on "_var"
12540 suffix. Now point to variables instead of vcells. Updated all
12541 uses.
12542 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
12543 and return SCM_BOOL_F in that case.
12544 (scm_module_transformer): Likewise.
12545 (sym_module, scm_lookup_closure_module, scm_env_module): New.
12546 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
12547 (scm_eval_closure_lookup): Do not allow new definitions when
12548 `interface' flag is set.
12549 (scm_standard_interface_eval_closure): New.
12550 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
12551 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
12552 scm_c_lookup, scm_c_module_define, scm_c_define,
12553 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
12554 scm_modules_prehistory): New.
12555 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
12556 instead of scm_intern0.
887dfa7d 12557
f3f9dcbc
MV
12558 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
12559 symbol.
12560
12561 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
12562 hashtable operations to maintain the keywords, not obarray ones.
12563
12564 * init.c (scm_load_startup_files): Do not call
12565 scm_post_boot_init_modules. This is done by
12566 scm_set_current_module now.
12567 (scm_init_guile_1): Call scm_modules_prehistory. Call
12568 scm_init_variable early on.
12569
12570 * goops.c (s_scm_sys_goops_loaded): Get
12571 var_compute_applicable_methods from scm_sym2var, not from a direct
12572 invocation of scm_goops_lookup_closure.
12573
12574 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
12575
12576 * gc.c: Added simple debugging hack to mark phase of GC: When
12577 activated, do not tail-call scm_gc_mark. This gives nice
12578 backtraces.
12579 (scm_unhash_name): Removed.
12580
12581 * feature.c (features): Renamed to features_var. Now points to a
12582 variable instead of a vcell. Updated all uses.
12583
12584 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
12585 `scm_current_module_lookup_closure' which will do the right thing
12586 when the module system hasn't been booted yet.
12587 (SCM_GLOC_SYM): Removed.
12588 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
12589 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
887dfa7d 12590
f3f9dcbc
MV
12591 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
12592 instead of with vcells. Do not overwrite `var' with the result of
12593 the lookup, use the new `real_var' instead. Remove `var2' in
12594 exchange (which was only used with threads).
12595 (sym_three_question_marks): New.
12596 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
12597 `SCM_GLOC_SYM'.
12598 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
12599 (scm_m_atfop): Expect the function definition to be a variable
12600 instead of a vcell.
12601 (scm_macroexp): Do not use `unmemocar', explicitely remember the
12602 symbol instead.
12603 (scm_unmemocopy): Removed thoughts about anti-macro interface.
12604 (scm_eval_args): Use more explicit code in the gloc branch of the
12605 atrocious struct ambiguity test. The optimizer will sort this
12606 out.
12607 (scm_deval_args): Likewise.
12608 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
12609 remember the symbol instead. Added some comments where
12610 scm_tc3_cons_gloc really exclusively refers to structs.
12611 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
12612 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
12613 of scm_sysintern in general.
12614
12615 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
12616 explicit magic.
12617
12618 * debug.c (s_scm_make_gloc): Only allow proper variables, no
12619 pairs. Put the variable directly in the gloc.
12620 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
12621 (scm_init_debug): Use scm_c_define instead scm_sysintern.
12622
12623 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
12624
12625 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
12626 scm_the_last_stack_fluid_var. It now points to a variable instead
12627 of a vcell. Updated all uses.
12628 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
12629 instead of a vcell. Updated all uses.
12630
12631 * _scm.h: Include "variables.h" and "modules.h" since almost
12632 everybody needs them now.
12633
12634 * root.h (scm_symhash, scm_symhash_vars): Removed.
12635 * gc.c (scm_init_storage): Do not initialize them.
887dfa7d 12636
7c33806a
DH
126372001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12638
12639 * eval.c (scm_init_eval): Initialize scm_undefineds and
58bee6a8 12640 scm_listofnull.
7c33806a
DH
12641
12642 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
12643 like the SCM_NEWCELL macro counterparts.
12644
12645 (scm_init_storage, scm_init_gc): Moved initialization of
12646 scm_tc16_allocated from scm_init_gc to scm_init_storage.
12647
12648 (scm_init_storage): Moved initialization of scm_undefineds and
12649 scm_listofnull to eval.c, initializion of scm_nullstr to
12650 strings.c, initializion of scm_nullvect to vectors.c.
12651
12652 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
12653 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
12654
12655 * init.c (scm_init_guile_1): Reordered some initializations and
12656 added dependcy information comments.
12657
12658 * load.c (scm_init_load): Use scm_nullstr.
12659
12660 * strings.c (scm_init_strings): Initialize scm_nullstr.
12661
12662 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
12663
11bbab47
MV
126642001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
12665
12666 * values.c (print_values): Print as a unreadable object, not as
9a5fa6e9 12667 multiple lines. Thanks to Matthias Köppe!
11bbab47 12668
5cd06d5e
DH
126692001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
12670
12671 * deprecation.c: Fixed copyright date.
12672
12673 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
12674 DEPRECATION_H to SCM_DEPRECATION_H.
12675
32bac999
TTN
126762001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
12677
12678 * guile-doc-snarf.in: Update copyright.
12679 Fix relative path bug. Thanks to Sergey Poznyakoff.
12680
c9dcc5ae
MV
126812001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12682
12683 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
12684 accept open ports. Thanks to Quetzalcoatl Bradley!
12685
7c582ec9
MG
126862001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12687
12688 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
12689 has 779 primitives on startup.
12690
284ab601
MV
126912001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
12692
12693 * eval.c (scm_i_eval): Copy expression before passing it to
12694 SCM_XEVAL. The copy operation was removed unintendedly during my
12695 change on 2001-03-25.
12696
910d1e40
ML
126972001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12698
9a5fa6e9 12699 from Matthias Köppe (thanks!):
910d1e40
ML
12700
12701 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12702 portable.
12703
12704 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12705 docstring.
12706
56e55ac7
DH
127072001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12708
12709 * gc.c (scm_init_gc): Added FIXME comment.
12710
12711 * hooks.c: Since hooks don't have a name any more, it is not
12712 necessary to include objprop.h.
12713
12714 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12715
12716 (symbol_name, scm_make_hook_with_name): Removed.
12717
12718 (scm_create_hook): Don't set the hook's name property.
12719
12720 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12721
12722 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12723
12724 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12725
12726 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12727 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12728 FLOBUFLEN and define it unconditionally.
12729
d204b24c
MV
127302001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12731
438201b4
MV
12732 * gh_data.c (gh_lookup): Call gh_module_lookup with
12733 `scm_current_module ()', not `#f'.
12734 (gh_module_lookup): Expect a module instead of an obarray as first
12735 argument and do lookup in that module.
56e55ac7 12736
d204b24c
MV
12737 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12738 arrays. The length of array is already determined differently and
12739 scm_uniform_vector_length does not work on arrays.
12740
26c1d549
MV
127412001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12742
fe7c2f88
MV
12743 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12744 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12745
26c1d549
MV
12746 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12747 they are not used. Changed `wrong type' error into `wrong num
12748 args' error. Changed all callers.
56e55ac7 12749
26c1d549
MV
12750 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12751 arguments are supplied.
12752
1c938eb8
TTN
127532001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12754
12755 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12756 describe `regexp/notbol' and `regexp/noteol' execution flags.
12757
3a6379f7
TTN
12758 * strop.c (scm_substring_move_x): Doc fix; nfc.
12759
c10ecc4c
MV
127602001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12761
12762 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12763 (scm_set_object_procedure_x): Use it to check argument. Fix
12764 docstring.
12765
12766 * evalext.c (scm_definedp): Fix docstring.
12767
a57a0b1e
GH
127682001-05-05 Gary Houston <ghouston@arglist.com>
12769
12770 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12771 support.
12772
7a095584
NJ
127732001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12774
12775 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12776 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12777 Change R4RS references to R5RS.
12778
12779 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12780 docstring source are correctly reproduced in the output (ii)
12781 we don't anymore get occasional trailing quotes. Also reorganized
12782 and commented the code a little.
12783
12784 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12785 fixes.
12786
dd2a6f3a
MG
127872001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12788
12789 * strop.c (scm_string_split): New procedure.
12790
12791 * strop.h (scm_string_split): Added prototype.
12792
00120130
GH
127932001-05-04 Gary Houston <ghouston@arglist.com>
12794
12795 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12796 Dale P. Smith.
12797
b65e6bfe
MV
127982001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12799
12800 * rw.c: Include "modules.h" and "strports.h".
12801
12802 * net_db.h (scm_gethost): Added prototype.
12803
12804 * deprecation.h, deprecation.c: New.
12805 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12806 (DOT_X_FILES): Added "deprecation.x".
12807 (modinclude_HEADERS): Added "deprecation.h".
12808
12809 * init.c: Include "deprecation.h".
12810 (scm_init_guile_1): Call scm_init_deprecation.
1c938eb8 12811
b65e6bfe
MV
128122001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12813
12814 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12815 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12816 New.
12817
b0e5fd8c
GH
128182001-04-29 Gary Houston <ghouston@arglist.com>
12819
12820 * rw.c: new file, implementing C part of module (ice-9 rw).
12821 (scm_read_string_x_partial): moved from ioext.c
12822 (scm_init_rw): new proc.
12823 * rw.h: new file.
12824 init.c: include rw.h and call scm_init_rw.
12825 Makefile.am: include rw.c and rw.h.
12826
0b2da99c
RB
128272001-04-28 Rob Browning <rlb@cs.utexas.edu>
12828
12829 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12830 know what's supposed to happen to it.
12831
12832 * list.h (scm_list_star): deprecation expired - removed.
12833
12834 * numbers.h (scm_dblproc): deprecation expired - removed.
12835 (SCM_UNEGFIXABLE): deprecation expired - removed.
12836 (SCM_FLOBUFLEN): deprecation expired - removed.
12837 (SCM_INEXP): deprecation expired - removed.
12838 (SCM_CPLXP): deprecation expired - removed.
12839 (SCM_REAL): deprecation expired - removed.
12840 (SCM_IMAG): deprecation expired - removed.
12841 (SCM_REALPART): deprecation expired - removed.
12842 (scm_makdbl): deprecation expired - removed.
12843 (SCM_SINGP): deprecation expired - removed.
12844 (SCM_NUM2DBL): deprecation expired - removed.
12845 (SCM_NO_BIGDIG): deprecation expired - removed.
12846
12847 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12848 (scm_tc_dblr): deprecation expired - removed.
12849 (scm_tc_dblc): deprecation expired - removed.
12850 (scm_tc16_flo): deprecation expired - removed.
12851 (scm_tc_flo): deprecation expired - removed.
12852
12853 * tag.h (scm_tag): deprecation expired - removed.
12854
12855 * tag.c: (scm_tag): deprecation expired - removed.
12856
12857 * ioext.c: (scm_fseek): deprecation expired - removed.
12858
12859 * ioext.h (scm_fseek): deprecation expired - removed.
12860
12861 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12862
12863 * gh.h (gh_int2scmb): deprecation expired - removed.
12864
e3334972
NJ
128652001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12866
12867 * stacks.c (scm_make_stack): Fix typo in docstring.
12868
a0f979ac
RB
128692001-04-27 Rob Browning <rlb@cs.utexas.edu>
12870
12871 * error.c (scm_sysmissing): deprecation expired - removed.
12872
12873 * error.h (scm_sysmissing): deprecation expired - removed.
12874
12875 * gc.c
12876 (scm_init_gc): gc-thunk deprecation expired - removed.
12877 (scm_gc_vcell): deprecation expired - removed.
12878 (gc_async_thunk): scm_gc_vcell related code removed.
12879
12880 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12881
12882 * strings.h
12883 (SCM_NSTRINGP): deprecation expired - removed.
12884 (SCM_NRWSTRINGP): deprecation expired - removed.
12885
12886 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12887
12888 * chars.h
12889 (SCM_ICHRP): deprecation expired - removed.
12890 (SCM_ICHR): deprecation expired - removed.
12891 (SCM_MAKICHR): deprecation expired - removed.
12892
12893 * ports.h
12894 (SCM_INPORTP): deprecation expired - removed.
12895 (SCM_OUTPORTP): deprecation expired - removed.
12896
253081cf
MV
128972001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12898
12899 * modules.c (scm_module_type): New.
12900 (scm_post_boot_init_modules): Initialize from Scheme value.
12901 (the_module, scm_current_module, scm_init_modules): the_module is
12902 now a C only fluid.
12903 (scm_current_module): Export to Scheme.
12904 (scm_set_current_module): Do not call out to Scheme, do all the
12905 work in C. Export procedure to Scheme. Only accept modules, `#f'
12906 is no longer valid as the current module. Only set
12907 scm_top_level_lookup_closure_var and scm_system_transformer when
12908 they are not deprecated.
12909 (scm_module_transformer, scm_current_module_transformer): New.
12910
12911 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12912 scm_current_module_transformer, scm_module_transformer): New.
1c938eb8 12913
253081cf
MV
12914 * gh_data.c: Removed FIXME comment about gh_lookup returning
12915 SCM_UNDEFINED. That's the right thing to do.
12916
12917 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12918 into the conditionally compiled sections.
12919 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12920 scm_current_module_transformer instead of scm_system_transformer.
12921 * init.c (start_stack): Move initialization of
12922 scm_system_transformer to the deprecated section.
1c938eb8 12923
1f7f9ed4
NJ
129242001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12925
12926 * throw.c (scm_throw): Correct docstring.
12927
66c73b76
GH
129282001-04-22 Gary Houston <ghouston@arglist.com>
12929
eefae538
GH
12930 * socket.c: attempted to improve the docstrings slightly.
12931
66c73b76
GH
12932 * net_db.c: remove bogus "close" declaration.
12933 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12934 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12935 moved to socket.c.
12936 * net_db.h: declarations moved too.
12937
12938 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12939 long.
12940 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12941 (VALIDATE_INET6): new macro.
12942 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12943 inet-pton and inet-ntop.
12944 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12945 (scm_addr_vector): use ipv6_net_to_num.
1c938eb8 12946
7a7f7c53
DH
129472001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12948
12949 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12950 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12951
12952 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12953 when compiled in debug mode.
12954
12955 (scm_gc_sweep): Only call smob's free function if it is defined.
12956
12957 * print.c (scm_iprin1): No need to check for validity of smob
12958 type or existence of print function.
12959
12960 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12961 Resizing will not work well with preemptive threading.
12962
12963 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12964
12965 (scm_make_smob_type): Extracted initialization of smob
12966 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12967 of the critical section.
12968
12969 (scm_smob_prehistory): Initialize all smob descriptors. By
12970 default, don't assign a smob free function: Most smob types don't
12971 need one.
12972
12973 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12974
e1368a8d
GH
129752001-04-21 Gary Houston <ghouston@arglist.com>
12976
12977 * socket.c (FLIP_NET_HOST_128): new macro.
12978 (scm_fill_sockaddr): use new macro.
12979 (scm_addr_vector): completed IPv6 address support. added const
12980 to the address parameter.
12981
5a525b84
GH
129822001-04-20 Gary Houston <ghouston@arglist.com>
12983
12984 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12985 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12986 is defined.
12987 (scm_addr_vector): use a switch instead of multiple if statements.
12988 Add support for IPv6 (incomplete) .
e1368a8d 12989 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5a525b84 12990
1a551638
DH
129912001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12992
12993 * struct.c (scm_free_structs): Only pairs may be accessed with
12994 SCM_C[AD]R.
12995
c07b3fef
MD
129962001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12997
a9d861e3
MD
12998 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12999
c07b3fef
MD
13000 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13001 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
13002 parentheses in order to get the correct associativity.
13003
af7546eb
DH
130042001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13005
13006 * unif.c (scm_array_to_list): Added missing handling of arrays of
13007 bytes. Thanks to Masao Uebayashi for the bug report.
13008
4daecfee
DH
130092001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13010
13011 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
13012 consistently.
13013
726d810a
DH
130142001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13015
13016 * procs.h (SCM_CLOSURE_FORMALS): New macro.
13017
13018 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
13019 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
1c938eb8 13020 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
726d810a
DH
13021 SCM_CLOSURE_FORMALS.
13022
13023 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
13024 (scm_i_procedure_arity): Prefer stronger predicates like
13025 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13026
13027 * macros.c (macro_print): Extracted macro printing code from
13028 print.c and simplified it.
13029
13030 (scm_macro_type): Use SCM_MACRO_TYPE;
13031
13032 (scm_init_macros): Use macro_print for printing macros.
13033
13034 * print.c (scm_print_opts): Improved option documentation.
13035
13036 (scm_iprin1): Extracted printing of macros to macros.c.
13037 Simplified printing of ordinary closures.
13038
13039 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
13040 Martin Grabmueller for the bug report.
13041
e038c042
DH
130422001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13043
13044 This patch eliminates some further applications of SCM_C[AD]R to
13045 non pair cells.
13046
13047 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
13048 never been applied to real pairs.
13049
13050 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
13051
13052 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
13053
13054 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
13055 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
13056 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
13057
13058 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
13059 Added.
13060
13061 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
13062 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
13063
13064 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
13065 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
13066 SCM_SET{AND,OR}_CAR.
13067
3453619b
GH
130682001-04-17 Gary Houston <ghouston@arglist.com>
13069
13070 * some initial support for IPv6:
1c938eb8 13071
3453619b
GH
13072 * socket.c (scm_fill_sockaddr): improve the argument validation.
13073 don't allocate memory until all args are checked. instead of
13074 unconditional memset of soka, try setting sin_len to 0 if
13075 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
13076 (scm_socket, scm_connect): extend docstrings for IPv6.
13077 (scm_init_socket): intern AF_INET6 and PF_INET6.
13078
216eedfc
DH
130792001-04-17 Niibe Yutaka <gniibe@m17n.org>
13080
13081 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
13082 matches SCM_DEFER_INTS at the beginning of the function.
13083
13084 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
13085
13086 * gc.c (scm_igc): Unconditionally call
13087 SCM_CRITICAL_SECTION_START/END.
13088
13089 * fluids.c (next_fluid_num): Unconditionally call
13090 SCM_CRITICAL_SECTION_START/END.
13091 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
13092
13093 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
13094 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
13095 Removed.
13096
13097 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
13098 Defined as nothing for the case of !defined(USE_THREADS).
13099 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
13100 Removed.
13101 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
13102 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
13103 LINE.
13104 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
13105 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
13106 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
13107 SCM_CRITICAL_SECTION_START/END.
13108 (SCM_REALLOW_INTS: Bug fix. Don't call
13109 SCM_THREAD_SWITCHING_CODE.
13110 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
13111 SCM_THREAD_SWITCHING_CODE directly.
13112 (SCM_ENTER_A_SECTION): Unconditionally use
13113 SCM_CRITICAL_SECTION_START/END. (was:
13114 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
13115
131162001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13117
13118 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
13119 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
13120 allowed to explicitly set this macro via the CFLAGS variable
13121 during make.
13122
13123 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
13124 (SCM_THREAD_CRITICAL_SECTION_START,
13125 SCM_THREAD_CRITICAL_SECTION_END): Renamed
13126 SCM_THREAD_CRITICAL_SECTION_START/END to
13127 SCM_CRITICAL_SECTION_START/END.
13128
f22ed5a0
KN
131292001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
13130
13131 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
13132 instead of bzero.
1c938eb8 13133
f22ed5a0 13134 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
1c938eb8 13135 (MISSING_BZERO_DECL): Remove the declaration.
f22ed5a0
KN
13136
13137 Thanks to NIIBE Yutaka.
13138
508ded1c
MD
131392001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13140
a087ba81
MD
13141 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
13142 goops module should be registered in order to work for an
13143 application which uses libguile statically linked.)
508ded1c 13144
e4b265d8
DH
131452001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
13146
13147 * numbers.[ch] (scm_num2long, scm_num2long_long,
13148 scm_num2ulong_long, scm_num2ulong): Argument position is an
13149 unsigned integer.
13150
13151 * environments.c (eval_environment_folder,
13152 import_environment_folder), gh_data.c (gh_scm2longs,
13153 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
13154 for integers and pointers, respectively.
13155
13156 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
13157 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
13158 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
13159 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
13160
13161 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
13162 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
13163 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
13164 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
13165 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
13166 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
13167
89d04205
NJ
131682001-04-09 Neil Jerram <neil@ossau.uklinux.net>
13169
13170 * strings.c (scm_read_only_string_p): Update docstring to reflect
13171 current (non-)usage of "read only" strings.
40f83c3e
NJ
13172 (scm_make_shared_substring): Clarify docstring by changing
13173 "semantics" to "arguments".
89d04205 13174
4d66be54
MG
131752001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13176
13177 * hooks.c (scm_make_hook, scm_make_hook_with_name),
13178 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
13179 improvements.
13180
1e6808ea
MG
131812001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13182
13183 The following changes make the documentation more consistent.
1c938eb8 13184
1e6808ea
MG
13185 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
13186 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
13187 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
13188 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
13189 ... @end lisp.
13190
13191 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
13192 (scm_array_dimensions, scm_make_shared_array),
13193 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
13194 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
13195 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
13196 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
13197 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
13198 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
13199 macros.c (scm_makmmacro), list.c (scm_append), environments.c
13200 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
13201 @example ... @end example to @lisp ... @end lisp.
13202
13203 * weaks.c (scm_weak_vector): Corrected docstring.
13204
13205 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
13206 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
13207 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
13208 (scm_hashx_set_x, scm_hashx_get_handle),
13209 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
13210 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
13211 vectors.c (scm_vector_fill_x), strings.c
13212 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
13213 objprop.c (scm_set_object_properties_x):
13214 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
13215 strports.c (scm_call_with_input_string), ports.c
13216 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
13217 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
13218 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
13219 (scm_make_weak_vector,scm_weak_vector_p),
13220 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
13221 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
13222 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13223 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
13224 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
13225 Made parameter names match documentation by renaming parameters
13226 and/or fixing docstrings.
1c938eb8 13227
1e6808ea
MG
13228 * numbers.c (scm_ash): Corrected Texinfo markup.
13229
13230 * strop.c (scm_string_index, scm_string_rindex),
13231 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
13232
13233 * vports.c (scm_make_soft_port), unif.c
13234 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
13235 (scm_dimensions_to_uniform_array, scm_transpose_array),
13236 (scm_array_in_bounds_p, scm_uniform_vector_ref),
13237 (scm_bit_count, scm_bit_position, scm_bit_count_star),
13238 (scm_array_to_list, scm_list_to_uniform_array),
13239 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
13240 (scm_open_input_string, scm_open_output_string),
13241 (scm_get_output_string), strop.c (scm_string_copy),
13242 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
13243 (scm_get_internal_real_time, scm_times),
13244 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
13245 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
13246 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
13247 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
13248 simpos.c (scm_system), random.c (scm_random_uniform),
13249 (scm_random_normal, scm_random_exp), ramap.c
13250 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
13251 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
13252 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
13253 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
13254 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
13255 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
13256 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
13257 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
13258 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
13259 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
13260 (scm_logand, scm_logior, scm_logxor, scm_lognot),
13261 (scm_integer_expt, scm_bit_extract, scm_logcount),
13262 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
13263 net_db.c (scm_inet_netof, scm_lnaof), modules.c
13264 (scm_interaction_environment), macros.c (scm_makacro),
13265 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
13266 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
13267 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
13268 (scm_fluid_ref), filesys.c (scm_open_fdes),
13269 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
13270 Docstring correction: `Returns' -> `Return'
13271
1c938eb8
TTN
13272 * gc.c (scm_set_debug_cell_accesses_x):
13273 (s_scm_gc_set_debug_check_freelist_x):
1e6808ea
MG
13274 * fluids.c (scm_fluid_p): Added texinfo markup.
13275
13276 * error.c (scm_strerror): Made docstring more precise.
13277
13278 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
13279 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
13280 (scm_symbol_p, scm_symbol_to_string), strorder.c
13281 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
13282 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
13283 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
13284 (scm_string_ci_geq_p), strop.c (scm_string_copy),
13285 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
13286
9a6976cd
DH
132872001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
13288
13289 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
13290 mode, as suggested by Michael Livshin.
13291
463b2219
ML
132922001-03-31 Michael Livshin <mlivshin@bigfoot.com>
13293
13294 * backtrace.c (display_backtrace_body): since the `print_state'
13295 variable is not used (instead its data field is used directly as
13296 `pstate'), protect it from the hungry compiler optimizations.
13297 thanks to Bill Schottstaedt for the report.
13298
61045190
DH
132992001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13300
13301 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
13302 It is only defined and used if guile is compiled with
13303 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
13304 let cells with a free_cell type tag be visible outside of the
13305 garbage collector when in debug mode.
13306
13307 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
13308
13309 (scm_assert_cell_valid): Use a local static variable to avoid
13310 recursion.
13311
13312 (MARK): Only check for rogue cell pointers in debug mode. Use
13313 scm_cellp for this purpose and place all checks for rogue pointers
13314 into that function. Further, since due to conservative scanning
13315 we may encounter free cells during marking, don't use the standard
13316 cell type accessor macro to determine the cell type.
13317
13318 (scm_cellp): Check if the cell pointer actually points into a
13319 card header.
13320
13321 (scm_init_gc): Initalize scm_tc16_allocated.
13322
13323 * gc.h (GCH): Renamed to SCM_GC_H.
13324
13325 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
13326 might be unnecessary, but I feel better this way :-)
13327
13328 (SCM_GC_CELL_TYPE): New macro.
13329
13330 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
13331 in guile, and it is unlikely that they will be applied to real
13332 pairs anyway.
13333
13334 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
13335
13336 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
13337 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
13338
13339 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
13340 make sure that in debug mode no free cell will ever be visible
13341 outside of the garbage collector.
13342
85d6df6a
DH
133432001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13344
13345 * async.c (scm_asyncs_pending): Don't use != to compare SCM
13346 values.
13347
13348 * async.c (scm_system_async), variable.c (scm_make_variable,
13349 scm_make_undefined_variable): Use scm_cons to create a pair.
13350
13351 * debug.c (scm_reverse_lookup): Perform proper type checking.
13352 Remove suspicious use of SCM_SLOPPY_CONSP.
13353
13354 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
13355 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
13356 the corresponding optimization.
13357
13358 * eval.c (iqq): Use proper type check.
13359
13360 (scm_m_expand_body): Remove redundant type checks.
13361
13362 (promise_print): Don't access promise cells as pairs.
13363
13364 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
13365 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
13366 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
13367 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
13368 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
13369
13370 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
13371 (scm_iprin1): Use new macro predicate and accessors.
13372
13373 * eval.h (scm_tc16_macro): Removed declaration. It is declared
13374 in macros.h.
13375
13376 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
13377 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
13378 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
13379 SCM_VARIABLE_H. Even the macros that are used to inhibit
13380 including a header file twice should be in the SCM_ namespace.
13381
13382 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
13383 properties.c (scm_primitive_property_ref,
13384 scm_primitive_property_del_x): Prefer stronger predicates like
13385 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13386
13387 * gc.c (MARK): Use proper macros to access procedure-with-setter
13388 cell elements and closure cell elements.
13389
13390 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
13391 access free cells as pairs.
13392
13393 (scm_unprotect_object): scm_hashq_get_handle returns #f if
13394 no hashtab entry is found.
13395
13396 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
13397 SCM_CLR_PORT_OPEN_FLAG.
13398
13399 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
13400 use SCM_SET_C[AD]R for uninitialized cells.
13401
13402 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
13403 If the hashtable has no slots, return #f instead of '(). This
13404 unifies the return value with most assoc-functions.
13405
13406 (scm_hash_fn_ref): Use proper type check.
13407
13408 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
13409 Removed references to non-existing functions from documentation.
13410
13411 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
13412 access keyword cell elements.
13413
13414 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
13415 macros.
13416
13417 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
13418
13419 * print.c (scm_iprlist): Added comment. Improved loop
13420 conditions.
13421
13422 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
13423 pairs.
13424
13425 * smob.c (scm_markcdr): Don't access smob cells as pairs.
13426
13427 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
13428
13429 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
13430 cells as pairs.
13431
13432 * variable.c (variable_print, variable_equalp, scm_variable_ref,
13433 scm_variable_set_x): Use proper macros to access variable cell
13434 elements.
13435
13436 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
13437
13438 * variable.h (SCM_VARVCELL): Don't access variable cells as
13439 pairs.
13440
13441 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
13442 added FIXME comment, removed register specifier.
13443
1b27e91a
KN
134442001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
13445
13446 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
13447 * init.c (scm_init_guile_1): Don't init goopscore module.
13448
16c634ec
MV
134492001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13450
13451 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
13452
91344ceb
MG
134532001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13454
13455 * strop.c (scm_string_to_list): Fixed docstring markup.
13456 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
13457 (scm_string_downcase, scm_string_capitalize_x),
13458 (scm_string_capitalize): Rewrote and corrected docstrings.
13459 (scm_string_ci_to_symbol): Made docstring more explicit.
13460
07576812
MV
134612001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13462
13463 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
13464 eval.c can use it.
13465 (scm_call_with_values): Removed.
13466 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
13467 so that it can be exported.
13468 (scm_call_with_values): Removed.
1c938eb8 13469
07576812
MV
13470 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
13471 * eval.c: Include "libguile/values.h"
13472 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
13473 New.
13474 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
13475 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
13476 New delcarations to support above change.
13477
13478 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
13479 errors with last change.
1c938eb8 13480
07576812
MV
134812001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
13482
13483 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
13484 scm_i_eval): Moved the application of the system transformer from
13485 scm_i_eval to scm_primitive_eval.
13486
a17bb5fd
NJ
134872001-03-23 Neil Jerram <neil@ossau.uklinux.net>
13488
a6be01a4
NJ
13489 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
13490
a17bb5fd
NJ
13491 * strop.c (scm_string_index): Fix docstring line break
13492 regression.
13493
13494 * list.c (scm_cons_star): Fix docstring typo.
13495
be54b15d
DH
134962001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13497
13498 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
13499 (big2str), ports.c (scm_drain_input), read.c (scm_read,
13500 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
13501 scm_make_string, scm_string_append), strports.c (st_resize_port,
13502 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
13503 scm_makstr with calls to scm_allocate_string.
13504
13505 * strings.[ch] (scm_allocate_string): New function.
13506
13507 * strings.[ch] (scm_makstr): Deprecated.
13508
789ecc05
GH
135092001-03-18 Gary Houston <ghouston@arglist.com>
13510
6d163216
GH
13511 * posix.c (scm_tmpnam): check that return value from tmpnam is not
13512 NULL. rewrote the docstring.
13513 (scm_mkstemp): new procedure implementing "mkstemp!".
13514 * posix.h: declare scm_mkstemp.
13515
789ecc05
GH
13516 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
13517 normally it would be found in netdb.h.
13518
c6c79933
GH
135192001-03-17 Gary Houston <ghouston@arglist.com>
13520
e9e225e5
GH
13521 * sort.c (scm_sort): move sortvec variable to avoid a compiler
13522 warning when HAVE_ARRAYS is not defined. move len too.
13523
13524 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
13525 (EXTRA_DOT_X_FILES): let configure set the value.
13526 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
13527
c6c79933
GH
13528 * gc.c (scm_must_malloc): changed the comment explaining when
13529 scm_must variants of malloc/free etc., should be used, based on
13530 explanation from Dirk Herrmann.
13531 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
13532 string with procedure name. use scm_must_malloc instead of malloc.
13533 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
13534 of malloc/free.
13535 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
13536 scm_ungetc): use scm_must variants of malloc/realloc/free.
13537 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
13538
b3fcac34
DH
135392001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13540
13541 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13542 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
13543 scm_wrong_type_arg instead.
13544
13545 (SCM_WNA): Deprecated.
13546
13547 * error.[ch] (scm_wta): Deprecated.
13548
13549 * numbers.c (s_i_log): Minor comment fix.
13550
13551 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
13552 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
13553 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
13554 wrong-num-args or misc errors.
13555
13556 * unif.c (scm_make_shared_array, scm_transpose_array,
13557 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
13558 Validate the rest argument (note: this is only done when guile is
13559 built with SCM_DEBUG_REST_ARGUMENT=1)
13560
13561 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
13562 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
13563
13564 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
13565 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
13566
68baa7e7
DH
135672001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13568
13569 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
13570 instead of scm_wrong_num_args.
13571
13572 * coop-threads.c: Don't include libguile/strings.h. (Was only
13573 needed for former implementation of SCM_WRONG_NUM_ARGS.)
13574
13575 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
13576 wrong-num-args errors.
13577
9f40cd87
DH
135782001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13579
13580 * error.[ch] (scm_error_num_args_subr): New function.
13581
5352393c
MG
135822001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13583
13584 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
13585 (scm_length, scm_append, scm_reverse, scm_list_ref),
13586 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
13587 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
13588 (scm_delete1_x), gc.c (scm_map_free_list),
13589 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
13590 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
13591 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
13592 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
13593 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
13594 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
13595 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
13596
13597 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
13598 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13599 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
13600 symbols.c (scm_symbol_interned_p), numbers.c
13601 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
13602 markup.
13603
a9205f07
KN
136042001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
13605
13606 * snarf.h (SCM_CONST_LONG): Deprecated.
13607 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
13608
6d583887
MV
136092001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13610
13611 * numbers.c (scm_num2ulong): Check that a bignum is positive
13612 before looking at the magnitude. Correctly check for overflow
13613 during conversion.
13614 (scm_num2long_long): Likewise.
13615 (scm_num2ulong_long): New.
13616 (ULONG_LONG_MAX): Define if not already defined.
13617 * numbers.h: (scm_num2ulong_long): New prototype.
1c938eb8 13618
e87a03fc
MG
136192001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13620
13621 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
13622
13623 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
13624 (SCM_OPOUTSTRPORTP): New predicate macros.
13625 (scm_open_input_string, scm_open_output_string),
13626 (scm_get_output_string): New prototypes.
1c938eb8 13627
e87a03fc
MG
13628 * strports.c (scm_open_input_string, scm_open_output_string),
13629 (scm_get_output_string): New procedures (SRFI-6 compliant).
13630 Made scm_tc16_strport non-static.
13631
160bb34a
DH
136322001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13633
13634 * macros.h (SCM_ASSYNT): Removed unused object argument from
13635 signature.
13636
13637 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
13638 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
13639 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
13640 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
13641 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
13642 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
13643 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
13644 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13645 scm_m_atdispatch): Removed unused object argument from call to
13646 SCM_ASSYNT.
13647
80dee77b
DH
136482001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13649
13650 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
13651 const int* to reflect that the input array of integers remains
13652 unchanged. Thanks to Brett Viren for the hint.
13653
d3dd80ab
MG
136542001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13655
13656 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
13657 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
13658 in various places.
13659 (gh_scm2newstr, gh_symbol2newstr): Change call to
13660 scm_must_malloc() to malloc(), because user-free()able memory is
13661 allocated.
13662
13663 * gc.c: Added declaration of `scm_debug_check_freelist'.
13664
26a3038d
MG
136652001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13666
13667 * ports.c (scm_port_mode): Changed `mode' array size to 4.
13668
1f3908c4
KN
136692001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
13670
13671 * strports.c (scm_object_to_string): New procedure.
13672 (scm_strprint_obj): Deprecated.
13673 * strports.h: Reflect the changes.
13674
e11208ca
DH
136752001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
13676
13677 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
13678
13679 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13680 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
13681 SCM_ASSYNT to check for correct argument types. Either use some
13682 SCM_VALIDATE_* macro or an explicit test.
13683
13684 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
13685 misc-errors.
13686
13687 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
13688 instead of calling scm_wta.
13689
67e8151b
MG
136902001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13691
13692 * load.c (scm_primitive_load, scm_primitive_load_path),
13693 (scm_sys_search_load_path): Corrected docstrings (file ->
13694 filename).
13695
13696 * eval.c (scm_force): Added texinfo markup to docstring.
13697 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13698
13699 * debug-malloc.c: Reinserted #include <stdio.h>.
13700
e0c08f17
KN
137012001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13702
e39c3de4
KN
13703 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13704
e0c08f17
KN
13705 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13706 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13707 Use SCM_LISTn instead of scm_listify.
13708
e6e2e95a
MD
137092001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13710
13711 * _scm.h: Removed #include <errno.h>.
13712
13713 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13714 errno variable (can be a macro on some systems, for example when
13715 using linux libc with threads).
13716
13717 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13718 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13719 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13720 #include <errno.h> in these 20 out of 100 files.
1c938eb8 13721
97d0e20b
GH
137222001-03-10 Gary Houston <ghouston@arglist.com>
13723
13724 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13725 not already defined.
13726
e75341b3
MD
137272001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13728
13729 * coop.c: Inserted #include <stdio.h>.
13730
13731 * iselect.c: Reinserted #include <stdio.h>.
13732
74355186
MV
137332001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13734
13735 * posix.c: Replaced `#define' of __USE_XOPEN right before
13736 including unistd.h with a define of _GNU_SOURCE at the very top of
13737 the file.
13738
783e7774
KN
137392001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13740
13741 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13742 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13743 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13744 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13745 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13746 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13747 print.c, procprop.c, procs.c, properties.c, ramap.c,
13748 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13749 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13750 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
1c938eb8 13751 Remove #include <stdio.h>
783e7774
KN
13752 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13753
13754 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13755
9a677c37
MG
137562001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13757
13758 * posix.c (scm_gethostname): Set initial name length to 256 for
13759 Solaris.
13760
94e6d793
MG
137612001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13762
13763 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13764 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13765 (scm_sethostname, scm_gethostname): New prototypes.
13766
13767 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13768 <sys/file.h>, if present.
13769 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13770 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13771 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13772 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13773 (scm_sethostname, scm_gethostname): New procedures.
13774
650a1cf9
NJ
137752001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13776
13777 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13778 not optional (ii) "recommend" spelling correction.
13779
9636b49c
MD
137802001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13781
5e4a4d09
MD
13782 * ramap.c (racp): Removed optimization which caused array copying
13783 to fail if the two arrays shared storage. Re-inserted the IVDEP
13784 macros removed in the change of 2000-03-09. (Don't really have a
13785 complete grasp of what they are for, but they seem to be necessary
13786 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13787
9636b49c
MD
13788 * hash.c (scm_string_hash): Don't downcase characters.
13789
04a4d666
MD
137902001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13791
9636b49c 13792 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
04a4d666
MD
13793 size from 277 --> 1009.
13794
13795 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13796 function.
13797
13798 * coop-threads.c: Fixed change of 2001-03-06.
1c938eb8 13799
04a4d666
MD
13800 * validate.h: Code formatting.
13801
66418d34
KN
138022001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13803
13804 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13805 (*.doc): Add dependency on guile-snarf.awk.in.
13806
13807 * guile-snarf.awk.in: Neglect spaces at the end of
13808 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13809 middle of docstrings. (To avoid the problem with gcc-2.96.)
13810
2ade72d7
DH
138112001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13812
13813 * coop-threads.c (scm_call_with_new_thread), load.c
13814 (scm_primitive_load, scm_sys_search_load_path), random.c
13815 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13816 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13817 (potentially) issue a scm-misc-error or wrong-num-args error
13818 message.
13819
13820 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13821 about the expected type with the wrong-type-arg error message.
13822
13823 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13824 a C level bug that can't be fixed from scheme anyway.
13825
586d7da2
MD
138262001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13827
13828 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13829 Duplicate bindings are OK in a let* since a let* is semantically
13830 equivalent to a nested set of let:s.
13831
1dd05fd8
MG
138322001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13833
13834 * print.c (scm_print_options): Fixed texinfo in docstring.
13835
13836 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13837 the underlying functions getservent, getprotoent or getnetent
13838 return NULL instead of signalling an error.
13839
439006bf
GH
138402001-03-04 Gary Houston <ghouston@arglist.com>
13841
13842 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13843 taking an unexpectedly large filename for an AF_UNIX socket from
13844 bind/connect/sendto (thanks to Martin Grabmueller).
1c938eb8 13845
439006bf
GH
13846 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13847 former and adjusted the latter.
13848 (scm_socket, scm_socketpair): cosmetic changes.
13849 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13850 size_t as socklen_t substitute. don't restrict args/return values
13851 to INUM: allow full range of int or size_t.
13852 (scm_fill_sockaddr): check arguments before allocating memory, to
13853 avoid leakage. use malloc, not scm_must_malloc.
13854 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13855 substitute. free the sockaddr structure before throwing an error.
13856 (scm_init_add_buffer): procedure removed, together with its static
13857 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13858 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13859 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13860 scm_sendto): use a local buffer instead of scm_addr_buffer.
13861 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13862 not size_t.
13863 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13864 call to detect whether recvfrom could be bothered to set the address.
13865 (scm_init_socket): don't call scm_init_addr_buffer.
13866
276dd677
DH
138672001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13868
13869 * debug.c (scm_procedure_source, scm_procedure_environment),
13870 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13871 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13872 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13873 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13874 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13875 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13876 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13877 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13878 scm_array_to_list, scm_array_prototype), validate.h
13879 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13880 scm_misc_error or scm_wrong_type_arg instead.
13881
13882 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13883
5e03762c
MD
138842001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13885
13886 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13887 (scm_sys_tag_body): Added.
13888
db4b4ca6
DH
138892001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13890
13891 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13892 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13893 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13894 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13895 options.c (scm_options), ports.c (scm_remove_from_port_table),
13896 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13897 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13898 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13899 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13900 instead.
13901
87e7741d
MD
139022001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13903
13904 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13905
d19b0aac
MV
139062001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13907
13908 * eval.c (scm_s_duplicate_bindings): New error message.
13909 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13910
2fd945df
MV
139112001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13912
13913 * eval.h (SCM_EVALIM2): New macro. Use it when a
13914 immediate, literal constant should be evaluated.
13915 * eval.c (scm_s_duplicate_formals): New error message string.
13916 (scm_c_improper_memq): New function.
13917 (scm_m_lambda): Check for duplicate arguments.
13918 (scm_ceval, scm_deval): When executing a body: only cons a new
13919 toplevel environment frame when it is different from the
13920 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13921 check for empty combinations; use SCM_EVALIM2 for the same reason
13922 in the non-toplevel loop.
13923 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13924 New labels with the meaning of their non-"nontoplevel" partners,
13925 but they are used when it is known that the body is not evaluated at
13926 top-level.
13927 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13928 reporting for empty combinations.
13929
9e6fc585
KN
139302001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13931
13932 * Remove dump facilities.
13933 * dump.c, dump.h: Removed.
13934 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13935 * init.c: Remove #include "libguile/dump.h".
13936 (scm_init_guile_1): Remove scm_init_dump.
13937 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13938 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13939 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13940 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13941
13942 * keywords.c: Remove #include "libguile/dump.h".
13943 (keyword_dump, keyword_undump): Removed.
13944 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13945
eae54bf0
MG
139462001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13947
13948 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13949 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13950 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13951 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13952 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13953 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13954 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13955 to @code{} as the texinfo manual recommends, converted the
13956 examples to use a @lisp{}-environment.
13957
13958 * strports.c (scm_eval_string): Cleaned up the docstring.
13959
13960 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13961 markup.
13962
13963 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13964 (scm_number_to_string, scm_string_to_number, scm_number_p)
13965 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13966 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13967 (scm_ash): Added texinfo markup and removed obsolete @refill.
13968 (scm_gr_p): Corrected comment.
13969 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13970 docstring) comments.
13971 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13972 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13973 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13974 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13975 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13976 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13977 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13978 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13979
23deee81
DH
139802001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13981
13982 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13983 (Obviously nobody compiles with SCM_RECKLESS defined...)
13984
13985 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13986
6fe692e9
MD
139872001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13988
13989 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13990
13991 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13992
27c37006
NJ
139932001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13994
13995 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13996 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13997 since use of `z' suggests that the arguments may be complex.
13998
13999 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
14000 typos.
14001
2069af38
NJ
140022001-02-23 Neil Jerram <neil@ossau.uklinux.net>
14003
14004 * dump.c (scm_binary_write, scm_binary_read), eval.c
14005 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
14006 scm_guardian_greedy_p, scm_make_guardian), fports.c
14007 (scm_file_port_p): Minor docstring fixes.
14008
b42ff180
MV
140092001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
14010
2069af38 14011 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
97ea55f8
MV
14012
14013 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
14014 scm_i_eval.
14015 (make_class_from_template): Do not bother to set the current
14016 module around the call to DEFVAR, scm_eval takes care of that.
14017 (scm_init_goops): Make scm_module_goops and
14018 scm_goops_lookup_closure permanent objects.
1c938eb8 14019
97ea55f8
MV
14020 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
14021 top level, create a fresh top-level environment for each
14022 expression instead of mutating the exisint frame. This is
14023 important when that frame is closed over.
14024
b42ff180
MV
14025 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
14026 SCM_DIGSPERLONG instead of DIGSPERLONG.
14027
09f2ab1e
MV
140282001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
14029
14030 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
14031 before applying arrow procedure in `cond' and before applying
14032 receiver procedure in call-with-current-continuation.
14033 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
14034 macro. The argument is expanded more than one time.
14035
14036 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
14037 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
14038
140392001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
14040
14041 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
14042 notice and license.
14043
7090240c
MG
140442001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14045
14046 * variable.c (scm_make_variable, scm_make_undefined_variable)
14047 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
14048 (scm_variable_bound_p), values.c (scm_values)
14049 (scm_call_with_values), unif.c (scm_bit_count)
14050 (scm_bit_set_star_x), symbols.c (scm_gentemp)
14051 (scm_gensym), strings.c (scm_string_p, scm_make_string)
14052 (scm_read_only_string_p, scm_string_length, scm_string_ref)
14053 (scm_string_set_x, scm_substring, scm_string_append), stime.c
14054 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
14055 (scm_copy_random_state, scm_random), print.c (scm_newline)
14056 (scm_write_char, scm_simple_format), debug-malloc.c
14057 (scm_malloc_stats), environments.c (scm_environment_p)
14058 (scm_environment_bound_p, scm_environment_ref)
14059 (scm_environment_fold, scm_environment_define)
14060 (scm_environment_undefine, scm_environment_set_x)
14061 (scm_environment_cell, scm_environment_observe)
14062 (scm_environment_observe_weak, scm_environment_unobserve)
14063 (scm_make_eval_environment, scm_eval_environment_p)
14064 (scm_eval_environment_set_local_x, scm_eval_environment_local)
14065 (scm_eval_environment_imported)
14066 (scm_eval_environment_set_imported_x, scm_make_import_environment)
14067 (scm_import_environment_p, scm_import_environment_imports)
14068 (scm_import_environment_set_imports_x, scm_make_export_environment)
14069 (scm_export_environment_p, scm_export_environment_private)
14070 (scm_export_environment_set_private_x)
14071 (scm_export_environment_signature)
14072 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
14073 Added texinfo markup.
14074
14075 * ports.c (scm_drain_input): Lowercased argument to @var.
14076 (scm_current_input_port, scm_current_output_port): Filled in
14077 missing explanation.
14078 (scm_current_load_port, scm_set_current_output_port)
14079 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
14080 Added texinfo markup.
14081
14082 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
14083 (scm_release_arbiter): Added texinfo markup to docstrings.
14084 Changed `Returns' to `Return'.
14085 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
14086
25703850
NJ
140872001-02-16 Neil Jerram <neil@ossau.uklinux.net>
14088
14089 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
14090 by doubling them to `@@'.
14091
73c0fdce
MG
140922001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14093
14094 * numbers.c (scm_lognot), random.c (scm_random,
14095 scm_random_normal, scm_random_solid_sphere_x,
14096 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
14097 scm_random_exp), dynwind.c
14098 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
1c938eb8 14099
73c0fdce
MG
14100 * goops.c (scm_sys_initialize_object, scm_instance_p,
14101 scm_class_name, scm_class_precedence_list, scm_class_slots,
14102 scm_class_environment, scm_generic_function_name,
14103 scm_generic_function_methods, scm_method_generic_function,
14104 scm_method_specializers, scm_method_procedure, scm_make_unbound,
14105 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
14106 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
14107 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
14108 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
14109 scm_class_direct_supers, scm_class_direct_slots,
14110 scm_class_direct_subclasses, scm_class_direct_methods,
14111 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
14112 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
14113 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
14114 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
14115 scm_memoized_environment, scm_procedure_name,
14116 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
14117 objects.c
14118 (scm_class_of, scm_entity_p, scm_operator_p,
14119 scm_set_object_procedure_x, scm_object_procedure,
14120 scm_make_class_object), hooks.c (scm_make_hook_with_name,
14121 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
14122 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
14123 scm_hook_to_list), lang.c
14124 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
14125 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
14126 (scm_print_options, scm_port_with_print_state,
14127 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
14128 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
14129 scm_make_procedure_with_setter, scm_procedure), throw.c
14130 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
14131 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
14132 scm_stack_ref, scm_stack_length, scm_frame_p,
14133 scm_last_stack_frame, scm_frame_number, scm_frame_source,
14134 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
14135 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
14136 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
14137 (scm_dirname, scm_basename), dynwind.c
14138 (scm_wind_chain), read.c (scm_read_options, scm_read,
14139 scm_read_hash_extend), gc.c
14140 (scm_unhash_name), eval.c (scm_eval_options_interface,
14141 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
14142 (scm_display_error, scm_set_print_params_x,
14143 scm_display_application, scm_display_backtrace, scm_backtrace),
14144 async.c (scm_async, scm_system_async, scm_async_mark,
14145 scm_system_async_mark, scm_run_asyncs, scm_noop,
14146 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
14147 scm_mask_signals): Added docstrings.
14148
e228a203
KN
141492001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
14150
14151 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
14152 address of car/cdr. (Thanks to Dirk Herrmann)
14153 Use scm_sizet to obtain the length of strings.
14154 (Thanks to Matthias Koeppe)
14155
1552a59d
MV
141562001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
14157
14158 * symbols.c (scm_mem2symbol): Put a empty statement after the
14159 next_symbol label. This is mandated by ANSI, appearantly.
14160
3178f751
MV
141612001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14162
14163 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
14164 sense to compile for a specific kernel version. Do not include
14165 <asm/signal.h> while defining __KERNEL__. This hack should no
14166 longer be needed and caused problems.
14167
7af4defe
MV
141682001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
14169
14170 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
14171 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
14172 can not deal with immediates.
14173
5d6bb349
KN
141742001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
14175
14176 * list.c (scm_list_copy): Validate the first argument.
14177
ec9709f0
MV
141782001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
14179
14180 Fix evaluator so that top-level expressions are correctly
14181 evaluated with respect to the module system.
1c938eb8 14182
ec9709f0
MV
14183 * modules.h. modules.c (scm_current_module_lookup_closure): New
14184 function.
14185
14186 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
14187 prototypes.
14188 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
14189 names to better reflect their meaning.
14190
14191 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
14192 evaluated at top-level and synronize lookup closure before
14193 executing every subform.
14194 (scm_primitve_eval_x, scm_primitive_eval): New functions.
14195 (scm_eval_x, scm_eval): Reimplement in terms of
14196 scm_primitive_eval_x and scm_primitive_eval, respectively.
1c938eb8 14197
ec9709f0
MV
141982001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
14199
14200 * macros.c (scm_macro_name, scm_macro_transformer): Use
14201 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
14202 Thanks!
14203
42417394
KN
142042001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
14205
14206 * dump.c (scm_store_bytes): Store data size before data.
14207 (scm_restore_bytes): Restore data size. Takes a pointer to size.
14208 * dump.h (scm_restore_bytes): Updated.
14209
bf942687
KN
142102001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
14211
14212 * dump.c: Use double cells for update schedule.
14213
1be4270a
KN
142142001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
14215
14216 * ports.c (scm_unread_char): Take an optional argument.
14217
548728ea
MV
142182001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14219
14220 * modules.h (scm_selected_module, scm_current_module): Renamed
14221 scm_selected_module to scm_current_module to synchronize Scheme
14222 and C names.
14223 (scm_select_module, scm_set_current_module): Likewise. Changed
14224 all uses.
1c938eb8 14225
548728ea
MV
14226 * ports.c (scm_port_for_each): Make a snapshot of the port table
14227 before iterating over it. The table might change while the user
14228 code is running. With the snapshot, the user can depend on the
c5408bc3 14229 fact that each port that existed at the start of the iteration is
548728ea
MV
14230 encountered exactly once. (ice-9 popen) depends on this.
14231
cb0d8be2
DH
142322001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14233
14234 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
14235
14236 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
14237 range checking for the size parameter. Thanks to Martin
14238 Grabmueller for the hint.
14239
14240 (scm_makstr): Reordered string initialization to make interrupt
14241 deferring unnecessary.
14242
14243 * vectors.c (scm_make_vector): Fixed range checking.
14244
e382fdbe
DH
142452001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14246
14247 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
14248
14249 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
14250 checking of the size parameter for type correctness and valid
14251 range. Thanks to Rob Browning for reporting the problem. Instead
14252 of deferring interrupts, scm_remember_upto_here_1 is used.
14253
bf8f0922
KN
142542001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14255
14256 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
14257 (scm_dump_cell_update): Removed.
14258 (scm_dump_update): Renamed from scm_dump_object_update.
14259 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
14260 a pointer instead of returning a value.
14261 * keywords.c (keyword_undump): Updated.
14262
914cceec
KN
142632001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14264
14265 * dump.c, dump.h: Modified a lot.
5f17c66f 14266 (SCM_DUMP_COOKIE): Version 0.1
914cceec
KN
14267 (scm_dump_mark): Removed.
14268 (scm_restore_cell_object, scm_store_cell_object): New functions.
14269
14270 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
14271 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
14272 New slots: dump, undump.
14273 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
14274 Updated.
14275
14276 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
14277 (keyword_undump): Renamed from keyword_alloc.
14278 (scm_init_keywords): Set keyword_dump and keyword_undump.
14279
ecf470a2
ML
142802001-02-03 Michael Livshin <mlivshin@bigfoot.com>
14281
14282 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
14283 the deprecated SCM_DOUBLE_CELLP.
14284
14285 * tags.h (SCM_DOUBLE_CELLP): deprecated.
14286
03416a99
KN
142872001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
14288
14289 * dump.c, dump.h: New files.
14290 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
14291 * init.c: #include "libguile/dump.h".
14292 (scm_init_guile_1): Call scm_init_dump.
14293 * smob.h (scm_smob_descriptor): New slots: dump_mark,
14294 dump_dealloc, dump_store, undump_alloc, undump_restore,
14295 undump_init.
14296 * smob.c (scm_make_smob_type): Init the new slots.
14297 (scm_set_smob_dump, scm_set_smob_undump): New functions.
14298 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
14299
14300 * keywords.c: #include "libguile/dump.h".
14301 (keyword_dealloc, keyword_alloc): New functions.
14302 (scm_init_keywords): Set smob_dump and smob_undump.
14303
00ffa0e7
KN
143042001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
14305
14306 * vectors.c (scm_c_make_vector): New function.
14307 * vectors.h (scm_c_make_vector): Declared.
14308 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
14309 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
14310 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
14311 (scm_make_method_cache, scm_i_vector2list,
14312 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
14313 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
14314 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
14315 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
14316 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
14317 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
14318 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
14319 (scm_vector, scm_make_vector): Use scm_c_make_vector.
14320
14321 * hashtab.c (scm_c_make_hash_table): New function.
14322 * hashtab.h (scm_c_make_hash_table): Declared.
14323 * environments.c (scm_make_leaf_environment,
14324 scm_make_eval_environment), gc.c (scm_init_storage),
14325 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
14326 Use scm_c_make_hash_table.
14327
b8446ce8
MD
143282001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14329
14330 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
14331
e3239868
DH
143322001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14333
14334 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
14335 end of docstring.
14336
14337 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
14338 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
14339 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
14340 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
14341 srcprop.c (scm_source_properties, scm_set_source_properties_x,
14342 scm_source_property, scm_set_source_property_x), sort.c
14343 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
14344 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
14345 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
14346 docstrings.
14347
41ee56dd
MD
143482001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14349
14350 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
14351 really get that arg.
14352
b6311c08
KN
143532001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
14354
14355 * goops.c (s_scm_get_keyword): Bug fix.
14356
a49af0c0
DH
143572001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14358
14359 The following patch was sent by Martin Grabmueller. It makes sure
14360 that in case of parameter errors the correct function name is
14361 shown, and that parameter types are only checked once.
14362
14363 * strop.c (string_copy, string_upcase_x, string_downcase_x,
14364 string_capitalize_x): New functions. Each one performs the core
14365 functionality of the corresponding scm_* function.
14366
14367 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
14368 scm_string_downcase_x, scm_string_downcase,
14369 scm_string_capitalize_x, scm_string_capitalize): Reduced to
14370 parameter checking wrappers of the above functions.
14371
13070bd3
DH
143722001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14373
14374 * continuations.c, dynl.c, keywords.c, load.c: Include
14375 strings.h. Thanks to Bill Schottstaedt for the bug report.
14376
2f2b390c
DH
143772001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14378
14379 * backtrace.c (display_header): Make sure that line and column
14380 information is shown independent of whether the port the code was
14381 read from had an associated filename. Thanks to Martin
14382 Grabmueller for providing this patch.
14383
efa40607
DH
143842001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14385
14386 * fports.[ch] (scm_file_port_p): New primitive.
14387
a98bddfd
DH
143882001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14389
14390 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
14391 These are now defined in fports.c, strports.c and vports.c.
14392
14393 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
14394 vports.c (scm_tc16_sfport): Made variables (were macros defined in
14395 tags.h).
14396
14397 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
14398 (scm_make_sfptob): Made static. These return a type code now.
14399
14400 fports.c (scm_init_fports), strports.c (scm_init_strports),
14401 vports.c (scm_init_vports): Create the corresponding port types.
14402
14403 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
14404 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
14405
14406 * init.c (scm_init_guile_1): Make sure strports are initialized
14407 before gdbint.
14408
14409 * ports.[ch] (scm_make_port_type): Changed the return type to
14410 scm_bits_t.
14411
14412 * ports.c (scm_ports_prehistory): Don't create any port types
14413 here.
14414
14415 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
14416 against scm_tc16_fport directly.
14417
0419a528
DH
144182001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14419
14420 * srcprop.c (scm_set_source_property_x): Fix to handle
14421 (set-source-property! <obj> 'copy <datum>) correctly.
14422
6d36532c
GH
144232001-01-24 Gary Houston <ghouston@arglist.com>
14424
14425 * filesys.c (scm_link): docstring fix.
14426 * fports.h (scm_setfileno): obsolete declaration removed.
14427 * posix.c: bogus popen declaration removed.
14428
14429 * rdelim.c: new file, split from ioext.c.
14430 * rdelim.h: new file, split from ioext.h
14431 * Makefile.am: add rdelim.c and related files.
14432 * init.c: call scm_init_rdelim. include rdelim.h.
14433
3ba5a6c2
DH
144342001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14435
14436 This patch was sent by Martin Grabmueller and makes sure that
14437 parameter errors are reported correctly by the lexicographic
14438 ordering predicates.
14439
14440 * strorder.c (string_less_p, string_ci_less_p): New functions.
14441
14442 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
14443 functionality into string_less_p, string_ci_less_p respectively.
14444 The remaining code is just a wrapper to do the parameter
14445 checking.
14446
14447 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
14448 parameters and call string_less_p instead of scm_string_less_p.
14449
14450 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
14451 Check the parameters and call string_less_ci_p instead of
14452 scm_string_ci_less_p.
14453
e40a4095
DH
144542001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14455
ed6a2db9
DH
14456 This patch modifies scm_display_error to perform parameter
14457 checking. Thanks to Neil Jerram for the bug report.
14458
e40a4095
DH
14459 * backtrace.[ch] (scm_i_display_error): New function.
14460
14461 * backtrace.c (scm_display_error): Added parameter check and
14462 extracted the core functionality into function
14463 scm_i_display_error.
14464
14465 * throw.c (handler_message): Call scm_i_display_error to display
14466 the error message.
14467
f1e06a96
MD
144682001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14469
14470 * eval.c (SCM_APPLY): Added # args check for application of
14471 procedures with arity 3. (Thanks to Anders Holst.)
14472
30ea841d
DH
144732001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14474
14475 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
14476
14477 (SCM_OPDIRP): Deprecated.
14478
14479 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
14480 SCM_OPN.
14481
14482 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
14483 Instead, give an explicit error message in case the directory is
14484 closed.
14485
14486 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
14487 instead of SCM_OPENP and SCM_CLOSEDP.
14488
14489 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
14490
312ae976
DH
144912001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
14492
14493 * eval.c (inner_eval, scm_eval): Move all real functionality into
14494 inner_eval. Avoid to copy the expression twice by inlining some
14495 code from scm_i_eval.
14496
4567ed78
DH
144972001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
14498
14499 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
14500 now has to be the last clause, as required by R5RS. Thanks to
14501 Martin Grabmueller for the patch.
14502
10288a09
GH
145032001-01-18 Gary Houston <ghouston@arglist.com>
14504
14505 * ioext.c: further simplify scm_read_string_x_partial by defining
14506 a macro SCM_EBLOCK.
14507
8f379a8f
DH
145082001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14509
14510 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
14511
5c75b29f
DH
145122001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14513
14514 * __scm.h: Added comment about architecture and compiler
14515 properties that are required by guile.
14516
14517 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14518 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
14519
14520 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
14521
14522 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
14523
14524 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14525 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
14526
ac0c002c
DH
145272001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
14528
14529 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
14530 to the names in limits.h.
14531
14532 * numbers.c (abs_most_negative_fixnum): Added.
14533
14534 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
14535 fixnum-min) special case.
14536
14537 (scm_big_and): Fix for negative first parameter.
14538
14539 (scm_bit_extract): Fix for fixnum paramters.
14540 Thanks to Rob Browning for the bug report.
14541
14542 (scm_init_numbers): Initialize abs_most_negative_fixnum.
14543
debe0dc2
DH
145442001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
14545
14546 * symbols.c (scm_symbol_bound_p): Fixed comment.
14547 Thanks to Chris Cramer.
14548
8a39e3fc
DH
145492001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
14550
14551 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
14552 Thanks to Bill Schottstaedt.
14553
322ec19d
ML
145542001-01-11 Michael Livshin <mlivshin@bigfoot.com>
14555
9a5fa6e9 14556 from Matthias Köppe:
1c938eb8 14557
322ec19d
ML
14558 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
14559 casts its result, so doesn't yield an lvalue per ANSI C.
14560
14561 * goops.c (s_scm_sys_set_object_setter_x): use
14562 SCM_SET_ENTITY_SETTER.
14563 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
14564
14565 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
14566 its result, so doesn't yield an lvalue per ANSI C.
14567 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
14568 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
14569 SCM_GC_SET_CARD_FLAGS.
14570 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
14571
14572 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
14573
60d02d09
GH
145742001-01-08 Gary Houston <ghouston@arglist.com>
14575
14576 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
14577 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
14578 socket.c (scm_recvfrom): use the new macro, plus minor docstring
14579 changes.
14580 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
14581 for fdes. if current input port is used, check that it's a file
14582 port.
14583
c2da2648
GH
145842001-01-06 Gary Houston <ghouston@arglist.com>
14585
14586 * ioext.c (scm_read_string_x_partial): new procedure, implements
14587 read-string!/partial.
14588 * ports.c (scm_take_from_input_buffers): new procedure used by
14589 scm_read_string_x_partial.
14590 (scm_drain_input): use scm_take_from_input_buffers.
14591
4651d663
MV
145922001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
14593
14594 * validate.h (SCM_VALIDATE_NUMBER): New.
14595
c0a5d888
ML
145962001-01-03 Michael Livshin <mlivshin@bigfoot.com>
14597
14598 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
14599 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
14600 SET_DESTROYED): new defines/macros.
14601 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
14602 (add_to_live_list): takes a `guardian_t *' now, not SCM.
14603 (guardian_print): print more info.
14604 (guardian_apply): check if the guardian is destroyed, and throw an
14605 error if so. take one more optional argument `throw_p'.
14606 (scm_guard): depending on the value of `throw_p', return a boolean
14607 result.
14608 (scm_get_one_zombie): remove redundant property test.
14609 (guardian_t): represent the various (currently 3, I hope nothing
14610 more gets added) boolean fields as bit flags.
14611 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
14612 (scm_destroy_guardian_x): new procedure.
14613
14614 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
14615 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
14616
0c6d2191
GH
146172001-01-01 Gary Houston <ghouston@arglist.com>
14618
14619 * fports.c (fport_write): bugfix: handle short writes for
14620 unbuffered ports too. optimize the buffered case by minimizing
14621 the number of write/flush calls.
14622 (write_all): new helper procedure.
14623
a51fe247 14624The ChangeLog continues in the file: "ChangeLog-2000"
d9f71a07
LC
14625
14626;; Local Variables:
14627;; coding: utf-8
14628;; End: