Merge commit '5b7632331e7551ac202bbaba37c572b96a791c6e'
[bpt/guile.git] / libguile / ChangeLog-2008
CommitLineData
37a52039
JG
12008-08-29 Julian Graham <joolean@gmail.com>
2
3 * threads.c (fat_mutex_lock): Resolve a deadlock caused by not
4 checking mutex state after calling `SCM_TICK'.
5
70eca635
LC
62008-08-27 Ludovic Courtès <ludo@gnu.org>
7
8 Fix builds `--without-threads'. Reported by Han-Wen Nienhuys
9 <hanwen@xs4all.nl>.
10
11 * scmsigs.c (scm_i_close_signal_pipe): Don't refer to
12 `signal_pipe' unless `SCM_USE_PTHREAD_THREADS' is true.
13 * threads.c (scm_leave_guile_cleanup): Mark as `SCM_UNUSED'.
14
582a4997
LC
152008-08-25 Ludovic Courtès <ludo@gnu.org>
16
17 * Makefile.am (AM_CFLAGS): New.
18 (guile_CFLAGS, libguile_la_CFLAGS): Use it.
19
417566eb
LC
202008-08-20 Ludovic Courtès <ludo@gnu.org>
21
22 * eval.c, filesys.c, gc.c, numbers.c, stime.c, threads.c: Don't
23 define `_GNU_SOURCE' explicitly as it's now defined in
24 <config.h> thanks to `AC_USE_SYSTEM_EXTENSIONS'.
25
4a1db3a9
LC
262008-08-19 Han-Wen Nienhuys <hanwen@lilypond.org>
27 Ludovic Courtès <ludo@gnu.org>
28
29 * goops.c (scm_init_goops_builtins, go_to_hell): Fix allocation
30 of `hell' by passing "hell_size * sizeof (*hell)" instead of
31 "hell_size" to `scm_malloc ()' and `scm_realloc ()'.
32
76dae881
NJ
332008-08-02 Neil Jerram <neil@ossau.uklinux.net>
34
35 * numbers.c (scm_rationalize): Update docstring to match the
36 manual (which is more correct). Change argument "err" to "eps",
37 also to match the manual.
38
2b3df509
NJ
392008-07-17 Neil Jerram <neil@ossau.uklinux.net>
40
41 From Thiemo Seufer <ths@networkno.de>:
42
43 * gc_os_dep.c (CPP_WORDSZ, ALIGN_DOUBLE, DATAEND,
44 DYNAMIC_LOADING): Added #defines.
45 (_fdata, _end): Added declarations.
46 (DATASTART): Use _fdata instead of __data_start.
47 (STACKBOTTOM): Changed from 0x80000000 to 0x7fff8000.
48
450be18d
LC
492008-07-16 Ludovic Courtès <ludo@gnu.org>
50
51 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_STRUCT_DIRENT64): New.
52 * gen-scmconfig.c (main): Produce definitions of
53 `SCM_HAVE_STRUCT_DIRENT64' and `SCM_HAVE_READDIR64_R'.
54 * _scm.h (dirent_or_dirent64): Depend on
55 `SCM_HAVE_STRUCT_DIRENT64', for the sake of HP-UX 11.11.
56 (readdir_r_or_readdir64_r): Depend on `SCM_HAVE_READDIR64_R',
57 for HP-UX 11.11.
58
071bb6a8
LC
592008-07-05 Ludovic Courtès <ludo@gnu.org>
60
61 * strings.c (scm_c_symbol_length): New function.
62 * strings.h (scm_c_symbol_length): New declaration.
63
3e28462f
LC
642008-07-04 Ludovic Courtès <ludo@gnu.org>
65
b6137ed7
LC
66 * posix.h (scm_i_locale_mutex): Don't declare as `SCM_INTERNAL'
67 since it's needed by `libguile-i18n'. Reported by Patrick
68 Horgan <phorgan1@gmail.com>.
69
3e28462f
LC
70 * __scm.h (SCM_INTERNAL): Add `extern' so that these symbols are
71 not considered as "common" by GCC 4.3. Reported by Patrick
72 Horgan <phorgan1@gmail.com>.
73
95c6523b
LC
742008-06-28 Ludovic Courtès <ludo@gnu.org>
75
47871d5a
LC
76 * Makefile.am (INCLUDES): Renamed to...
77 (AM_CPPFLAGS): this, to match current Automake conventions.
78 Users updated.
79
95c6523b
LC
80 * tags.h (SCM_UNPACK): Disable type-checking for `__DECC' and
81 `__HP_cc'. Reported by Peter O'Gorman <pogma@thewrittenword.com>.
82
6eadcdab
LC
832008-06-02 Ludovic Courtès <ludo@gnu.org>
84
85 * deprecated.c (maybe_close_port): Rename EXCEPT to EXCEPT_SET
86 to workaround `#define except' on Tru64. Reported by Peter
87 O'Gorman <pogma@thewrittenword.com>.
88
102dbb6f
LC
892008-05-31 Ludovic Courtès <ludo@gnu.org>
90
91 * __scm.h (SCM_INTERNAL): New macro.
92 * *.h: Use it to mark as internal `scm_i_' and `scm_init_'
93 functions that are not used by public macros or inline
94 functions.
95
184af225
JG
962008-05-14 Julian Graham <joolean@gmail.com>
97
98 * threads.c (fat_mutex)[recursive]: New field.
99 (make_fat_mutex): Adjust initialization to reflect changes to
100 mutex lock level semantics.
101 (fat_mutex_lock, fat_mutex_unlock): Add support for unowned
102 mutexes and locking mutexes on behalf of other threads.
103 (scm_lock_mutex, scm_lock_mutex_timed): Update to reflect
104 signature change to fat_mutex_lock.
105 (scm_mutex_owner, scm_mutex_level, scm_mutex_locked_p): New /
106 re-enabled functions.
107 * threads.h (scm_mutex_owner, scm_mutex_level,
108 scm_mutex_locked_p): Prototypes for new functions.
109
e4c1d4cf
NJ
1102008-05-12 Neil Jerram <neil@ossau.uklinux.net>
111
112 * discouraged.c: Expand DEFFROM and DEFTO macros, to avoid
113 compiler warnings about excess semicolons. (Reported by Didier
114 Godefroy.)
115
346e4402
NJ
1162008-05-08 Neil Jerram <neil@ossau.uklinux.net>
117
118 * throw.c (scm_ithrow): For IA64 add a return statement, to
119 appease GCC.
120
121 * threads.h (scm_i_thread): New IA64 fields:
122 register_backing_store_base and pending_rbs_continuation.
123
124 * threads.c (guilify_self_1): For IA64: cap RBS base address at
125 the current value of scm_ia64_ar_bsp, and store the capped value
126 in thread state.
127 (SCM_MARK_BACKING_STORE): Use thread->register_backing_store_base
128 instead of scm_ia64_register_backing_store_base().
129 (scm_threads_mark_stacks): Add "&" in "&t->regs", so that the code
130 works both for jmp_buf defined as an array, and jmp_buf defined as
131 a struct.
132
133 * continuations.h (scm_t_contregs): Remove `fresh' and `ctx'
134 fields; these are now inside the IA64 definition of `jmp_buf'.
135
136 * continuations.c (scm_make_continuation): Simplify, by moving
137 some of the IA64 code inside the definition of "setjmp", and by
138 some obvious commonizations. For IA64 register backing store
139 (RBS) stack base, use thread->register_backing_store_base instead
140 of scm_ia64_register_backing_store_base().
141 (copy_stack): For IA64, store pointer to continuation being
142 invoked in thread state, so we can restore the continuation's RBS
143 stack just before the next setcontext call.
144 (copy_stack_and_call): Don't restore RBS stack explicitly here.
145 It will be restored, if appropriate, inside the longjmp call.
146 (scm_ia64_longjmp): New function.
147
148 * __scm.h (setjmp, longjmp, jmp_buf): For IA64, implement using
149 getcontext and setcontext.
150
7a35784c
LC
1512008-05-07 Ludovic Courtès <ludo@gnu.org>
152
153 * numbers.c (scm_from_complex_double): Mark as `SCM_UNUSED'.
154 This fixes compilation with `-Werror' on FreeBSD 6.2 (i386).
155
6d4e1f62
NJ
1562008-05-05 Neil Jerram <neil@ossau.uklinux.net>
157
158 * c-tokenize.lex: #define YY_NO_INPUT.
159
bd22f1c7
LC
1602008-04-26 Ludovic Courtès <ludo@gnu.org>
161
162 * read.c (scm_read_sexp): Remove extraneous semi-colon at
163 end-of-line, which broke compilation with GCC 2.7. Reported by
164 Alain Guibert <alguibert+bts@free.fr>.
165
535b3592
LC
1662008-04-24 Ludovic Courtès <ludo@gnu.org>
167
168 * Makefile.am (DEFAULT_INCLUDES): New. Fixes compilation on
169 Tru64 where our "random.h" would shadown libc's one.
170 (INCLUDES): Add "-I$(top_buildir)", which is normally in
171 `DEFAULT_INCLUDES'.
172 * gen-scmconfig.c: Include <libguile/gen-scmconfig.h>, not
173 "gen-scmconfig.h" since that file is under `$(builddir)'.
174
f5c2af4b
LC
1752008-04-16 Ludovic Courtès <ludo@gnu.org>
176
177 * ports.c (scm_getc, scm_putc, scm_puts): Moved...
178 * inline.h: ... here. Noticeably improves `read' performance.
179
ef4cbc08
LC
1802008-04-15 Ludovic Courtès <ludo@gnu.org>
181 Julian Graham <joolean@gmail.com>
182
183 * read.c (scm_keyword_postfix): New.
184 (scm_read_opts): Update docstring for `keywords'.
185 (scm_read_mixed_case_symbol): Add support for postfix keywords.
186
07db6fcd
LC
1872008-04-13 Ludovic Courtès <ludo@gnu.org>
188
189 * inline.h (SCM_C_USE_EXTERN_INLINE): New macro. Use it to make
190 sure "extern" declarations are produced when "extern inline" is
9dca8935 191 used. Simplify macrology around inline definitions.
07db6fcd 192
7dc9ae71
LC
1932008-04-10 Ludovic Courtès <ludo@gnu.org>
194
195 * inline.h (SCM_C_EXTERN_INLINE): Special-case Apple's GCC
196 4.0-based compiler, which doesn't support GNU inline semantics
197 at all in C99 mode but doesn't define `__GNUC_STDC_INLINE__'.
198 See http://thread.gmane.org/gmane.network.gnutls.general/1135 .
199
54ee7cdf
AW
2002008-04-10 Andy Wingo <wingo@pobox.com>
201
4650d115
AW
202 * struct.c (scm_struct_ref, scm_struct_set_x): "Light" structs
203 have no hidden words (members of the SCM_STRUCT_DATA(x) array
204 accessed with negative indices). In that case, determine the
205 number of fields from the length of the struct layout
206 descriptor. (Most GOOPS instances are light structs.)
207
4125c767
AW
208 * goops.c (wrap_init): Initialize 'u' slots to 0, not some random
209 SCM value.
210
211 * goops.c (get_slot_value, set_slot_value): In the struct
54ee7cdf
AW
212 allocation case, don't poke the slots array directly -- we should
213 go through struct-ref/struct-set! code so that we get the
214 permissions and allocation ('u' versus 'p') correct.
215
979eade6
LC
2162008-04-03 Ludovic Courtès <ludo@gnu.org>
217
218 * inline.h (SCM_C_EXTERN_INLINE): New macro, addresses the
219 "extern inline" semantic change in C99 mode with GCC 4.3 and
220 later and the warning in C99 mode with GCC 4.2. Use it in the
221 inline function definitions.
222
2a1d0688
NJ
2232008-03-24 Neil Jerram <neil@ossau.uklinux.net>
224
225 Applying patch from Julian Graham, containing minor fixes to his
226 thread enhancements:
227
228 * threads.c (to_timespec): Change 1000000 multiplier to
229 1000000000.
230 (unchecked_unlock_sym, allow_external_unlock_sym,
231 recursive_sym): Use SCM_SYMBOL.
232 (scm_make_mutex_with_flags): When raising unsupported option
233 error, report what the unsupported option was.
234 (fat_mutex_unlock): When raising errors, unlock m->lock first.
235 (fat_cond_timedwait): Removed.
236 (scm_timed_wait_condition_variable): Call fat_mutex_unlock
237 directly instead of via fat_cond_timedwait.
238
c2ad98ad
LC
2392008-03-10 Ludovic Courtès <ludo@gnu.org>
240
241 * eval.c, filesys.c: Enclose `alloca' blob in `#ifndef alloca',
242 as per Gnulib's `alloca'. This should fix compilation on
243 FreeBSD 6.
244
bca69a9f
NJ
2452008-03-09 Neil Jerram <neil@ossau.uklinux.net>
246
247 * numbers.c: Only define scm_from_complex_double if it will
248 actually be used.
249
6180e336
NJ
2502008-03-08 Julian Graham <joolean@gmail.com>
251
241d9cea
NJ
252 * threads.c (scm_join_thread_timed, scm_thread_p,
253 scm_make_mutex_with_flags, scm_lock_mutex_timed,
254 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p): New
6180e336
NJ
255 functions.
256 (thread_mark): Updated to mark new struct field `mutexes'.
241d9cea 257 (do_thread_exit): Notify threads waiting on mutexes locked by exiting
6180e336 258 thread.
241d9cea
NJ
259 (scm_join_thread, scm_make_mutex, scm_make_recursive_mutex,
260 scm_mutex_lock): Reimplement in terms of their newer
6180e336
NJ
261 counterparts.
262 (scm_abandoned_mutex_error_key): New symbol.
263 (fat_mutex)[unchecked_unlock, allow_external_unlock]: New fields.
264 (fat_mutex_lock): Reimplement to support timeouts and abandonment.
265 (fat_mutex_trylock, scm_try_mutex): Remove fat_mutex_trylock and
266 reimplement scm_try_mutex as a lock attempt with a timeout of zero.
267 (fat_mutex_unlock): Allow unlocking from other threads and unchecked
268 unlocking; implement in terms of condition variable wait.
241d9cea 269 (scm_timed_wait_condition_variable): Reimplement in terms of
6180e336
NJ
270 fat_mutex_unlock.
271 * threads.h (scm_i_thread)[mutexes]: New field.
272 (scm_join_thread_timed, scm_thread_p, scm_lock_mutex_timed,
241d9cea 273 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p):
6180e336
NJ
274 Prototypes for new functions.
275
61b6542a
LC
2762008-03-06 Ludovic Courtès <ludo@gnu.org>
277
278 * eval.c (scm_eval): If MODULE_OR_STATE is not a dynamic state,
279 make sure it's a module. Reported by David I. Lehn.
280
3f520967
LC
2812008-03-02 Ludovic Courtès <ludo@gnu.org>
282
283 * pairs.h (scm_is_pair): Moved declaration to `inline.h'.
284 * inline.h: Make sure `extern' declarations are not produced
285 when `inline' is supported but GCC is not used. This
286 fixes "mixed linkage" errors with compilers such as
287 DEC/Compaq/HP CC.
288
fa80e280
NJ
2892008-02-27 Neil Jerram <neil@ossau.uklinux.net>
290
291 * _scm.h (errno): Remove declarations that have been there
292 forever, and are known to conflict on some platforms with that
293 provided by <errno.h>, which we include unconditionally. If
294 <errno.h> doesn't provide a errno declaration, what is the point
295 of it?
296
a2c25234
LC
2972008-02-23 Ludovic Courtès <ludo@gnu.org>
298
299 * numbers.c (scm_make_rectangular): Rename argument to
300 `real_part' and `imaginary_part' to work around Solaris 2.10
301 headers which define `imaginary' as a macro. Patch by Tim
302 Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
303
bfb64eb4
LC
3042008-02-22 Ludovic Courtès <ludo@gnu.org>
305
4fcb27c4
LC
306 * read.c (strncasecmp): Add declaration when
307 `HAVE_DECL_STRNCASECMP' is undefined. Fixes compilation on
308 NetBSD 1.6.
309
bfb64eb4
LC
310 * gc.c (scm_ia64_ar_bsp)[linux]: Don't discard `const' qualifier
311 of OPAQUE.
312
5305df84
LC
3132008-02-21 Ludovic Courtès <ludo@gnu.org>
314
315 Fix bug #22369.
316
317 * goops.c (scm_add_slot): Add `SCM_UNDEFINED' as last argument
a2c25234
LC
318 to `scm_list_n ()'. Thanks to René Köcher
319 <shirk87@googlemail.com>.
5305df84 320
25a640ca
LC
3212008-02-17 Ludovic Courtès <ludo@gnu.org>
322
323 * script.c (scm_compile_shell_switches): Update copyright year.
324
9a6fac59
LC
3252008-02-16 Ludovic Courtès <ludo@gnu.org>
326
327 * gc_os_dep.c: Add NetBSD/alpha support. Patch by Greg Troxel
328 <gdt@ir.bbn.com>.
329
5b5179f8
LC
3302008-02-12 Ludovic Courtès <ludo@gnu.org>
331
332 * guile-snarf.in (tempdir): Honor `$TMPDIR'.
333
4b26c03e
NJ
3342008-02-11 Neil Jerram <neil@ossau.uklinux.net>
335
336 * numbers.c (SCM_COMPLEX_VALUE): Use GUILE_I instead of _Complex_I
337 directly, and only if GUILE_I was defined by the configure step.
338 (scm_log, scm_log10, scm_exp, scm_sqrt): Use SCM_COMPLEX_VALUE
339 code only if SCM_COMPLEX_VALUE is defined.
340
7f74cf9a
LC
3412008-02-07 Ludovic Courtès <ludo@gnu.org>
342
343 Fix bug #21378.
344 Thanks to David Diffenbaugh <davediff@nbcs.rutgers.edu>.
345
346 * read.c (scm_read_quote): Don't use `__FUNCTION__' since it is
347 not supported by Sun CC on Solaris 9.
348 (scm_read_keyword): Likewise.
349 * strings.c (scm_take_locale_stringn): Remove
350 `SCM_C_INLINE_KEYWORD' to allow compilation with Sun CC.
351
86a597f8
NJ
3522008-02-07 Julian Graham <joolean@gmail.com>
353
241d9cea
NJ
354 * threads.c (do_thread_exit, scm_cancel_thread,
355 scm_set_thread_cleanup_x, scm_thread_cleanup): Lock on thread-specific
86a597f8
NJ
356 admin mutex instead of `thread_admin_mutex'.
357 * threads.h (scm_i_thread)[admin_mutex]: New field.
358 * throw.c (make_jmpbuf): Don't enter critical section during thread
359 spawn -- there is a possibility of deadlock if other threads are
360 exiting.
241d9cea 361
4a19ed04
NJ
3622008-02-06 Neil Jerram <neil@ossau.uklinux.net>
363
364 * gc-malloc.c (scm_gc_malloc): Return NULL if requested size is 0.
365 (scm_gc_free): Don't call `free' if mem is NULL.
366
189171c5
LC
3672008-02-06 Ludovic Courtès <ludo@gnu.org>
368
369 * numbers.c (scm_i_mkbig, scm_i_long2big, scm_i_ulong2big,
370 scm_i_clonebig, scm_i_bigcmp, scm_i_dbl2big, scm_i_dbl2num,
371 scm_i_normbig): Remove `SCM_C_INLINE_KEYWORD' since these are
372 declared as `extern' in `numbers.h'. This precluded compilation
373 on Solaris 9 with Sun CC (reported by David Halik
374 <dhalik@nbcs.rutgers.edu>).
375
d05bcb2e
NJ
3762008-02-05 Neil Jerram <neil@ossau.uklinux.net>
377
378 * fports.c (fport_seek): Make dependent on GUILE_USE_64_CALLS.
379
380 * _scm.h: Make definition of CHOOSE_LARGEFILE depend on
381 GUILE_USE_64_CALLS.
382
3ac8359a
NJ
3832008-02-01 Neil Jerram <neil@ossau.uklinux.net>
384
385 * modules.c (the_root_module): Moved before scm_current_module.
386 (scm_current_module): Return the root module if `the-module' fluid
387 gives #f.
388
d3cf93bc
NJ
3892008-01-22 Neil Jerram <neil@ossau.uklinux.net>
390
7df13834
NJ
391 * COPYING: Removed.
392
d3cf93bc
NJ
393 * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL.
394
15bd90ea
NJ
3952008-01-18 Neil Jerram <neil@ossau.uklinux.net>
396
397 * hashtab.c (scm_hash_fn_create_handle_x): If supplied assoc_fn
398 returns neither a pair nor #f, signal a wrong-type-arg error.
399 (Thanks to Gregory Marton for reporting this.)
400
5c004b6d
NJ
4012007-12-29 Neil Jerram <neil@ossau.uklinux.net>
402
403 * gc.c (mark_gc_async): Change "func_data" to "fn_data", to avoid
404 clash with AIX header file.
405 * hooks.c (scm_c_hook_add, scm_c_hook_remove): Same again.
406 * hooks.h (scm_t_c_hook_function, scm_c_hook_add,
407 scm_c_hook_remove): Same again.
408
9cc37597
LC
4092007-12-08 Ludovic Courtès <ludo@gnu.org>
410
411 * __scm.h (SCM_EXPECT, SCM_LIKELY, SCM_UNLIKELY): New macros.
412 (SCM_ASSERT, SCM_ASSERT_TYPE, SCM_ASRTGO, SCM_GASSERT0,
413 SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Use them.
414 * eval.c (ASSERT_SYNTAX, ASSERT_SYNTAX_2): Likewise.
415 * eval.i.c (CEVAL): Use branch prediction hints for syntax
416 errors, wrong number of arguments and similar.
417 * numbers.c (scm_sum): Use `SCM_LIKELY' for the sum of two
418 immediate numbers.
419 (scm_difference, scm_product, scm_i_divide): Likewise.
420 * validate.h (SCM_ASSERT_RANGE): Use `SCM_UNLIKELY'.
421
7d1fc872
LC
4222007-12-04 Ludovic Courtès <ludo@gnu.org>
423
693758d5
LC
424 * ports.c (scm_c_read): Validate PORT as an open input port.
425 (scm_c_write): Validate PORT as an open output port.
426
7d1fc872
LC
427 * socket.c (scm_accept): Leave guile mode using
428 `scm_std_select ()' before calling `accept(2)'. Reported by
429 dskr <dskr@mac.com>.
430
ee834df4
LC
4312007-10-27 Ludovic Courtès <ludo@gnu.org>
432
433 * fports.c (scm_i_evict_port): Expect a port, rather than a pair
434 containing the port. Fixes a bug in the new port table (2007-08-26).
435 (scm_evict_ports): Use `scm_c_port_for_each ()'.
436
acbfb594
NJ
4372007-10-21 Neil Jerram <neil@ossau.uklinux.net>
438
439 * eval.c (unmemoize_delay): Extend the environment before
440 unmemoizing the promise thunk. This fixes a segmentation fault
441 reported by Frank Schwidom.
442
2e77f720
LC
4432007-10-20 Julian Graham <joolean@gmail.com>
444
445 Add support for thread cancellation and user-defined thread
446 cleanup handlers. Small rework by Ludovic Courtès.
447
448 * null-threads.h (scm_i_pthread_cancel,
449 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
450 * pthread-threads.h (scm_i_pthread_cancel,
451 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
452 * scmsigs.c (scm_i_signal_delivery_thread,
453 signal_delivery_thread_mutex): New.
454 (signal_delivery_thread): Leave when `read_without_guile ()'
455 returns zero.
456 (start_signal_delivery_thread): Acquire SIGNAL_DELIVERY_THREAD
457 before spawning the thread. Initialize
458 SCM_I_SIGNAL_DELIVERY_THREAD.
459 (ensure_signal_delivery_thread): Renamed to...
460 (scm_i_ensure_signal_delivery_thread): this.
461 (scm_i_close_signal_pipe): New.
462 * scmsigs.h: Updated.
463 * threads.c (thread_mark): Mark `t->cleanup_handler'.
464 (guilify_self_1): Initialize `t->cleanup_handler' and
465 `t->canceled'.
466 (do_thread_exit): Invoke `t->cleanup_handler'.
467 (on_thread_exit): Call `scm_i_ensure_signal_delivery_thread ()'.
468 Call `scm_i_close_signal_pipe ()' when the next-to-last thread
469 vanishes.
470 (scm_leave_guile_cleanup): New.
241d9cea 471 (scm_i_with_guile_and_parent): Use `scm_i_pthread_cleanup_push ()'
2e77f720
LC
472 and `scm_leave_guile_cleanup ()' to leave guile mode, rather
473 than call `scm_leave_guile ()' after FUNC.
474 (scm_cancel_thread, scm_set_thread_cleanup_x,
475 scm_threads_cleanup): New.
476 (scm_all_threads): Remove SCM_I_SIGNAL_DELIVERY_THREAD from the
477 returned list.
478 * threads.h (scm_i_thread)[cleanup_handler, canceled]: New
479 fields.
480 Add declarations of new functions.
241d9cea 481
d41668fa
LC
4822007-10-17 Ludovic Courtès <ludo@gnu.org>
483
484 * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a
485 regression compared to 1.8.2. Reported by Puneet
486 <schemer@gmail.com>.
487
66302618
LC
4882007-10-10 Ludovic Courtès <ludo@gnu.org>
489
490 * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check
491 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
492 * gen-scmconfig.h.in
493 (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER): New.
494 * gen-scmconfig.c (main): Define
495 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
496
1445e449
LC
4972007-10-04 Ludovic Courtès <ludo@gnu.org>
498
499 * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
500 `leave_locale_section ()' on failure of
501 `enter_locale_section ()' since the mutex is not held and locale
502 settings are unchanged.
503 (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
241d9cea 504 `restore_locale_settings ()' instead of `leave_locale_section ()'
1445e449 505 since the mutex is not held.
241d9cea 506
29776e85
LC
5072007-10-02 Ludovic Courtès <ludo@gnu.org>
508
509 * threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
510 since we're already in non-guile mode. Reported by Greg Toxel
511 for NetBSD.
512
61d3568b
LC
5132007-10-01 Ludovic Courtès <ludo@gnu.org>
514
515 * ports.c (flush_output_port): Expect directly a port instead of
516 a pair. Fixes a bug in the new port table (2007-08-26).
517
68eccd8b
KR
5182007-09-11 Kevin Ryde <user42@zip.com.au>
519
520 * posix.c (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
521 putenv("NAME") as the fallback everywhere else. In particular this is
522 needed for solaris 9. Reported by Frank Storbeck.
241d9cea 523
454866e0
LC
5242007-09-03 Ludovic Courtès <ludo@gnu.org>
525
526 * read.c (flush_ws): Handle SCSH block comments.
527
f43f3620
LC
5282007-09-03 Ludovic Courtès <ludo@gnu.org>
529
530 Fix alignment issues which showed up at least on SPARC.
531
532 * socket.c (scm_t_max_sockaddr, scm_t_getsockopt_result): New.
533 (scm_inet_pton): Change DST to `scm_t_uint32' for correct
534 alignment.
535 (scm_getsockopt): Change OPTVAL to `scm_t_getsockopt_result' for
536 correct alignment.
537 (_scm_from_sockaddr): Change ADDRESS to `scm_t_max_sockaddr *'.
538 (scm_from_sockaddr): Cast ADDRESS to `scm_t_max_sockaddr *'.
539 (MAX_SIZE_UN, MAX_SIZE_IN6): Removed.
540 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
541 Use `scm_t_max_sockaddr' instead of "char max_addr[MAX_ADDR_SIZE]".
542
8d4d5dfc
KR
5432007-09-03 Kevin Ryde <user42@zip.com.au>
544
545 * numbers.c (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
546 before using clog(). It's possible for gcc to provide the "complex
547 double" type, but for the system not to have the complex funcs.
548 (scm_exp): Ditto HAVE_CEXP for cexp().
549 (clog, cexp, carg): Remove fallback definitions. These only
550 duplicated the code within scm_log and scm_exp, and the latter have to
551 exist for the case when there's no "complex double". So better just
552 fix up the conditionals selecting between the complex funcs and plain
553 doubles than worry about fallbacks.
554
1ac5fb45
LC
5552007-09-02 Ludovic Courtès <ludo@gnu.org>
556
557 * socket.c (scm_make_socket_address): Free C_ADDRESS after use.
558 This fixes a memory leak.
559
b87e6d04
HWN
5602007-08-26 Han-Wen Nienhuys <hanwen@lilypond.org>
561
5dbc6c06
HWN
562 * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
563 gc.c: replace port table with weak hash table. This simplifies
564 memory management, and fixes freed cells appearing in
565 port-for-each output.
566
b87e6d04
HWN
567 * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
568 held.
569
2baec6a9
LC
5702007-08-23 Ludovic Courtès <ludo@gnu.org>
571
492faee1 572 * read.c (scm_read_quote): Record position and copy source
8d4d5dfc 573 expression when asked to. Reported by Kevin.
492faee1 574
2baec6a9
LC
575 * stime.c: Define `_REENTRANT' only if not already defined.
576
1f11c61a
KR
5772007-08-21 Kevin Ryde <user42@zip.com.au>
578
579 * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
580 tc16 values so big, real, complex and fraction can be distinguished.
581
582 (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL. NULL
583 was making numbers come out as "type 23" in gc-live-object-stats.
584 Fix tests of the tc16 number types, they were checked under
585 scm_tc7_number, but the values went down the tag>=255 smob case.
586 Put smob case under scm_tc7_smob instead of using tag>=255, per
241d9cea 587 recommendation in comments with scm_tc7_smob to use symbolic values.
1f11c61a
KR
588 Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
589 code. Lose some unnecessary "break" statements.
590
591 (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
592 element returned, rather than two lookups scm_hashq_ref and
593 scm_hashq_set_x.
594
949ec9f9
KR
5952007-08-17 Kevin Ryde <user42@zip.com.au>
596
597 * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
598 solaris 2.6. Reported by anirkko.
599
6caac03c
LC
6002007-07-29 Ludovic Courtès <ludo@gnu.org>
601
602 * Makefile.am (INCLUDES): Added Gnulib includes.
603 (gnulib_library): New.
604 (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
605 `$(gnulib_library)'.
606 (libguile_la_LIBADD): Likewise.
607
608 * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
609 to define it when available.
610 * srfi-14.c: Likewise.
f7439099
LC
611 * i18n.c: Likewise. Include Gnulib's <alloca.h>
612 * eval.c: Include Gnulib's <alloca.h>.
613 * filesys.c: Likewise.
614 * read.c: Don't include <strings.h> and don't provide an
615 `strncasecmp ()' replacement; use Gnulib's <string.h> and
616 `strncasecmp ()' instead.
6caac03c 617
e08f3f7a
LC
6182007-07-25 Ludovic Courtès <ludo@gnu.org>
619
620 * eval.c (macroexp): When `scm_ilength (res) <= 0', return
621 immediately. This used to produce a circular memoized
622 expression, e.g., for `(set (quote x) #t)'.
623
7337d56d
LC
6242007-07-22 Ludovic Courtès <ludo@gnu.org>
625
626 Overhauled the reader, making it faster.
627
628 * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
629 (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
630 of `scm_lreadr ()'.
631
632 * read.c: Overhauled. No longer use a token buffer. Use a
633 on-stack C buffer in the common case and use Scheme strings when
634 larger buffers are needed.
635 * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
636 scm_lreadr, scm_lreadrecparen): Removed.
637 (scm_i_input_error): Marked as `SCM_NORETURN'.
638
df449722
LC
6392007-07-15 Ludovic Courtès <ludo@gnu.org>
640
641 * script.c (scm_compile_shell_switches): Updated copyright year.
642
b1f57ea4
LC
6432007-07-11 Ludovic Courtès <ludo@gnu.org>
644
645 * goops.c (scm_sys_method_more_specific_p): Added docstring.
646 Make sure LEN is greater than or equal to the minimum length of
647 specializers of M1 and M2. This fixes a segfault later on in
648 `more_specificp ()' if TARGS is too small. Reported by Marco
649 Maggi <marco.maggi-ipsu@poste.it>.
650
d3075c52
LC
6512007-06-26 Ludovic Courtès <ludo@gnu.org>
652
653 * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
654 sure to free the previous array after the new one has been
655 installed. This leak is made visible by running
656 "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
657 from the REPL within Valgrind.
658
7a5fb796
LC
6592007-06-12 Ludovic Courtès <ludo@chbouib.org>
660
661 * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
662 as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
663 bus error on SPARC (and possibly others) due to unaligned access.
664
a1ef7406
LC
6652007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
666
667 * posix.c (scm_ttyname): Check whether RESULT is NULL before
668 making a string from it (reported by Dan McMahill). Don't call
669 `scm_from_locale_string ()' before the mutex is released.
670
3dcf3373
LC
6712007-05-26 Ludovic Courtès <ludo@chbouib.org>
672
673 * eval.c (scm_m_define): Updated comment. Changed order for value
674 evaluation and `scm_sym2var ()' call, which is perfectly valid per
675 R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
676
608860a5
LC
6772007-05-05 Ludovic Courtès <ludo@chbouib.org>
678
679 Implemented lazy duplicate binding handling.
680
681 * modules.c (scm_export): Renamed to...
682 (scm_module_export): This. Now public.
683 (module_variable): Removed.
684 (default_duplicate_binding_procedures_var): New variable.
685 (default_duplicate_binding_handlers, resolve_duplicate_binding,
686 module_imported_variable, scm_module_local_variable,
687 scm_module_variable): New functions.
688 (scm_module_import_interface): Rewritten.
689 (scm_module_reverse_lookup): Exported as a Scheme function.
690 * modules.h (scm_module_index_duplicate_handlers,
691 scm_module_index_import_obarray): New macros.
692 (scm_module_variable, scm_module_local_variable,
693 scm_module_export): New declarations.
694
1911e3da
LC
6952007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
696
697 * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
698 `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
699
1d8ce4c0
HWN
7002007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
701
702 * numbers.c (carg): provide carg, cexp, clog in case they are
703 missing.
704
afb49959
LC
7052007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
706
707 * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
708 `FRAC_DIGITS', etc., which are GNU extensions. Reported by
709 Steven Wu.
710
b3aa4626
KR
7112007-03-08 Kevin Ryde <user42@zip.com.au>
712
713 * struct.c, struct.h (scm_make_vtable): New function, providing
714 `make-vtable'.
715 * stacks.c (scm_init_stacks): Use it.
716
7172007-03-06 Kevin Ryde <user42@zip.com.au>
718
719 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
720 allocating a tail array. If there's no such then those tail fields
721 are uninitialized and garbage SCMs there can cause a segv if printed
722 (after fetching with struct-ref).
723
7242007-02-22 Kevin Ryde <user42@zip.com.au>
725
726 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
727 (scm_usleep): Update docstring per manual, cross reference sleep.
728
729 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
730 scm_struct_init is not within that section. scm_struct_init can
731 thrown an error, which within a critical section results in an
732 abort().
733
03291373
NJ
7342007-02-19 Neil Jerram <neil@ossau.uklinux.net>
735
736 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
737 is included in the distribution.
652dbce6 738 (noinst_HEADERS): And the same for eval.i.c.
03291373 739
a2f00b9b
LC
7402007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
741
742 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
743 unconditionally. Include <langinfo.h> and <nl_types.h> when
744 available.
745 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
746 SCM_LIST_OR_INTEGER_P): New macros.
747 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
748 as powers of two instead of `(1 << LC_*)'.
749 (scm_i_locale_free): New function/macro.
750 (scm_global_locale): New global variable.
751 (smob_locale_free): Use `scm_i_locale_free ()'.
752 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
753 (get_current_locale_settings): Return `EINVAL' instead of `errno'
754 when `setlocale' fails.
755 (restore_locale_settings): Likewise.
756 (install_locale_categories): Likewise.
757 (install_locale): Likewise. Stop the locale stack traversal when
758 all categories have been handled.
759 (get_current_locale, category_to_category_mask,
760 category_list_to_category_mask): New function.
761 (scm_make_locale): Use them. Accept both lists of `LC_*' values
762 and single `LC_*' values as the first argument. Handle the case
763 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
764 duplicate C_BASE_LOCALE before using it.
765 (scm_nl_langinfo, define_langinfo_items): New functions.
766 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
767 `nl-langinfo' and invoke `define_langinfo_items ()'.
768 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
769 * posix.c: Include <xlocale.h> when available.
770 (scm_i_locale_mutex): Always define it. Statically initialized.
771 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
772 acquiring the locale mutex.
773 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
774
b3aa4626
KR
7752007-01-27 Kevin Ryde <user42@zip.com.au>
776
777 * ports.c (scm_port_line, scm_set_port_line_x), read.c
778 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
779 port line number type, should be "long" not "int", as per line_number
780 field of scm_t_port. (Makes a difference only on 64-bit systems, and
781 only then for a linenum above 2Gig.)
782
2a8d66b0
HWN
7832007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
784
785 * vector.c: remove comment as per kryde's request.
786
b3aa4626
KR
7872007-01-25 Kevin Ryde <user42@zip.com.au>
788
789 * sort.c (scm_stable_sort): Return empty list for input empty list, as
790 done in guile 1.6 and as always done by plain `sort'. Was falling
791 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
792
cb90e2cb
HWN
7932007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
794
8cb7939c
HWN
795 * vectors.c (s_scm_vector_move_right_x): complain about naming.
796
d00a0704
HWN
797 * srcprop.c: regularize comments.
798
3d178652
HWN
799 * eval.c: remove superfluous ifndef DEVAL.
800
243ebb61
HWN
801 * private-options.h: idem.
802
803 * eval.i.c: copyright nitpicking.
804
0ee05b85
HWN
805 * eval.c: distangle. move duplicate code to eval.i.c and include
806 twice.
807
808 * eval.i.c: new file.
809
22fc179a
HWN
810 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
811 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
812 read.h, stacks.c, symbols.c, throw.c: use private-options.h
813
814 * private-options.h: new file: contain hardcoded option
815 definitions.
816
cb90e2cb
HWN
817 * private-gc.h: add FSF header.
818
62560650
HWN
8192007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
820
72f19c26
HWN
821 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
822 memoize-symbol is set.
823
824 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
825
826 * eval.c (CEVAL): add memoize_symbol trap.
827
03347a97
HWN
828 * options.c (scm_options_try): new function. This allows error
829 reporting before changing options in a critical section.
830
b0763985
HWN
831 * srcprop.c: use double cell for storing source-properties. Put
832 filename in the plist, and share between srcprops if possible.
833 Remove specialized storage.
834
835 * srcprop.h: remove macros without SCM_ prefix from
836 interface. Remove specialized storage/type definitions.
837
62560650
HWN
838 * read.c: idem.
839
840 * print.c: idem.
841
842 * eval.c: terminate option lists with 0.
843
844 * options.c: remove n (for length) from scm_option_X
845 functions. Detect option list length by looking for NULL name.
846
42ddb3cb
LC
8472007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
848
849 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
850 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
851 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
852 added by `make-vtable-vtable'. Reported by Marco Maggi.
241d9cea 853
937038e8
HWN
8542007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
855
856 * throw.c (scm_ithrow): more refined error message: print symbols
857 too.
858
23d72566
KR
8592007-01-16 Kevin Ryde <user42@zip.com.au>
860
861 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
862 implementing `set-program-arguments'.
863
864 * filesys.c (scm_init_filesys): Use scm_from_int rather than
865 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
866 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
867 O_LARGEFILE. These are all int not long, per arg to open().
868 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
869 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
870 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
871 an int arg to fcntl.
872
873 * posix.c (scm_putenv): Correction to "len" variable, was defined only
874 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
875 Move it to where it's used. Reported by Hugh Sasse.
876
877 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
878 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
879 meant #\nul in the input (detected by scm_to_locale_string) and a bad
880 flags arg (detected by scm_to_int) would throw from a critical
881 section, causing an abort().
882
883 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
884 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
885 REG_NOTEOL; they're all ints not longs (per args to regcomp and
886 regexec).
887
a2c40dc7
HWN
8882007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
889
890 * throw.c (scm_ithrow): print out key symbol and string arguments
891 when error happens inside a critical section, and document why.
892
391f57e6
HWN
8932007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
894
895 * read.c (s_scm_read_hash_extend): document #f argument to
896 read-hash-extend.
897
23d72566
KR
8982007-01-04 Kevin Ryde <user42@zip.com.au>
899
900 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
901 scm_minor_version, scm_micro_version, scm_effective_version,
902 scm_version, scm_init_version): Use SCM_API instead of just extern,
903 for the benefit of mingw. Reported by Cesar Strauss.
904
93632e3c
HWN
9052007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
906
907 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
908 too.
909 (gc_update_stats): update scm_gc_cells_allocated_acc too.
910
23d72566
KR
9112006-12-27 Kevin Ryde <user42@zip.com.au>
912
913 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
914 the basic scm_get_stack_base. As advised by Nils Durner.
915
916 * threads.c (get_thread_stack_base): Add a version using
917 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
918 As advised by Heikki Lindholm.
919
920 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
921 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
922 Durner.
923
9242006-12-24 Kevin Ryde <user42@zip.com.au>
925
926 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
927 error if pid is not our own process, instead of silently doing nothing.
928
929 * print.c (scm_write, scm_display, scm_write_char): Disable port close
930 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
931 check in configure.in unintentionally enabled it. Believe that
932 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
933 can leave errno in that state. popen.test "no duplicates" output test
934 provoked that.
935
e2bf3b19
HWN
9362006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
937
938 * numbers.c (scm_i_fraction_reduce): move logic into
939 scm_i_make_ratio(), so fractions are only read.
940 scm_i_fraction_reduce() modifies a fraction when reading it. A
941 race condition might lead to fractions being corrupted by reading
942 them concurrently.
943
944 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
945 comparisons between reduced and unreduced fractions go wrong.
241d9cea 946
e2bf3b19
HWN
947 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
948 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
949 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
950 SCM_FRACTION_REDUCED.
951
23d72566
KR
9522006-12-16 Kevin Ryde <user42@zip.com.au>
953
954 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
955 more direct for a procedure called raise.
956 (kill): Remove mingw fake fallback.
957
9582006-12-15 Kevin Ryde <user42@zip.com.au>
959
960 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
961 _pipe on mingw.
962
9632006-12-14 Kevin Ryde <user42@zip.com.au>
964
965 * threads.c (thread_print): Cope with the case where pthread_t is a
966 struct, as found on mingw. Can't just cast to size_t for printing.
967 Reported by Nils Durner.
968
969 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
970 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
971
9722006-12-13 Kevin Ryde <user42@zip.com.au>
973
974 * eval.c (scm_m_define): Set 'name procedure property on any
975 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
976 procedures with setters as used in srfi-17.
977
978 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
979 linux man page says is a possibility.
980
f30e1bdf
LC
9812006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
982
983 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
42ddb3cb 984 instead of RES (reported by Szavai Gyula). This allows the use of
f30e1bdf
LC
985 negative lower bounds.
986 (scm_i_read_array): Make sure LEN is non-negative (reported by
42ddb3cb 987 Szavai Gyula).
f30e1bdf
LC
988
989 (scm_array_in_bounds_p): Iterate over S instead of always
990 comparing indices with the bounds of S[0]. This fixes
991 `array-in-bounds?' for arrays with a rank greater than one and
992 with different lower bounds for each dimension.
993
23d72566
KR
9942006-12-05 Kevin Ryde <user42@zip.com.au>
995
996 * numbers.c (scm_product): For flonum*inum and complex*inum, return
997 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
998 and as per R5RS section "Exactness".
999
10002006-12-03 Kevin Ryde <user42@zip.com.au>
1001
1002 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
1003 allow $AWK from the environment to override. It had syntax gremlins,
1004 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
1005 Makefile stopped it having any effect. Use just $(AWK), which can be
1006 overridden with "make AWK=xxx" in the usual way if desired.
1007
22be72d3
LC
10082006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
1009
1010 * libguile/vectors.c (scm_vector_to_list): Fixed list
1011 construction: elements were not copied when INC is zero (see
1012 "shared array" example in `vectors.test'). Reported by
1013 Szavai Gyula.
1014
b89c4943
LC
10152006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
1016
1017 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
1018 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
1019 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
1020 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
1021 (DOT_X_FILES): Added `gettext.x'.
1022 (DOT_DOC_FILES): Likewise.
1023 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
1024 (modinclude_HEADERS): Added `gettext.h'.
1025 (EXTRA_DIST): Added `libgettext.h'.
1026
1027 * gettext.h: Renamed to...
1028 * libgettext.h: New file.
1029
1030 * i18n.c: Renamed to...
1031 * gettext.c: New file.
1032
1033 * i18n.h: Renamed to...
1034 * gettext.h: New file.
1035
1036 * i18n.c, i18n.h, locale-categories.h: New files.
1037
1038 * init.c: Include "libguile/gettext.h" instead of
1039 "libguile/i18n.h".
1040 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
1041 `scm_init_i18n ()'.
1042
1043 * posix.c: Include "libguile/gettext.h" instead of
1044 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
1045 (USE_GNU_LOCALE_API): New macro.
1046 (scm_i_locale_mutex): New variable.
1047 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
1048
1049 * posix.h: Include "libguile/threads.h".
1050 (scm_i_locale_mutex): New declaration.
1051
f3e3f530
NJ
10522006-11-17 Neil Jerram <neil@ossau.uklinux.net>
1053
1054 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
1055
d9f71a07 10562006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
241d9cea 1057
d9f71a07
LC
1058 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
1059 "sweep_stats" arguments; use them instead of accessing the global
1060 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
1061
1062 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
1063 before each iteration of the loop.
1064 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
1065 (scm_i_get_new_heap_segment): Take an additional argument
1066 SWEEP_STATS. Compute MIN_CELLS as a function of it.
1067
1068 * libguile/gc.c (scm_gc_cells_collected,
1069 scm_gc_cells_collected_1): Removed.
1070 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
1071 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
1072 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
1073 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
1074 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
1075 `scm_gc_cells_(collected|swept)'.
1076 (gc_update_stats): New.
1077 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
1078 `scm_i_gc_sweep_stats_1' instead of the former globals.
1079 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
1080 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
1081 would keep allocating new segments instead of re-using collected
1082 cells (because `scm_gc_cells_collected' would remain zero).
1083
1084 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
1085 scm_gc_cell_yield_percentage): Removed.
1086
1087 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
1088 (scm_i_adjust_min_yield): Updated.
1089 (scm_i_get_new_heap_segment): Updated.
1090
dd18d312
NJ
10912006-11-02 Neil Jerram <neil@ossau.uklinux.net>
1092
1093 * modules.c: Correct comment saying that low-level environments
1094 will be used "in the next release".
1095
1096 * init.c: Comment out #include of environments.h.
1097 (scm_i_init_guile): Comment out scm_environments_prehistory() and
1098 scm_init_environments() calls.
1099
1100 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
1101 (DOT_X_FILES): Remove environments.x.
1102 (DOT_DOC_FILES): Remove environments.doc.
1103 (modinclude_HEADERS): Remove environments.h.
1104
9a5fa6e9
NJ
11052006-10-25 Neil Jerram <neil@ossau.uklinux.net>
1106
1107 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
241d9cea 1108
9a5fa6e9
NJ
1109 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
1110 scm_ia64_register_backing_store_base() instead of Linux-specific
1111 implementations.
1112
1113 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
1114 New declarations.
1115
1116 * gc.c (__libc_ia64_register_backing_store_base): Declaration
1117 removed.
1118 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
1119 implementations for Linux and HP-UX.
1120
1121 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
1122 and scm_ia64_register_backing_store_base() instead of
1123 Linux-specific implementations.
1124
1125 * continuations.h (__libc_ia64_register_backing_store_base):
1126 Declaration removed.
1127 (scm_t_contregs): New "fresh" field.
1128
1129 * continuations.c (ia64_getcontext): Removed.
1130 (scm_make_continuation): Use continuation fresh field instead of
1131 interpreting getcontext return values (which isn't portable). Use
1132 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
1133 instead of Linux-specific implementations.
1134 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
1135 instead of Linux-specific implementation.
1136
1137 * _scm.h (__ia64__): Also detect __ia64.
1138
8ab3d8a0
KR
11392006-10-03 Kevin Ryde <user42@zip.com.au>
1140
1141 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
1142 arguments or 3 or more arguments. Previously 0 called proc with
1143 SCM_UNDEFINED, and 3 or more silently used just the first 2.
1144
11452006-09-28 Kevin Ryde <user42@zip.com.au>
1146
1147 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
1148 for chsize fallback, instead of hard-coding mingw. Mingw in fact
1149 supplies ftruncate itself these days.
1150
1151 * ports.c (fcntl.h): Can include this unconditionally, no need for
1152 __MINGW32__.
1153
1154 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
1155 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
1156 "off_t" for parameters, per usual definition of this function, rather
1157 than "char *" and "int". Use ftruncate instead of chsize. Check for
1158 error on final close.
1159
11602006-09-27 Kevin Ryde <user42@zip.com.au>
1161
1162 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
1163 in mingw.
1164
1165 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
1166 const *" for mingw to suppress warnings from gcc (which are errors
1167 under the configure default -Werror). Reported by Nils Durner.
1168
11692006-09-26 Kevin Ryde <user42@zip.com.au>
1170
1171 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
1172 * fports.c (scm_open_file): Use open_or_open64.
1173 (fport_seek_or_seek64): New function, adapting fport_seek.
1174 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
1175 functions.
1176 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
1177 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
1178
1179 * ports.c (scm_truncate_file): Update docstring per manual.
1180
11812006-09-23 Kevin Ryde <user42@zip.com.au>
1182
1183 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
1184 functions.
1185
9a5fa6e9 11862006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
a17d2654
LC
1187
1188 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
1189 (make_predset, define_predset, make_strset, define_strset, false,
1190 true): Removed.
1191 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
1192 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
1193 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
1194 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
1195 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
1196 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
1197 (define_charset, scm_srfi_14_compute_char_sets): New functions.
1198 (scm_init_srfi_14): Use `define_charset ()' instead of
1199 `define_predset ()' and `define_strset ()'.
1200
1201 * srfi-14.h (scm_c_init_srfi_14): Removed.
1202 (scm_srfi_14_compute_char_sets): New declaration.
1203
1204 * posix.h: Include "srfi-14.h".
1205 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
1206 successful `setlocale ()' call.
1207
8ab3d8a0
KR
12082006-09-08 Kevin Ryde <user42@zip.com.au>
1209
1210 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
1211 (scm_recvfrom): Update docstring from manual.
1212
418122ce
RB
12132006-08-31 Rob Browning <rlb@defaultvalue.org>
1214
1215 * ports.c (scm_c_port_for_each): Add a
1216 scm_remember_upto_here_1(ports) at the end of the function to fix
1217 a GC bug.
1218
b5944f66
NJ
12192006-08-28 Neil Jerram <neil@ossau.uklinux.net>
1220
1221 * backtrace.c (scm_display_backtrace_with_highlights): Minor
1222 improvements to docstring.
1223 (scm_backtrace_with_highlights): Analogous improvements.
1224
8ab3d8a0
KR
12252006-08-12 Kevin Ryde <user42@zip.com.au>
1226
1227 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
1228 New, set from configure.
1229 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
1230 to scmconfig.h.
1231 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
1232 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
1233 Reported by Claes Wallin.
1234
b0b0deff
NJ
12352006-08-11 Neil Jerram <neil@ossau.uklinux.net>
1236
1237 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
1238 frame, not a stack).
1239
8ab3d8a0
KR
12402006-07-25 Kevin Ryde <user42@zip.com.au>
1241
1242 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
1243 on pthreads version, since pthread_getattr_np not available on solaris
1244 and macos. Reported by Claes Wallin.
1245
12462006-07-24 Kevin Ryde <user42@zip.com.au>
1247
1248 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
1249 it's a macro on MacOS X. Reported by Claes Wallin.
1250
1251 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
1252 for the benefit of Solaris 10. Reported by Claes Wallin.
1253
1254 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
1255 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
1256
12572006-07-21 Kevin Ryde <user42@zip.com.au>
1258
1259 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
1260 autoconf recommendation. Should fix Solaris 10 reported by Claes
1261 Wallin.
1262
1263 * threads.c: Include <string.h>, needed for memset() which is used by
1264 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
1265
b4912378
RB
12662006-07-18 Rob Browning <rlb@defaultvalue.org>
1267
1268 * continuations.c: Add __attribute__ ((returns_twice)) to the
1269 ia64_getcontext prototype so that gcc will make the right
1270 arrangements and avoid an illegal instruction during
1271 call-with-current-continuation.
1272
9a5fa6e9 12732006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
eaa94eaa
LC
1274
1275 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
1276 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
1277
8ab3d8a0
KR
12782006-07-08 Kevin Ryde <user42@zip.com.au>
1279
1280 * environments.c (core_environments_unobserve): Use if/else rather
1281 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
1282 about them not being rvalues. Reported by Mike Gran.
1283
1284 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
1285 portable and in particular fails on OpenBSD and AIX (see autoconf
1286 manual too). Reported by Mike Gran.
1287
12882006-06-25 Kevin Ryde <user42@zip.com.au>
1289
1290 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
1291 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
1292 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
1293 HAVE_TM_ZONE.
1294 (scm_strptime): Use tm_gmtoff from the strptime result when that field
1295 exists, it's set by glibc strptime "%s".
241d9cea 1296
9a5fa6e9 12972006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
d15ad007
LC
1298
1299 * eq.c: Include "struct.h", "goops.h" and "objects.h".
1300 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
1301 are not GOOPS instances.
1302 * struct.c: Include "eq.h".
1303 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
1304 hand-written code.
1305 (scm_i_struct_equalp): New.
1306 * struct.h (scm_i_struct_equalp): New declaration.
1307
c862d0e0
KR
13082006-06-06 Kevin Ryde <user42@zip.com.au>
1309
1310 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
1311 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
1312 reported by Mattias Holm.
b4912378 1313
c862d0e0
KR
13142006-06-03 Kevin Ryde <user42@zip.com.au>
1315
1316 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
1317 unused variable warning when elisp disabled. Reported by Ryan
1318 VanderBijl.
1319
1320 * throw.c (scm_handle_by_message): Add dummy return value to avoid
1321 compiler warning on cygwin. Reported by Ryan VanderBijl.
241d9cea 1322
c862d0e0
KR
1323 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
1324 duplicate of EXTRA_DOT_DOC_FILES.
1325 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
1326 Add scmconfig.h to dependencies, since these all run cpp. Helps a
1327 parallel "make -j2". Reported by Mattias Holm.
1328
13292006-05-30 Kevin Ryde <user42@zip.com.au>
1330
1331 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
1332 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
1333 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
1334 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
1335 port type descriptor, same as scm_make_port_type return value.
1336
af4f8612
MV
13372006-05-30 Marius Vollmer <mvo@zagadka.de>
1338
1339 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
1340 of the arguments is a array. This allows vectors to be equal to
1341 one-dimensional arrays.
1342
18bffcd0
MV
13432006-05-29 Marius Vollmer <mvo@zagadka.de>
1344
1345 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
1346 that we have a pair before accessing its cdr. Thanks to Bill
1347 Schottstaedt!
1348
c862d0e0
KR
13492006-05-28 Kevin Ryde <user42@zip.com.au>
1350
1351 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
1352 by "The Senator".
1353
13542006-05-27 Marius Vollmer <mvo@zagadka.de>
b0c0a310
MV
1355
1356 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
1357 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
1358
c862d0e0
KR
13592006-05-26 Kevin Ryde <user42@zip.com.au>
1360
1361 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
1362 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
1363 Reported by "The Senator".
1364 For select and ioctl, move fdes into those conditionals, to avoid
1365 unused variable warning when neither of those used.
1366
13672006-05-23 Kevin Ryde <user42@zip.com.au>
1368
1369 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
1370 It's unused and will be in stdio.h anyway (if it's anywhere).
1371
13722006-05-20 Kevin Ryde <user42@zip.com.au>
1373
1374 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
1375 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
1376
1377 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
1378 symlink). Probably can't create symlinks with mknod anyway though.
1379
1380 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
1381 generation.
1382
13832006-05-15 Kevin Ryde <user42@zip.com.au>
1384
1385 * simpos.c, simpos.h (scm_primitive__exit): New function.
1386 (scm_primitive_exit): Update docstring, no longer the best exit after
1387 a fork.
1388
13892006-05-09 Kevin Ryde <user42@zip.com.au>
1390
1391 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
1392 rather than converting to doubles, to avoid inf or nan when the inputs
1393 are too big for a double but the quotient does fit. This affects
1394 conversions exact->inexact of big fractions.
1395
1396 * filesys.c (scm_open_fdes): Use open64.
1397 (scm_init_filesys): Add O_LARGEFILE.
1398
1399 * ports.c (scm_seek): Use lseek64.
1400 (scm_truncate_file): Use ftruncate64.
1401
4a342b19
MV
14022006-05-08 Marius Vollmer <mvo@zagadka.de>
1403
1404 * private-gc.h (CELL_P): Also check that the potential pointer is
1405 correctly aligned for a cell. Thanks to Miroslav Lichvar!
1406
c862d0e0
KR
14072006-04-18 Rob Browning <rlb@defaultvalue.org>
1408
1409 * _scm.h: Add back error if the size of off_t is unknown. The bug
1410 was actually in guile-readline's configuration.
1411
14122006-04-18 Kevin Ryde <user42@zip.com.au>
1413
1414 * posix.c (scm_mkstemp): Update docstring from the manual, in
1415 particular file mode 0600 is not guaranteed.
1416
281ab5e2
KR
14172006-04-17 Kevin Ryde <user42@zip.com.au>
1418
1419 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
1420 size, to help the guile-readline build where off_t is unused.
1421
2b829bbb
KR
14222006-04-16 Kevin Ryde <user42@zip.com.au>
1423
1424 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
1425 (scm_readdir): Use readdir64.
1426 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
1427 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
1428 and ftruncate take off_t not size_t.
1429 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
1430 available.
1431
14322006-04-06 Kevin Ryde <user42@zip.com.au>
1433
1434 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
9a5fa6e9 1435 instead of toggling it. Reported by Ludovic Courtès.
241d9cea 1436
2b829bbb
KR
14372006-03-26 Marius Vollmer <mvo@zagadka.de>
1438
1439 * threads.c (get_thread_stack_base): Use scm_get_stack_base
1440 instead of accessing __libc_stack_end directly, and only do this
1441 when pthread_attr_getstack is known not to work for the main
1442 thread or when not using pthreads at all.
1443
1444 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
1445 unknown instead of returning NULL.
1446
9a5fa6e9 14472006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1448
1449 * numbers.c (scm_i_mem2number): Renamed to
1450 scm_c_locale_stringn_to_number.
1451 * numbers.c, print.c, read.c: Updated callers.
1452 * numbers.h: Update function declaration.
1453
14542006-03-11 Neil Jerram <neil@ossau.uklinux.net>
1455
1456 * unif.c (string_set): Don't return in a void function. (Reported
1457 by Mike Gran.)
1458
1459 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
1460 rather than void*, so we can do pointer arithmetic on it.
1461 (Reported by Mike Gran.)
1462 (s_scm_uniform_vector_write): Ditto.
1463
14642006-03-10 Neil Jerram <neil@ossau.uklinux.net>
1465
1466 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
1467 oldra is not an array. (Reported by Steve Juranich.)
1468
1469 * threads.c (do_unlock): Renamed from "unlock", which is defined
1470 in unistd.h on QNX. (Reported by Matt Kraai.)
1471
14722006-03-04 Kevin Ryde <user42@zip.com.au>
1473
1474 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
1475 not SCM_CRITICAL_SECTION_START.
1476
1477 * eval.c, posix.c: Change comments from C++ to C style. Reported by
1478 Mike Gran.
1479
14802006-02-28 Kevin Ryde <user42@zip.com.au>
1481
1482 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
1483
14842006-02-26 Kevin Ryde <user42@zip.com.au>
1485
1486 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
1487 NAME_MAX is not available, which is so on Solaris 10. Report and help
1488 by Bill Schottstaedt.
1489
1490 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
1491 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
1492 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
1493 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
1494 use "unsigned char", not signed char. This ensures comparisons are
1495 the same as `char<?' etc, and is also the same as guile 1.6 did.
1496 Reported by Sven Hartrumpf.
1497
4a9f83ff
MD
14982006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
1499
1500 * random.c: Test for SCM_HAVE_T_UINT64 instead of
1501 SCM_HAVE_T_INT64.
1502 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
1503 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
1504 scm_t_int32.
1505
29d8c124 15062006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
4c7016dc
HWN
1507
1508 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
1509 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
1510 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
1511 Take into account SEG->SPAN when computing CELLS_SWEPT.
1512 (scm_i_sweep_segment): Take one more argument, similarly.
1513 (scm_i_sweep_all_segments): Likewise.
1514 (scm_i_sweep_some_segments): Likewise.
1515 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
1516 refer to SCM_GC_CELLS_COLLECTED.
1517
1518 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
1519 argument, an `scm_i_sweep_statistics' object.
1520 Change the way DELTA is collected: don't take into account
1521 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
1522
1523 * gc-malloc.c (scm_realloc): Pass an extra argument
1524 to `scm_i_sweep_all_segments ()'.
1525
1526 * gc.c (gc_start_stats): Updated accordingly.
1527 (gc_end_stats): Take an additional SWEEP_STATS argument.
1528 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
1529 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
1530 Decrement SCM_CELLS_ALLOCATED.
1531 (scm_i_gc): Likewise.
1532
1533 * private-gc.h (scm_i_sweep_*): Updated function
1534 prototypes accordingly.
1535 (scm_t_sweep_statistics): New type.
1536 (scm_i_sweep_statistics_init): New macro.
1537 (scm_i_sweep_statistics_sum): New macro
1538
9a5fa6e9 15392006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1540
1541 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
1542 LEN. Without this, too much collectable memory gets unregistered,
1543 which results in an underflow of SCM_MALLOCATED in
1544 `decrease_mtrigger()'.
1545
1546 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
1547 equal to SCM_MALLOCATED.
1548
15492006-02-13 Marius Vollmer <mvo@zagadka.de>
1550
1551 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
1552 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
1553 configured --without-threads.
1554 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
1555
1aaa1c17
MV
15562006-02-12 Marius Vollmer <mvo@zagadka.de>
1557
1558 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
1559 filling when the fill parameter is omitted, as documented, but
1560 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
1561 can not store characters.
1562
d7c6575f
NJ
15632006-02-09 Neil Jerram <neil@ossau.uklinux.net>
1564
1565 * socket.c (scm_c_make_socket_address): Pass address_size pointer
1566 on to scm_fill_sockaddr call.
1567
43e01b1e
NJ
15682006-02-04 Neil Jerram <neil@ossau.uklinux.net>
1569
1570 * throw.h (scm_c_catch, scm_c_with_throw_handler,
1571 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
1572
1573 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
1574 (struct pre_unwind_data): New, replaces struct lazy_catch.
1575 (scm_c_catch): New, replaces scm_internal_catch as the primary
1576 catch API for C code; adds pre-unwind handler support.
1577 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
1578 compatibility.
1579 (tc16_pre_unwind_data, pre_unwind_data_print,
1580 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
1581 "lazy_catch" equivalents.
1582 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
1583 as the primary C API for a "lazy" catch.
1584 (scm_internal_lazy_catch): Now just a wrapper for
1585 scm_c_with_throw_handler, for back compatibility.
1586 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
1587 pre-unwind handler support.
1588 (scm_catch): Now just a wrapper for
1589 scm_catch_with_pre_unwind_handler, for back compatibility.
1590 (scm_with_throw_handler): New.
1591 (scm_lazy_catch): Update comment to say that the handler can
1592 return, and what happens if it does.
1593 (toggle_pre_unwind_running): New.
1594 (scm_ithrow): When identifying the throw target, take running
1595 flags into account. In general, change naming of things from
1596 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
1597 don't unwind the dynamic context first. Add dynwind framing to
1598 manage the running flag of a throw handler. If a lazy catch or
1599 throw handler returns, rethrow the same exception again. Add
1600 pre-unwind support to the normal catch case (SCM_JMPBUFP).
1601
1602 * root.c (scm_internal_cwdr): Add NULL args to
1603 scm_i_with_continuation_barrier call.
1604
1605 * dynwind.c: Change comment mentioning lazy-catch to mention
1606 pre-unwind data and throw handler also.
1607
1608 * continuations.h (scm_i_with_continuation_barrier): Add
1609 pre-unwind handler args.
1610
1611 * continuations.c (scm_i_with_continuation_barrier): Add
1612 pre-unwind handler args, and pass on to scm_c_catch (changed from
1613 scm_internal_catch).
1614 (c_handler): Remove scm_handle_by_message_noexit call.
1615 (scm_c_with_continuation_barrier): Call
1616 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1617 as the pre-unwind handler.
1618 (scm_handler): Remove scm_handle_by_message_noexit call.
1619 (s_scm_with_continuation_barrier): Call
1620 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1621 as the pre-unwind handler.
1622
2b829bbb
KR
16232006-02-04 Kevin Ryde <user42@zip.com.au>
1624
1625 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
1626
72098928
KR
16272006-02-03 Kevin Ryde <user42@zip.com.au>
1628
1629 * list.c, list.h (scm_list): Restore this function for use from C.
1630 It's a complete no-op but in theory might used by someone.
1631
aa092c5d
MV
16322006-01-30 Marius Vollmer <mvo@zagadka.de>
1633
1634 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
1635 so that it gets unlocked in all cases.
1636 (SCM_APPLY, CEVAL): Likewise.
1637
661ae7ab
MV
16382006-01-29 Marius Vollmer <mvo@zagadka.de>
1639
ee51ba31
MV
1640 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
1641 scm_is_typed_array instead.
1642
661ae7ab
MV
1643 Renamed the "frames" that are related to dynamic-wind to "dynamic
1644 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
1645 Updated documentation.
1646
99e370f6
MV
1647 Disabled "futures":
1648
1649 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
1650 * eval.c, init.c: Comment out all 'future' related things.
1651
15ccf10b
MV
16522006-01-28 Marius Vollmer <mvo@zagadka.de>
1653
1654 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
1655 to inline.h to make it inline.
1656
9a5fa6e9 16572005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
fd0a5bbc
HWN
1658
1659 * strings.c (scm_i_take_stringbufn): New.
1660 (scm_i_c_take_symbol): New.
1661 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
1662
1663 * strings.h (scm_i_c_take_symbol): New.
1664 (scm_i_take_stringbufn): New.
1665
1666 * symbols.c (lookup_interned_symbol): New function.
1667 (scm_i_c_mem2symbol): New function.
1668 (scm_i_mem2symbol): Use `lookup_symbol ()'.
1669 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
1670 creating a new Scheme string.
1671 (scm_from_locale_symboln): Likewise.
1672 (scm_take_locale_symbol): New.
1673 (scm_take_locale_symboln): New.
1674
1675 * symbols.h (scm_take_locale_symbol): New.
1676 (scm_take_locale_symboln): New.
1677
2ca2ffe6
HWN
16782006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1679
1680 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
1681 free_count.
1682
c255614e
HWN
16832005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
1684
1685 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
1686 upon error
1687
29295b0c
NJ
16882005-12-29 Neil Jerram <neil@ossau.uklinux.net>
1689
9a5fa6e9 1690 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
29295b0c
NJ
1691 the GC when allocated_fluids_len is zero.
1692
2824f4dc
NJ
16932005-12-14 Neil Jerram <neil@ossau.uklinux.net>
1694
ec3a8ace
NJ
1695 * load.c (the_reader, the_reader_fluid_num): New.
1696 (scm_primitive_load): Support custom reader.
1697 (scm_init_load): Init the_reader and the_reader_fluid_num; export
1698 the_reader as `current-reader'.
1699
2824f4dc
NJ
1700 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
1701 (rather than an uninitialized pointer on the stack).
1702
d9c36d2a
MV
17032005-12-07 Marius Vollmer <mvo@zagadka.de>
1704
6a88895b 1705 Reported by Bruce Korb:
241d9cea 1706
6a88895b
MV
1707 * init.c (invoke_main_func): Don't call exit here. Throws that
1708 are only caught by scm_with_guile will bypass us and would cause
1709 scm_boot_guile to return erroneously.
1710 (scm_boot_guile): Expect scm_with_guile to return and call exit
1711 here, passing it an appropriate exit code.
1712
1713 From Andy Wingo:
241d9cea 1714
d9c36d2a
MV
1715 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1716 unsigned char cast to an int, or -1 for EOS.
241d9cea 1717
b54df254
MV
17182005-12-06 Marius Vollmer <mvo@zagadka.de>
1719
08f489c9
MV
1720 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1721 non-const.
9a5fa6e9 1722 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
241d9cea 1723
b54df254
MV
1724 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1725 scm_enter_guile): Removed from public API. See comment at
1726 scm_without_guile for the rationale.
1727
1728 * scmsigs.c (read_without_guile): New.
1729 (signal_delivery_thread): Use it instead of
1730 scm_leave_guile/read/scm_enter_guile.
1731
9d9ce2b5
MV
1732 From Stephen Compall:
1733
1734 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1735 (CEVAL): Evaluate SRFI 61 cond clauses.
1736
9a5fa6e9 17372005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
9fb5c8f9
NJ
1738
1739 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1740 This was typically hit when running `gc-live-object-stats' right
1741 after starting Guile.
1742
efeac8ae
KR
17432005-11-30 Kevin Ryde <user42@zip.com.au>
1744
1745 * srfi-13.c (scm_string_append_shared): No copying if just one
1746 non-empty string in args.
1747
606183ba
KR
17482005-11-26 Kevin Ryde <user42@zip.com.au>
1749
1750 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
9a5fa6e9 1751 by Ludovic Courtès.
606183ba
KR
1752
1753 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1754 "register".
1755
1756 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1757 scm_malloc returning NULL, it never does that.
1758 * putenv.c (putenv): Likewise.
1759
1760 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1761 much too big to want to inline.
1762
9a5fa6e9 17632005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
dbb5de29
NJ
1764
1765 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1766 the value at its top. This fixes a reference leak.
1767 (PUSH_REF): Perform `pstate->top++' after calling
1768 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1769 effects.
1770
9a5fa6e9 17712005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
3f98874a
NJ
1772
1773 * gc.c (scm_weak_vectors): Removed.
1774
f07d2b20
KR
17752005-11-12 Kevin Ryde <user42@zip.com.au>
1776
1777 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
9a5fa6e9 1778 by Ludovic Courtès.
f07d2b20 1779
bedd3f5f
MV
17802005-11-07 Marius Vollmer <mvo@zagadka.de>
1781
1782 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1783 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1784 section might exit non-locally.
1785
7c9c0169
NJ
17862005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1787
1788 * eval.c (sym_instead): New symbol.
1789 (ENTER_APPLY): Remove optional use of a continuation when making
1790 trap call.
1791 (scm_debug_opts): Change doc for 'cheap option to make clear that
1792 it is now obsolete.
1793 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1794 making trap calls, and implement substitution of eval expressions
1795 and return values using the values that the trap call handlers
1796 return.
1797
1798 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1799
9a5fa6e9 18002005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
64cdbfc7
KR
1801
1802 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1803 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1804 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1805 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1806 scm_c_make_socket_address): New functions.
1807 * socket.h: Add prototypes.
1808
fc9f596c
KR
18092005-10-24 Kevin Ryde <user42@zip.com.au>
1810
1811 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1812 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1813 POSIX spec examples, the latter are not available on for instance
1814 NetBSD.
1815
1816 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1817 posix.texi.
1818
1819 * stime.c (scm_strftime): Update docstring from posix.texi.
1820
0460c6e1
MV
18212005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1822
1823 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
241d9cea 1824
0460c6e1
MV
1825 * null-threads.h, pthread-threads.h
1826 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1827 (scm_i_pthread_mutexattr_recursive): New.
1828
1829 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1830 (scm_i_critical_section_mutex): Do not initialize statically.
1831 (scm_threads_prehistory): Initialize
1832 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1833 here.
241d9cea 1834
0460c6e1
MV
1835 * eval.c (source_mutex): Do not initialiaze statically.
1836 (scm_init_eval): Do it here, using
1837 scm_i_pthread_mutexattr_recursive.
1838
7b4a9e52
MV
18392005-09-05 Marius Vollmer <mvo@zagadka.de>
1840
1841 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1842 New.
1843 (sym_reader): New.
1844 (scm_print_opts): Added "quote-keywordish-symbols" option.
1845 (quote_keywordish_symbol): New, for evaluating the option.
1846 (scm_print_symbol_name): Use it.
1847 (scm_init_print): Initialize new option to sym_reader.
241d9cea 1848
5defc05d
NJ
18492005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1850
1851 * eval.c (eval_letrec_inits): New.
1852 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1853
036482e9
MV
18542005-08-12 Marius Vollmer <mvo@zagadka.de>
1855
1856 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1857 Peter Gavin!
1858
5c347f8c
KR
18592005-08-12 Kevin Ryde <user42@zip.com.au>
1860
1861 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1862
bc721aa2
KR
18632005-08-06 Kevin Ryde <user42@zip.com.au>
1864
1865 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1866 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1867 scm_string_index, scm_string_index_right, scm_string_skip,
1868 scm_string_skip_right, scm_string_count, scm_string_map,
1869 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1870 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1871 procedures called in loops.
1872
126c81db
KR
18732005-08-02 Kevin Ryde <user42@zip.com.au>
1874
1875 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1876 avoid lots of copying where previoulsy growing by only 80 bytes at a
1877 time.
1878
7f278dc6
MV
18792005-08-01 Marius Vollmer <mvo@zagadka.de>
1880
1881 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1882 already have scm_lookup_closure_module, which does the same thing.
241d9cea 1883
cb5c4b07
MV
18842005-08-01 Marius Vollmer <mvo@zagadka.de>
1885
1886 New marking algorithm for weak hashtables that fixes the problem
1887 that references from the non-weak value to the associated weak
1888 key (for example) would prevent the entry from ever being dropped.
1889
1890 Guardians have been changed back to their original semantics and
1891 are no longer greedy and no longer drop cycles.
241d9cea 1892
cb5c4b07
MV
1893 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1894 hashtable and guardian machinery but call the relevant functions
1895 directly.
1896
1897 * guardians.h, guardians.c, deprecated.h,
1898 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1899 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1900 Deprecated and moved into deprecated.[ch].
1901
1902 * guardians.h, guardians.c: Mostly rewritten.
1903 (scm_i_init_guardians_for_gc,
1904 scm_i_identify_inaccessible_guardeds,
1905 scm_i_mark_inaccessible_guardeds): New.
930888e8 1906 (scm_make_guardian): Removed greedy_p argument.
241d9cea 1907
cb5c4b07
MV
1908 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1909 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1910 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1911 (scm_weaks_prehistory): Removed.
1912 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1913 scm_i_mark_weak_vectors_non_weaks,
1914 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1915 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1916 scm_scan_weak_vectors): Removed.
241d9cea 1917
cb5c4b07
MV
1918 * hashtab.h (scm_i_scan_weak_hashtables): New.
1919 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1920 SCM_WVECTF_NOSCAN.
1921 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1922 t->n_items.
1923 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1924 to latter. Do not scan the alists themselves, this is done by the
1925 weak vector code now. Just update the element count.
1926
1927 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1928 to latter. The type is now only part of the cell word.
1929 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1930
1931 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1932
3e2073bd
MD
19332005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1934
1935 Some changes towards making it possible to run Guile on the EM64T
1936 platform.
1937
1938 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1939 mallocating for (unsigned long *bounds).
1940
1941 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1942 scm_t_bits before storing them in the type word.
241d9cea 1943
3e2073bd
MD
1944 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1945 scm_t_bits to int.
1946
e8ac8e75
KR
19472005-07-12 Kevin Ryde <user42@zip.com.au>
1948
1949 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1950 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1951 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1952 than scm_makfrom0str.
1953 Reported by Ken Raeburn.
241d9cea 1954
e8ac8e75
KR
1955 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1956 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1957 returning SCM_GC_CARD_BVEC.
241d9cea 1958
e8ac8e75
KR
1959 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1960 rather than latin-1 acute accent, the latter may not print on all
1961 terminals.
1962
1963 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1964 trailing deletions, so as to return a substring if those are the only
1965 changes.
1966
adc0677d
KR
19672005-07-10 Kevin Ryde <user42@zip.com.au>
1968
1969 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1970 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1971 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1972 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1973
8fecbb19
HWN
19742005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1975
1976 * gc-card.c (scm_i_card_statistics): init tag.
1977
1978 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1979
fc9c5d06
HWN
19802005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1981
8fecbb19
HWN
1982 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1983 string.
fc9c5d06 1984
08fce816
KR
19852005-06-25 Kevin Ryde <user42@zip.com.au>
1986
1987 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1988 last change, use plain copy-on-write substrings, the individual
1989 descriptions in the srfi don't mention shared storage (only the
1990 introduction does).
1991
1992 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1993 null-terminator, rather than mallocing a whole new block.
1994 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1995
fc4abd0e
MV
19962005-06-12 Marius Vollmer <mvo@zagadka.de>
1997
e3da8a30
MV
1998 * ramap.c (scm_array_index_map_x): First test for real arrays,
1999 then check for generalized vectors. This ensures that the
2000 generalized vector case need only work with zero-origin ranges.
12097c77
MV
2001 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
2002 to access the target array, making these functions work with all
2003 kinds of arrays, not just bit arrays.
e3da8a30 2004
fc4abd0e
MV
2005 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
2006 gh_list.c, gh_predicates.c: Deprecated everything.
2007
2008 * environments.c (environment_default_folder,
2009 environment_default_observer): Do not use gh_call3, gh_call1.
2010
e4da0740
HWN
20112005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
2012
2013 * modules.c (s_scm_eval_closure_module): new function. Return the
2014 module inside an eval-closure.
2015
2016 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
2017 table. This means that procedure properties are GC'd if the
2018 procedure dies.
2019
27667158
KR
20202005-06-11 Kevin Ryde <user42@zip.com.au>
2021
2022 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
2023 charset cases, count chars kept and build a string in a second pass,
2024 rather than using a cons cell for every char kept. Use a shared
2025 substring when nothing removed (such sharing is allowed by the srfi).
2026
8a00ba71
HWN
20272005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
2028
2029 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
241d9cea 2030 string, so live object stats can be sorted with string<?.
8a00ba71 2031
a677679f
MV
20322005-06-06 Marius Vollmer <mvo@zagadka.de>
2033
2ff668b0
MV
2034 * print.c (iprin1): When writing a string, collect all characters
2035 that can be printed directly into one call to scm_lfwrite.
2036 Previously, every character was output with its own call to
2037 write(2) on unbuffered ports.
2038
589f22f6
MV
2039 * eval.c (scm_eval_options_interface): Use
2040 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
2041 and SCM_CRITICAL_SECTION_END.
2042
a677679f
MV
2043 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
2044 check for generalized vectors. This ensures that the generalized
2045 vector case need only work with zero-origin ranges.
2046
f8cda9ee
KR
20472005-06-06 Kevin Ryde <user42@zip.com.au>
2048
2049 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
2050 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
2051 matched.
2052
cdac1be4
MV
20532005-06-05 Marius Vollmer <mvo@zagadka.de>
2054
6642f7ac
MV
2055 * eval.c: Added comment on how to make case 1.1 of
2056 r5rs_pitfall.test succeed.
2057
cdac1be4
MV
2058 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
2059
2060 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
241d9cea 2061
cdac1be4
MV
2062 * socket.c: Remove obsolete comment about socklen_t.
2063 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
241d9cea 2064
cdac1be4 2065 * numbers.h (isnan)[__MINGW32__]: Remove.
241d9cea 2066
cdac1be4
MV
2067 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
2068 DEFAULT_INCLUDES when cross compiling.
241d9cea 2069
cdac1be4
MV
2070 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
2071
a677679f 2072 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
cdac1be4
MV
2073 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
2074 from Jan's patch.)
241d9cea 2075
9e664475
MV
20762005-05-22 Marius Vollmer <mvo@zagadka.de>
2077
188d0c5e
MV
2078 * unif.c (scm_make_shared_array): Add old base to new base since
2079 scm_array_handle_pos does not include the base.
2080 (scm_aind): Likewise.
2081
9e664475
MV
2082 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
2083 output port.
2084
5a6d139b
NJ
20852005-05-12 Neil Jerram <neil@ossau.uklinux.net>
2086
2087 Mac OS X compile warning fixes, reported by Richard Todd.
241d9cea 2088
5a6d139b
NJ
2089 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
2090 that it is signed.
2091
2092 * strports.c (st_resize_port): Add unsigned char cast.
2093 (scm_mkstrport): Make read/write_buf cast unsigned.
2094
2095 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
2096
2097 * rdelim.c (scm_read_line): Initialize slen.
2098
2099 * load.c (scm_search_path): Remove weird >=1, and add
2100 parentheses to clarify conditions.
2101
2102 * hash.c (scm_hasher): Add const unsigned char cast.
2103
2104 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
2105
b01532af
NJ
21062005-05-11 Neil Jerram <neil@ossau.uklinux.net>
2107
9a5fa6e9 2108 Fix C99isms reported by Ludovic Courtès:
241d9cea 2109
b01532af
NJ
2110 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
2111 code.
2112
2113 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
2114 of code.
2115
2116 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
2117 of code.
2118 (scm_i_card_statistics): Add block for declarations of tag_as_scm
2119 and current.
2120
229a0710
NJ
21212005-05-10 Neil Jerram <neil@ossau.uklinux.net>
2122
2123 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
2124 compile warning reported by Werner Scheinast.
2125
645dd3fc
HWN
21262005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
2127
80038021
HWN
2128 * list.h: remove scm_list()
2129
645dd3fc
HWN
2130 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
2131 SCM_DEBUG_CELL_ACCESSES
2132 (FLUID_NEXT_LOC): idem.
2133
9a68a4a8
KR
21342005-04-30 Kevin Ryde <user42@zip.com.au>
2135
2136 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
2137 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
2138 zero when re==0 and im<0. Reported by Jean Crepeau.
2139
0640cdaa
KR
21402005-04-25 Kevin Ryde <user42@zip.com.au>
2141
2142 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
4d54ee35
KR
2143 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
2144 few sensible uses (like filling with a random number generator say),
2145 but has been allowed in the past and so should be kept.
0640cdaa 2146
c0b85e9c
KR
21472005-04-23 Kevin Ryde <user42@zip.com.au>
2148
2149 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
2150 scm_hash_fn_remove_x.
2151
2152 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
2153 the caller when cons* is reached through apply.
2154
2155 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
2156 list is called using apply, under the debugging evaluator.
2157 (scm_list): Remove.
2158
c51682b4
KR
2159 * list.c, list.h (scm_make_list): New code, moving make-list from
2160 boot-9.scm.
8cb2eff8 2161
c0575bde
KR
21622005-04-14 Kevin Ryde <user42@zip.com.au>
2163
2164 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
2165 converted from scheme code in boot-9.scm.
2166
47a298d9
KR
21672005-04-11 Kevin Ryde <user42@zip.com.au>
2168
2169 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
2170 Validate list argument, scm_string_append and scm_string_append_shared
2171 don't do that to their rest argument (in a normal build).
2172
8ea3dc2e
MV
21732005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2174
2175 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
2176 closure can not be stored since it is no longer valid at GC time.
2177 (make_hash_table): Initialize 'hash_fn' field.
2178 (scm_i_rehash): Only store hash_fn in hash table when closre is
2179 NULL.
2180 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
2181 non-NULL. Always use a NULL closure.
2182 (scm_hash_fn_create_handle_x): Also rehash when table contains too
2183 few entries.
241d9cea 2184
08d2020d
MV
21852005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2186
2187 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
2188 argument; always use scm_delq_x. The delete_fn function works on
2189 the handle, not the key, and it therefore makes no sense to make
2190 it configurable. Changed all callers.
2191 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
2192 (scm_hash_clear): Accept plain vectors as hashtables.
2193 (scm_delx_x): Removed.
241d9cea 2194
cb975c21
HWN
21952005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
2196
2197 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
2198 compatibility with gcc -std=c99.
2199
4c908f2c
MD
22002005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2201
2202 * async.h (scm_mask_ints): Removed left over reference to
2203 scm_root.
2204
2205 * threads.c: Removed fprintf debug statements.
241d9cea 2206
d193b04b
NJ
22072005-03-24 Neil Jerram <neil@ossau.uklinux.net>
2208
2209 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
2210
c29748cd
NJ
22112005-03-23 Neil Jerram <neil@ossau.uklinux.net>
2212
2213 * debug.c (scm_make_memoized): Remove unnecessary critical
2214 section, and simplify by using SCM_RETURN_NEWSMOB.
2215
e654b062
MD
22162005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2217
2218 * strings.h (SCM_STRING_UCHARS): Added missing argument.
2219
4bc6f1c6
KR
22202005-03-18 Kevin Ryde <user42@zip.com.au>
2221
2222 * arbiters.c (FETCH_STORE) [generic C]: Should be
9a5fa6e9 2223 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
4bc6f1c6 2224
f1531813
KR
22252005-03-13 Kevin Ryde <user42@zip.com.au>
2226
2227 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
2228 srfi-60.
2229
2230 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
2231 because OR-ing bits into a negative can reduce the value to an inum.
2232
2233 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
2234 casting inum to double since that can lose precision.
2235
a9fae247
MV
22362005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2237
2238 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
2239 (guilify_self_1): Initialize it.
2240
2241 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
2242 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
2243 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
2244 field.
2245 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
2246 recursively.
2247 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
2248 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
2249 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
2250 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
2251 scm_after_gc_c_hook here.
2252 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
2253 scm_after_gc_c_hook when a full GC has in fact been performed.
2254 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
2255
2256 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
2257 scm_gc_heap_lock.
2258
2259 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
2260 scm_gc_running_p while the scm_i_sweep_mutex is locked.
2261
2262 * inline.h (scm_cell, scm_double_cell): Do not check
2263 scm_gc_running_p, allocation during sweeping is OK.
2264
2265 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
2266 not set scm_block_gc.
2267
2268 * init.c (scm_i_init_guile): Do not set scm_block_gc.
2269
2270 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
2271 instead of scm_malloc. The latter can not be used during GC.
2272
d1c38e11
MV
22732005-03-09 Marius Vollmer <mvo@zagadka.de>
2274
2275 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
2276 years.
2277
99ec43c1
MV
22782005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2279
2280 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
2281 scm_gc_running_p. Sweeping can happen in parallel with
2282 allocation.
2283
2284 * inline.h: Updated comments for current threading implementation.
2285
2286 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
2287 (scm_i_thread): Removed unused signal_asyncs field.
2288 (threads_mark): Do not mark it.
2289 (guilify_self_1): Do not initialize it. Do initialize
2290 continuation_root field.
2291 (do_thread_exit): Do not remove thread from all_threads list.
2292 (on_thread_exit): Do it here, after leaving guile mode.
2293 (sleep_level): Removed.
2294 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
2295 returning. Do not support recursive sleeps.
2296 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
2297 entry. Do not support recursive sleeps.
2298
2299 * fluids.c (ensure_state_size, ensure_all_state_sizes,
2300 resize_all_states): Collapsed ensure_state_size and
2301 ensure_all_state_sizes into one function named resize_all_states.
2302 Allocate new vectors outside of single threaded region. Do only
2303 simple things inside that region.
2304 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
2305 while adding to the global lists.
241d9cea 2306
99ec43c1 2307
461f34aa
MV
23082005-03-08 Marius Vollmer <mvo@zagadka.de>
2309
2310 libltdl is no longer distributed. We expect it to be installed
2311 already.
241d9cea 2312
461f34aa
MV
2313 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
2314 (libguile_la_LIBADD): Removed @LIBLTDL@.
2315
4e047c3e
MV
23162005-03-07 Marius Vollmer <mvo@zagadka.de>
2317
2318 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
2319 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
2320 they also block/unblock execution of asyncs and call
2321 scm_async_click which is declared in async.h but threads.h can not
2322 include async.h since async.h already includes threads.h.
2323 (scm_i_critical_section_level): New, for checking mistakes in the
2324 use of the SCM_CRITICAL_SECTION_* macros.
2325 (scm_i_critical_section_mutex): Make it a recursive mutex so that
2326 critical sections can be nested.
2327
2328 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
2329 not zero.
241d9cea 2330
4e047c3e
MV
2331 * threads.h, threads.c (scm_frame_lock_mutex): New.
2332 (scm_frame_critical_section): Take mutex as argument.
2333 (framed_critical_section_mutex): New, used as default for above.
2334 (scm_init_threads): Initialize it.
2335 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
2336 scm_i_critical_section_mutex; both are initialized statically.
241d9cea 2337
4e047c3e
MV
2338 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
2339 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
b9d9ad3a
MV
2340 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
2341 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
4e047c3e
MV
2342
2343 * debug.c (scm_debug_options): Replace
2344 SCM_CRITICAL_SECTION_START/END with a frame and
2345 scm_frame_critical_section.
2346
2347 * continuations.c (scm_make_continuation): No longer a critical
2348 section.
2349 (scm_dynthrow): Abort when scm_i_critical_section_level is
2350 not zero.
241d9cea 2351
d0a45bff
MV
23522005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2353
db6673e5
MV
2354 * threads.c (scm_try_mutex): Renamed argument for consistency.
2355
d0a45bff
MV
2356 * root.c (scm_call_with_dynamic_root): New docstring.
2357
2358 * eval.c: Define _GNU_SOURCE.
2359
9de87eea
MV
23602005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2361
2362 Big merge from the mvo-thread-cleanup branch. The main changes
2363 are:
241d9cea 2364
9de87eea
MV
2365 - The dynamic roots functionality has been split into dynamic
2366 states and continuations barriers. Fluids have been
2367 reimplemented and can now be garbage collected.
241d9cea 2368
9de87eea
MV
2369 - Initialization of Guile now works in a multi-thread friendly
2370 manner. Threads can freely enter and leave guile mode.
2371
2372 - Blocking on mutexes or condition variables or while selecting
2373 can now be reliably interrupted via system asyncs.
2374
2375 - The low-level threading interface has been removed.
2376
2377 - Signals are delivered via a pipe to a dedicated 'signal delivery
2378 thread'.
241d9cea 2379
9de87eea
MV
2380 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
2381
2382 * throw.c (scm_handle_by_message): Exit only the current thread,
2383 not the whole process.
2384 (scm_handle_by_message_noexit): Exit when catching 'quit.
241d9cea 2385
9de87eea
MV
2386 * scmsigs.c (take_signal, signal_delivery_thread,
2387 start_signal_delivery_thread, ensure_signal_delivery_thread,
2388 install_handler): Reimplemented signal delivery as explained in
2389 the comments.
2390
2391 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
2392 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
2393 scm_i_sched_yield, scm_i_pthread_sigmask,
2394 SCM_I_PTHREAD_MUTEX_INITIALIZER,
2395 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
2396 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
2397 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
2398 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
2399 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
2400 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
2401 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
2402 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
2403 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
2404 scm_i_pthread_key_create, scm_i_pthread_setspecific,
2405 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
2406 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
2407 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
2408 when using pthreads.
2409 * null-threads.c, null-threads.h: Provide dummy definitions for
2410 the above symbols when not using pthreads.
241d9cea 2411
9de87eea
MV
2412 * modules.h, modules.c (scm_frame_current_module): New.
2413
2414 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
2415 instead of scm_internal_dynamic_wind.
2416
2417 * init.h, init.c (restart_stack, start_stack): Removed.
2418 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
2419 (scm_boot_guile_1): Removed.
2420 (scm_i_init_mutex): New.
2421 (really_cleanup_for_exit, cleanup_for_exit): New.
2422 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
2423 Moved around some init funcs. Call
2424 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
2425 with atexit.
241d9cea 2426
9de87eea
MV
2427 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
2428 Use "!scm_is_eq" instead of "!=".
2429
2430 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
2431 SCM_USE_COOP_THREADS): Removed.
2432
2433 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
2434 maintained. Unlock scm_i_sweep_mutex before running
2435 scm_after_gc_c_hook.
2436 (scm_permanent_object): Allocate outside of critical section.
2437 (cleanup): Removed.
241d9cea 2438
9de87eea
MV
2439 * fluids.h, fluids.c: Reimplemented completely.
2440 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
2441 SCM_FAST_FLUID_SET): Reimplemented as functions.
2442 (scm_is_fluid): New.
2443 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
2444 (scm_make_dynamic_state, scm_dynamic_state_p,
2445 scm_is_dynamic_state, scm_current_dynamic_state,
2446 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
2447 scm_c_with_dynamic_state, scm_with_dynamic_state,
2448 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
241d9cea 2449
9de87eea
MV
2450 * feature.c (progargs_fluid): New.
2451 (scm_program_arguments, scm_set_program_arguments): Use it instead
2452 of scm_progargs.
2453 (scm_init_feature): Allocate it. Also, only add "threads" feature
2454 when SCM_USE_PTHREAD_THREADS is true.
241d9cea 2455
9de87eea
MV
2456 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
2457 scm_make_rec_mutex, with all the consequences.
2458 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
2459 scm_internal_dynamic_wind. Handle dynamic states as second
2460 argument.
241d9cea 2461
9de87eea
MV
2462 * threads.h, threads.c (scm_internal_select): Renamed to
2463 scm_std_select and discouraged old name.
2464 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
2465 and scm_std_usleep.
2466 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
2467 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
2468 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
2469 SCM_THREAD_DATA): Removed.
2470 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
2471 (scm_i_thread): New.
2472 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2473 Use scm_assert_smob_type.
2474 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
2475 scm_thread_self, scm_thread_yield, scm_mutex_init,
2476 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
2477 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
2478 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
2479 scm_cond_init, scm_cond_destroy, scm_cond_wait,
2480 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
2481 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
2482 scm_thread_select): Removed. Replaced with scm_i_pthread
2483 functions as appropriate.
2484 (scm_in_guile, scm_outside_guile): Removed.
2485 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
2486 take a ticket.
2487 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
2488 New.
2489 (scm_i_frame_single_threaded): New.
2490 (scm_init_threads_default_dynamic_state): New.
2491 (scm_i_create_thread): Removed.
2492 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
2493 (scm_make_recursive_mutex): New.
2494 (scm_frame_critical_section): New.
2495 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
2496 latter, changed all uses.
2497 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
2498 scm_i_set_last_debug_frame): New, use them instead of scm_root
2499 stuff.
2500 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
2501 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
2502 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
2503 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
2504 (remqueue): Allow the removal of already removed cells. Indicate
2505 whether a real removal has happened.
2506 (scm_thread): Removed, replaced with scm_i_thread.
2507 (make_thread, init_thread_creatant): Removed.
2508 (cur_thread): Removed.
2509 (block_self, unblock_from_queue): New.
2510 (block, timed_block, unblock): Removed.
2511 (guilify_self_1, guilify_self_2, do_thread_exit,
2512 init_thread_key_once, init_thread_key,
2513 scm_i_init_thread_for_guile, get_thread_stack_base,
2514 scm_init_guile): New initialisation method.
2515 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
2516 thread creation.
2517 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
2518 "fair" to fat and implemented new semantics, including reliable
2519 interruption.
2520 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
2521 (scm_threads_mark_stacks): Explicitly mark handle.
2522 (scm_std_select): Allow interruption by also selecting on the
2523 sleep_pipe.
2524 (scm_i_thread_put_to_sleep): Handle recursive requests for
2525 single-threadedness.
2526 (scm_threads_prehistory, scm_init_threads): Put current thread
2527 into guile mode via guileify_self_1 and guileify_self_2,
2528 respectively.
2529
2530 * fluid.h (SCM_FLUIDP): Deprecated.
241d9cea 2531
9de87eea 2532 * coop-threads.c: Removed.
241d9cea 2533
9de87eea
MV
2534 * continuations.h, continuations.c (scm_with_continuation_barrier,
2535 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
2536 New.
2537
2538 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
2539 (async_mutex): New.
2540 (scm_async_click): Protected with async_mutex. Do not deal with
2541 signal_asyncs, which are gone. Set cdr of handled async cell to
2542 #f.
2543 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
2544 current sleep.
2545 (scm_system_async_mark_for_thread): Do not use scm_current_thread
2546 since that might not work during early initialization.
241d9cea 2547
9de87eea
MV
2548 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
2549 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
2550 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
2551 and SCM_CRITICAL_SECTION_END.
2552 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
2553 SCM_CRITICAL_SECTION_START/END.
241d9cea 2554
9de87eea
MV
2555 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
2556 (libguile_la_SOURCES): Added null-threads.c
2557 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
2558 threads-plugin.c.
2559 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
2560
2561 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
2562 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
2563 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
2564 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
2565 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
2566 scm_make_root): Removed or deprecated. Replaced with references
2567 to the current thread, dynamic state, continuation barrier, or
2568 some fluid, as appropriate.
2569 (root_mark, root_print): Removed.
2570 (scm_internal_cwdr): Reimplemented guts with
2571 scm_frame_current_dynamic_state and
2572 scm_i_with_continuation_barrier.
2573 (scm_dynamic_root): Return current continuation barrier.
241d9cea
NJ
2574
2575
ad3d5a65
MV
25762005-02-28 Marius Vollmer <mvo@zagadka.de>
2577
2578 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
2579 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
2580 cleanliness.
2581 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
2582 IP_DROP_MEMBERSHIP.
2583 Thanks to Greg Troxel!
2584
73a90115
MD
25852005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2586
2587 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
2588 block.
2589
5d2cb3ab
MV
25902005-02-25 Marius Vollmer <mvo@zagadka.de>
2591
2592 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
2593 so that no two weak alist vectors share a spine.
2594 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
2595 during GC before inserting the new alist cell.
2596
838c4126
MV
25972005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2598
2599 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
2600 the hashtable.
2601 (scm_hash_fn_create_handle_x): Likewise.
2602 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
241d9cea 2603
29fed193
MD
26042005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2605
2606 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
2607 the prototypical examples mentioned in the old reference manual.
2608 Instead keep the old semantics of dispatching on type. (Yes, this
2609 is extremely ugly, but the whole point of keeping the deprecated
2610 interface is not to break old code.)
2611
9cc49060
MD
26122005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2613
2614 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
2615 scm_i_array_dims.
2616
8447f463
KR
26172005-01-28 Kevin Ryde <user42@zip.com.au>
2618
2619 * numbers.c (scm_ash): Rewrite using shifts, much faster than
2620 integer-expt and multiply/divide. Inexacts and fractions no longer
2621 supported (they happened to work before for left shifts, but not
2622 right). Don't really need inexacts and fractions, since ash is
2623 documented as a "bitwise operation", and all the rest of those only
2624 take exact integers.
2625
1367aa5e
HWN
26262005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
2627
856fca7e
HWN
2628 * gc-card.c (scm_i_card_statistics): map structs, closures and
2629 subrs to one tag.
2630
1367aa5e 2631 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
856fca7e 2632 (tag_table_to_type_alist): ignore unknown types.
1367aa5e
HWN
2633
2634 * gc-segment.c (scm_i_all_segments_statistics): new function.
2635 (scm_i_heap_segment_statistics): new function
2636
2637 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
2638 statistics on the number of live objects of each type.
2639
2640 * gc-card.c (scm_i_tag_name): new function.
241d9cea 2641 (scm_i_card_statistics): new function.
1367aa5e 2642
333db3b8
KR
26432005-01-24 Kevin Ryde <user42@zip.com.au>
2644
2645 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
2646 POSIX and C99 don't document errno being set. Reported by Bruno
2647 Haible.
2648 (scm_flock): Update docstring from manual.
2649
8447f463
KR
2650 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
2651 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
2652 a 64-bit system.
2653
2654 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
2655 sa_handler, needs to be a long on 64-bit systems where int is only 32
2656 bits.
2657
88f59e53
MV
26582005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2659
0eeb2611
MV
2660 * environments.c (obarray_enter, obarray_replace): Call
2661 SCM_HASHTABLE_INCREMENT when adding a new entry.
2662
88f59e53
MV
2663 * objects.c: Include goops.h for the scm_class_of prototype.
2664
2665 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
2666 sizes to be smaller than the maximum lengths of vectors.
2667
219b2868
MV
26682005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2669
2670 * ports.c, smob.c: Include "libguile/goops.h".
2671
2672 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
2673 scm_class_char, scm_class_pair, scm_class_procedure,
2674 scm_class_string, scm_class_symbol,
2675 scm_class_procedure_with_setter, scm_class_primitive_generic,
2676 scm_class_vector, scm_class_null, scm_class_real,
2677 scm_class_complex, scm_class_integer, scm_class_fraction,
2678 scm_class_unknown, scm_port_class, scm_smob_class,
2679 scm_no_applicable_method, scm_class_of): Moved from objects to
2680 goops since they are only useable once goops has been loaded.
2681 (scm_classes_initialized): Removed.
2682 (scm_class_of): Do not check it.
2683 (create_standard_classes): Do not set it.
241d9cea 2684
009c6b9c
MV
26852005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2686
50472546
MV
2687 * objects.h, objects.c (scm_classes_initialized): New.
2688 (scm_class_of): Signal error when scm_classes_initialized is zero.
2689 * goops.c (create_standard_classes): Set scm_classes_initialized
2690 to one.
241d9cea 2691
009c6b9c
MV
2692 * random.c (scm_random_solid_sphere_x): Use
2693 scm_c_generalized_vector_length instead of
2694 scm_uniform_vector_length.
2695
7719cbe9
MV
26962005-01-16 Marius Vollmer <mvo@zagadka.de>
2697
2698 * script.c (scm_compile_shell_switches): Removed debugging output.
2699
1ec44fed
KR
27002005-01-15 Kevin Ryde <user42@zip.com.au>
2701
2702 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
2703 docstrings from manual.
2704 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
2705
6e4cd850
MV
27062005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2707
0b5a0521
MV
2708 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
2709 its value.
2710
2711 Implement u64 and s64 uniform numeric vectors with bignums when
2712 scm_t_uint64 and scm_t_int64 are not available.
2713
2714 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2715 scm_array_handle_u64_elements,
2716 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2717 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2718 is not available.
2719 (scm_take_s64vector, scm_array_handle_s64_elements,
2720 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2721 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2722 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2723 scm_t_int64/scm_t_uint64 are not available.
2724 (uvec_mark): New, to mark the bignums.
2725 (alloc_uvec): Initialize bignums.
2726 (uvec_fast_ref): Return bignums directly.
2727 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2728 assert_exact_integer): New.
2729 (uvec_fast_set): Use them to validate the bignums.
2730 (scm_init_srfi_4): Set mark function of smob when needed.
2731 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2732 scm_int64_max.
241d9cea 2733
6e4cd850 2734 Recognize 1.4 -e syntax.
241d9cea 2735
6e4cd850
MV
2736 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2737 (scm_compile_shell_switches): Use them to recognize and convert
2738 1.4 "-e" syntax.
241d9cea 2739
3b698afe
MV
27402005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2741
2742 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2743 deprecated features that once were macros but are now functions
2744 back into macros.
2745
d6dc83a9
MV
27462005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2747
49086691
MV
2748 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2749 * deprecation.c (scm_issue_deprecation_warning,
2750 scm_c_issue_deprecation_warning_fmt): Use it.
2751 (mode): Removed.
2752 (print_summary): New.
2753 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2754 mode.
241d9cea 2755
d6dc83a9 2756 Deprecated SCM_ARRAY* macros.
241d9cea 2757
d6dc83a9
MV
2758 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2759 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2760 version. Changed all uses.
2761 (scm_tc16_array, scm_i_tc16_array,
2762 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2763 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2764 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2765 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2766 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2767 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2768 SCM_ARRAY_V, SCM_I_ARRAY_V,
2769 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2770 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2771 scm_t_array, scm_i_t_array): Likewise.
2772 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2773 Moved from unif.h to unif.c.
2774 (scm_c_array_rank): New.
2775 (scm_array_rank): Reimplement using it.
241d9cea 2776
d6dc83a9
MV
2777 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2778 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2779 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
241d9cea 2780
dc91d8de
MV
27812005-01-11 Marius Vollmer <mvo@zagadka.de>
2782
2783 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2784 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2785 scm_c_generalized_vector_ref and scm_cvref, and
2786 scm_c_generalized_vector_set_x, respectively.
2787 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2788 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2789
2790 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2791 former to latter and made public. Changed all uses.
2792 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2793 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2794 (scm_i_shap2ra): New internal version of scm_shap2ra.
2795 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2796 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2797 (scm_ra_set_contp): Deprecated, changed all uses to
2798 scm_i_ra_set_contp.
2799 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
241d9cea 2800
66d33784
MV
28012005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2802
b06f099d
MV
2803 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2804 Trotts!
2805
5d35ad81
MV
2806 * unif.c (scm_list_to_typed_array): Allow the specification of the
2807 upper bound as well. This is needed for empty arrays.
2808 (l2ra): Give needed number of elements in error message.
2809 (scm_i_print_array): Print length information for arrays that need
2810 it.
2811 (scm_i_read_array): Parse it.
241d9cea 2812
66d33784
MV
2813 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2814 scm_i_object_chars, scm_i_object_length): Brought back from the
2815 dead.
2816
d7d7d401
MV
28172005-01-10 Marius Vollmer <mvo@zagadka.de>
2818
74c58fce
MV
2819 * ramap.c: Replaced single-index uses of scm_array_set_x with
2820 scm_c_generalized_vector_set_x.
2821
d7d7d401
MV
2822 * unif.c (scm_array_rank, scm_array_dimensions,
2823 scm_shared_array_offset, scm_shared_array_increments,
2824 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2825 to simplify code and make it more general.
2826 (scm_shared_array_root): Work with all kinds of arrays, including
2827 naked vectors.
2828 (indices_to_pos): New.
74c58fce
MV
2829 (scm_make_shared_array): Use it instead of scm_aind; use handle
2830 for oldra.
2831
4475d3fe
KR
28322005-01-10 Kevin Ryde <user42@zip.com.au>
2833
2834 * posix.c (scm_mkstemp): Update docstring from manual.
2835
d3ddc95e
KR
2836 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2837
8c8491f5
MV
28382005-01-09 Marius Vollmer <mvo@zagadka.de>
2839
b89ecc6f
MV
2840 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2841 scm_i_uniform_vector_set_proc): New.
2842 (u8ref, u8set, s8ref, s8set, etc): New.
2843 (uvec_reffers, uvec_setters): New.
2844 (uvec_to_list): Use generic scm_array_handle_ref instead of
2845 uvec_fast_ref since scm_array_handle_ref should be faster now.
8cb01d9f
MV
2846 (coerce_to_uvec, scm_c_uniform_vector_ref,
2847 scm_c_uniform_vector_set_x): Likewise.
241d9cea 2848
b89ecc6f
MV
2849 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2850 New.
2851 (scm_t_array_handle): Added ref, set, elements and
2852 writable_elements for fast inline operation of
2853 scm_array_handle_ref and scm_array_handle_set.
2854 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2855 and replaced with inline code that simply calls the ref/set
2856 members of the handle.
2857 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2858 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2859 New.
2860 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2861 and memoize_set.
2862 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2863 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2864 scm_bit_invert_x): Correctly multiply index with increment in the
2865 general case.
241d9cea 2866
8c8491f5
MV
2867 * unif.c (scm_array_handle_set): Correctly execute only one
2868 alternative. D'Oh!
2869 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2870 the array; this covers all cases with much simpler code.
241d9cea 2871
8c8491f5
MV
2872 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2873 as well.
2874
cd5d55c7
MV
28752005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2876
2877 * srfi-4.c (uvec_type): New.
2878 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2879 scm_c_uniform_vector_x): Use it to get concrete type.
2880
2881 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2882 fit the docs.
2883
2884 * unif.c (ra2l): Handle zero rank arrays.
2885 (scm_i_print_array): Print zero rank arrays specially.
2886 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2887 (scm_i_read_array): Allow zero rank arrays.
241d9cea 2888
a4aad74e
MV
28892005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2890
2891 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2892 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2893 and SCM_SET_HASHTAB_BUCKET.
2894
2895 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2896 Removed ref_stack field.
2897 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2898 of a print state. Use them everywhere instead of ref_stack.
241d9cea 2899
3a40d5e1 2900 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
241d9cea 2901
a4aad74e
MV
2902 * srfi-4.c: Include deprecation.h.
2903
2904 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2905 deprecated.c, eq.c
2906 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2907 (scm_vector_elements, scm_vector_writable_elements,
2908 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2909 unif.[hc].
2910 (SCM_SIMPLE_VECTOR_LOC): Removed.
2911 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2912 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2913 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2914 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2915 latter. Changed use in eq.c.
241d9cea 2916
f01fe441
MV
29172005-01-07 Marius Vollmer <mvo@zagadka.de>
2918
2919 Make the uniform vector routines also deal with one dimensional
2920 arrays.
241d9cea 2921
f01fe441
MV
2922 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2923 SCM_SMOB_PREDICATE in this file.
2924 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2925 of the right type.
2926 (scm_is_uniform_vector): Likewise.
2927 (uvec_fast_ref): Made BASE param const.
2928 (uvec_writable_elements, uvec_elements): New.
2929 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2930 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2931 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2932 arrays.
2933 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2934 argument convention.
2935 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2936 checking.
2937 (scm_uniform_vector_length): Use uvec_length.
241d9cea 2938
2aaf5726
MV
29392005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2940
2941 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2942 scm_c_uniform_vector_size): Removed.
2943 (scm_array_handle_uniform_element_size): New.
241d9cea 2944
2aaf5726
MV
2945
2946 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2947 type of POS parameter to be signed, positions can be negative.
2948 (scm_array_handle_release): New, changed all uses of
2949 scm_t_array_handle to properly call it.
2950 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2951 Renamed former to latter, changed all uses.
241d9cea 2952
34ae52fc
MV
29532005-01-05 Marius Vollmer <mvo@zagadka.de>
2954
2955 Updated bitvector routines to also use scm_t_array_handles.
241d9cea 2956
34ae52fc
MV
2957 * unif.h (scm_bitvector_elements,
2958 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2959 deliver offset, length and increment to caller. Changed all uses.
2960 (scm_bitvector_release_elements,
2961 scm_frame_bitvector_release_elements,
2962 scm_bitvector_release_writable_elements,
2963 scm_frame_bitvector_release_writable_elements): Removed.
2964 (scm_array_handle_bit_elements,
2965 scm_array_handle_bit_writable_elements,
2966 scm_array_handle_bit_elements_offset): New.
2967 (scm_make_typed_array): The special value for non-initialized
2968 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2969 was a valid value to fill bitvectors with, so it can't really be
2970 specialed out.
241d9cea 2971
c4cb7628
KR
29722005-01-04 Kevin Ryde <user42@zip.com.au>
2973
2974 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2975 Reported by Bill Schottstaedt.
2976
0356881d
MV
29772005-01-02 Marius Vollmer <mvo@zagadka.de>
2978
2979 * sort.c (quicksort): Added INC parameter for non-contigous
2980 vectors.
2981 (quicksort1): New, for contigous vectors. Both functions are
2982 generated from the same code by including "quicksort.i.c".
2983 (scm_restricted_vector_sort_x): Call one of quicksort and
2984 quicksort1, depending on increment of vector.
2985 (scm_sort): Simply call scm_sort_x on a copy of the list or
2986 vector.
2987 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2988 size_t, added inc parameter.
2989 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2990 so that it doesn't leak.
2991 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2992 list or vector.
241d9cea 2993
0356881d
MV
2994 * ramap.c (scm_array_map_x): Do not try to convert fill value
2995 before filling, any necessary conversion is done while storing.
2996
2997 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2998 doing it inline.
2999
3000 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
3001 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
3002 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
3003
3004 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
3005 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
3006 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
3007 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
3008 objects.c, ports.c, posix.c, print.c, random.c, read.c,
3009 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
3010 vector elements API or simple vector API, as appropriate. Removed
3011 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
3012 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
241d9cea 3013
0356881d
MV
3014 * srfi-4.h, srfi-4.c,
3015 srfi-4.i.c (scm_array_handle_uniform_elements,
3016 scm_array_handle_uniform_writable_elements,
3017 scm_uniform_vector_elements,
3018 scm_uniform_vector_writable_elements):
3019 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
3020 scm_t_array_handle, deliver length and increment.
3021 (scm_array_handle_<foo>_elements,
3022 scm_array_handle_<foo>_writable_elements): New.
241d9cea 3023
0356881d
MV
3024 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
3025 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
241d9cea 3026
0356881d
MV
3027 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
3028 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
3029 scm_array_handle_set, scm_array_handle_elements
3030 scm_array_handle_writable_elements, scm_vector_get_handle): New.
3031 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
3032 scm_dimensions_to_uniform_array): Deprecated for real.
3033 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
3034 snarfing wont allow a mismatch between C and Scheme arglists.
3035 (scm_make_shared_array, scm_enclose_array): Correctly use
3036 scm_c_generalized_vector_length instead of
3037 scm_uniform_vector_length.
241d9cea 3038
0356881d
MV
3039 * validate.h (SCM_VALIDATE_VECTOR,
3040 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
3041 of SCM_VECTORP.
3042
3043 * weaks.h, weaks.c: Use new internal weak vector API from
3044 vectors.h.
3045
3046 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
3047 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
3048 'extra' to being regular sources.
3049 (noinst_HEADERS): Added quicksort.i.c.
3050 * quicksort.i.c: New file.
3051
3052 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
3053 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
3054 and reimplemented. Replaced all uses with scm_vector_elements,
3055 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
3056 appropriate.
3057 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
3058 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
3059 SCM_SIMPLE_VECTOR_LOC): New.
3060 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
3061 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
3062 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
3063 Removed.
3064 (scm_vector_copy): New.
3065 (scm_vector_elements, scm_vector_writable_elements): Use
3066 scm_t_array_handle, deliver length and increment. Moved to
3067 unif.h. Changed all uses.
3068 (scm_vector_release_elements,
3069 scm_vector_release_writable_elements,
3070 (scm_frame_vector_release_elements,
3071 scm_frame_vector_release_writable_elements): Removed.
3072 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
3073 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
3074 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
3075 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
3076 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
3077 weak vectors.
3078
0336d18b
MV
30792004-12-29 Marius Vollmer <mvo@zagadka.de>
3080
3081 No longer use creators to specify the type of an array. Creators
3082 expose the fact that arrays are wrapped around vectors, but that
3083 might change.
241d9cea 3084
0336d18b
MV
3085 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
3086 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
3087 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
3088 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
3089 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
3090 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
3091 uvec_proc_vars): Removed.
3092 (scm_i_generalized_vector_creator): Removed.
3093 (scm_i_generalized_vector_type): New.
3094
3095 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
3096 scm_make_typed_array, scm_array_type, scm_list_to_array,
3097 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
3098 (scm_array_creator): Removed.
3099 (scm_array_p): Deprecated second PROT argument.
3100 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
3101 Deprecated, reimplemented in terms of scm_make_typed_array and
3102 scm_list_to_typed_array.
3103 (scm_i_proc_make_vector, scm_i_proc_make_string,
3104 scm_i_proc_make_bitvector): Removed.
3105 (type_creator_table, init_type_creator_table, type_to_creator,
3106 make_typed_vector): New.
3107 (scm_i_convert_old_prototype): Removed.
3108 (prototype_to_type): New.
3109 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
3110 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
3111 minor added clarity.
3112 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
3113 instead of scm_make_uve.
3114 (tag_creator_table, scm_i_tag_to_creator): Removed.
3115 (tag_to_type): New.
3116 (scm_i_read_array): Use scm_list_to_typed_array instead of
3117 scm_list_to_uniform_array.
241d9cea 3118
277e8472
MV
31192004-12-27 Marius Vollmer <mvo@zagadka.de>
3120
32b26202
MV
3121 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
3122 (scm_bitvector_writable_elements): New.
3123 (scm_bitvector_release, scm_bitvector_release_elements):
3124 Renamed former to latter. Added explicit call to
3125 scm_remember_upto_here_1.
3126 (scm_frame_bitvector_release,
3127 scm_frame_bitvector_release_elements): Renamed former to latter.
3128 (scm_bitvector_release_writable_elements,
3129 scm_bitvector_release_writable_elements): New.
3130 Changed all uses as required by the changes above.
3131
3132 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
3133 scm_u8vector_elements, etc): Made return value "const".
3134 (scm_uniform_vector_writable_elements,
3135 scm_u8vector_writable_elements, etc): New.
3136 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
3137 Renamed former to latter. Added explicit call to
3138 scm_remember_upto_here_1.
3139 (scm_frame_uniform_vector_release,
3140 scm_frame_uniform_vector_release_elements): Renamed former to latter.
3141 (scm_uniform_vector_release_writable_elements,
3142 scm_frame_uniform_vector_release_writable_elements): New. Takes
3143 crown of longest identifier yet.
3144 Changed all uses as required by the changes above.
241d9cea 3145
277e8472
MV
3146 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
3147 void.
3148 (scm_is_vector, scm_vector_p, scm_vector_length,
3149 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
3150 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
3151 scm_vector_move_left_x, scm_vector_move_right_x,
3152 scm_vector_fill_x): handle one-dimensional arrays.
32b26202
MV
3153 (scm_vector_elements, scm_vector_release_elements,
3154 scm_vector_frame_release_elements, scm_vector_writable_elements,
3155 scm_vector_release_writable_elements,
3156 scm_vector_frame_release_writable_elements): New.
3157 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
3158 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
277e8472
MV
3159
3160 * ramap.c (scm_ramapc, scm_raeql): Use
3161 scm_c_generalized_vector_length instead of
3162 scm_uniform_vector_length.
3163 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
3164 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
241d9cea 3165
49c51610
MV
31662004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3167
3168 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
3169 member for relocating debug frames.
3170 (scm_make_continuation): Set it.
3171
3172 * stacks.c (read_frame, read_frames, scm_make_stack,
3173 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
3174 of continuations instead of calculating the offset ourselves.
3175 Relocate 'vect' member of scm_t_debug_frame.
241d9cea 3176
3b2ee265
KR
31772004-12-16 Kevin Ryde <user42@zip.com.au>
3178
3179 * ramap.c (scm_array_map_x): Check for at least one source argument.
3180
e120686a
KR
31812004-12-14 Kevin Ryde <user42@zip.com.au>
3182
3183 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
3184 the C code so for the final call to the predicate procedure is a tail
3185 call, per SRFI-13 spec.
3186
680b5237
KR
31872004-12-10 Kevin Ryde <user42@zip.com.au>
3188
3189 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
3190 recent revision to the reference manual.
3191
3192 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
3193 with "%", C99 says it's well-defined.
3194
3195 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
3196 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
3197 bother trying to fit scm_from_ulong, not really worth the trouble if
3198 addresses are more than 4 bytes usually.
3199
446d320c
KR
32002004-11-30 Kevin Ryde <user42@zip.com.au>
3201
3202 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
3203 arm32. Reported by Greg Troxel.
3204
f2654760
MV
32052004-11-14 mvo <mvo@zagadka.de>
3206
3207 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
3208
3209 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
3210
d550e35f
MV
32112004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3212
3213 Enclosed arrays are now their own smob. This has been done to
3214 make the code more explicit about them and to prepare for the time
f2654760
MV
3215 when generalized vectors include arbitrary one-dimensional
3216 arrays. (Uptonow, enclosed arrays have been recognized by their
3217 use of an array as their storage 'vector'. When all generalized
3218 vectors are allowed as storage, including one-dimensional arrays,
3219 this will no longer work.)
241d9cea 3220
d550e35f
MV
3221 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
3222 New.
3223 (exactly_one_third, singp): Removed.
3224 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
3225 scm_shared_array_offset, scm_shared_array_increments): Handle
3226 enclosed arrays explicitely.
3227 (scm_array_rank): Likewise. Also, do not return zero for
3228 non-arrays, signal an error instead since arrays with rank zero do
3229 exist.
3230 (scm_i_make_ra): New, for specifying the tag of the new array.
3231 (scm_make_enclosed_array): Use it.
3232 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
3233 (scm_make_shared_array): Use scm_c_generalized_vector_length
3234 instead of scm_uniform_vector_length.
3235 (scm_array_in_bounds_p): Rewritten to be much cleaner.
3236 (scm_i_cvref): New, doing the job of scm_cvref.
3237 (scm_cvref): Use scm_i_cvref.
3238 (scm_array_ref): Do not accept non-arrays when no indices are
3239 given. Use scm_i_cvref to do the actual access.
3240 ("uniform-array-set1"): Do not register.
3241 (scm_array_set_x, scm_uniform_array_read_x,
3242 scm_uniform_array_write): Handle enclosed arrays explicitly.
3243 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
3244 handle enclosed arrays.
3245 (scm_array_to_list): Handle enclosed arrays explicitly.
3246 (rapr1): Removed.
3247 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
3248 enclosed arrays.
3249 (scm_i_print_enclosed_array): New.
3250 (tag_proto_table, tag_creator_table): Renamed former to latter.
3251 Added "a" and "b" for strings and bitvectors, resp.
3252 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
3253 latter. Tag "a" is in the table now, no need to handle it as a
3254 legacy tag.
3255 (scm_raprin1): Just call scm_iprin1.
3256 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
3257 explicitly.
3258 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
3259 Use scm_i_print_array as printer for scm_tc16_array.
241d9cea 3260
2ed34885
MV
32612004-11-10 Marius Vollmer <mvo@zagadka.de>
3262
823086c1
MV
3263 * ramap.c (cind): Changed second arg to be pointer to long instead
3264 of uniform vector.
3265 (scm_ramapc): Allocate index vector with scm_malloc and not as
d550e35f 3266 uniform vector. Wrap it in a frame so that it gets properly freed.
823086c1
MV
3267 (scm_array_index_map_x): Likewise.
3268
3269 * unif.c: Changed all uses of scm_array_prototype to
3270 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
3271 prototype is known.
3272 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
3273 in terms of scm_uniform_vector_read_x and
3274 scm_uniform_vector_write, respectively. Strings and
3275 bitvector support has been dropped.
241d9cea 3276
2ed34885
MV
3277 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
3278 needed files directly. Include config.h, <unistd.h> and <io.h>
3279 when available.
3280 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
3281
2c72f253
MV
32822004-11-09 Marius Vollmer <mvo@zagadka.de>
3283
3284 * gh_data.c (gh_uniform_vector_length): Properly use
3285 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
3286
3cc0a296
MV
32872004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3288
3289 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
3290 New.
3291 (scm_i_uniform_vector_creator): Removed.
3292 (scm_i_generalized_vector_creator): New.
3293 (scm_uniform_vector_length, scm_uniform_element_size): Do not
3294 handle generalized vectors, only uniform numeric vectors.
3295 (alloc_uvec): Do length check here...
3296 (make_uvec): ...but not here.
3297 (coerce_to_uvec): Use new generalized vector functions to handle
3298 all kinds of vectors in one go.
241d9cea 3299
3cc0a296
MV
3300 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
3301 remaining scm_tc7_unused tags to get a neatly ordered list.
3302
3303 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
3304 longer handle scm_tc7_bvect bitvectors.
3305
3306 * ramap.c: Use the new generalized vector functions to handle all
3307 vector like things.
3308
3309 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
3310 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
3311 scm_generalized_vector_length, scm_generalized_vector_ref,
3312 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
3313 scm_is_generalized_vector, scm_c_generalized_vector_length,
3314 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
3315 New.
241d9cea 3316
3cc0a296
MV
3317 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
3318 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
3319 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
3320 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
3321 scm_c_bitvector_length, scm_c_bitvector_ref,
3322 scm_c_bitvector_set_x, scm_bitvector_elements,
3323 scm_bitvector_release, scm_frame_bitvector_release,
3324 scm_tc16_bitvector, bitvector_free, bitvector_print,
3325 bitvector_equalp, count_ones, find_first_one): New.
3326 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
3327 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
3328 using the new C API for bitvectors and maybe count_ones or
3329 find_first_one, as appropriate.
3330 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
3331 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
3332 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
3333 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
3334 new functions from above.
3335 (scm_i_proc_make_vector, scm_i_proc_make_string,
3336 scm_i_proc_make_bitvector): Made non-static for use in
3337 scm_i_generalized_vector_creator.
3338 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
3339 (scm_make_uve): Validate that the created object is a generalized
3340 vector.
3341 (scm_i_legacy_tag): Removed.
3342 (scm_i_print_array): Do it here.
3343 (scm_raprin1): Only print enclosed arrays.
3344
3345 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
3346
c24d026b
MV
33472004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3348
1f2328fe
MV
3349 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
3350 added portability.
3351
3352 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
3353 for "space". Thanks to Bruce Korb!
3354
c24d026b
MV
3355 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
3356 only after dest has been set. Thanks to Hyper Division!
3357
3358 * gh_data.c (gh_uniform_vector_length): Use
3359 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
3360
d4ea47c8
MV
33612004-11-03 Marius Vollmer <mvo@zagadka.de>
3362
3363 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
3364 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
3365 SCM_SET_UVECTOR_LENGTH): Removed.
3366
236288e2
MV
33672004-11-02 Marius Vollmer <mvo@zagadka.de>
3368
9a5fa6e9 3369 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
236288e2
MV
3370 Thanks!
3371
3372 * backtrace.c (scm_display_backtrace_with_highlights): Join the
3373 first and the second line of the SCM_DEFINE macro call, since old
3374 preprocessors cannot handle definitions that are split into two
3375 lines.
3376
3377 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
3378 declarations.
3379
3380 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
3381 scm_t_uint32 to fix the mismatch between the function declaration
3382 and definition.
3383
3384 * sort.c (quicksort): Don't use C99 variable declarations.
3385
3386 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
3387 SCM_BOOL_F if no type matches.
3388
3389 * threads.c (thread_print): Cast a pointer to size_t when printing
3390 with scm_uintprint.
3391
3392 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
3393 defined.
3394 (scm_array_prototype): Deprecated.
3395
f738b51d
MV
33962004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3397
5d1015ec
MV
3398 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
3399 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
3400 more efficient access to the u32vector.
241d9cea 3401
034486df
MV
3402 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
3403 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
3404 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
3405
3406 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
3407 instead of the old-style dvectors.
3408
3409 * gh_data.c: Use new-style uniform arrays in place of old-style
3410 ones.
3411
3412 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
3413 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
3414
3415 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
3416 instead of old-sytle uvectors.
241d9cea 3417
034486df
MV
3418 * convert.c, convert.i.c: Rewritten completely, using
3419 scm_any_to_u8vector, etc and other new-style uniform vector
3420 functions.
3421
3422 * random.c (scm_random_solid_sphere_x,
3423 scm_random_hollow_sphere_x): Do not validate vector argument, this
3424 is already done elsewhere.
3425
3426 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
3427 scm_any_to_u8vector, etc): New.
3428 (scm_uniform_element_size, scm_uniform_vector_length): Do no
3429 longer handle old-style uniform vectors.
3430
f738b51d
MV
3431 * read.c (scm_lreadr): Bugfix: include the last bit in the
3432 bit vector.
3433
5e9c05a1
MV
34342004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3435
327114a2
MV
3436 * unif.h, unif.c (scm_array_creator): New.
3437 (scm_i_get_old_prototype): New.
3438 (scm_array_prototype): use it to return old-style prototype, never
3439 return creators.
3440 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
3441 arg of SCM_UNDEFINED. The latter is wrong.
241d9cea 3442
5e9c05a1
MV
3443 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
3444 (make_uve): Removed.
3445 (scm_i_proc_make_vector, scm_i_proc_make_string,
3446 scm_i_proc_make_u1vector): New.
3447 (scm_init_unif): Initialize them.
3448 (scm_i_convert_old_prototype): New.
3449 (scm_make_uve): Use it to get the creator procedure. Removed all
3450 old code that created old-style uniform vectors.
3451 (scm_array_p): Handle generic vectors.
3452 (scm_dimensions_to_uniform_array): Do not fill new array with
3453 prototype when that is a procedure.
3454 (scm_list_to_uniform_array): Also accept a list of lower bounds as
3455 the NDIM argument.
3456 (scm_i_print_array): Print rank for shared or non-zero-origin
3457 vectors.
3458 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
3459 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
3460 which I do not understand yet.
3461 (scm_array_prototype): Explicitely handle generic vectors.
327114a2 3462
5e9c05a1
MV
3463 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
3464 (iflo2str): Use icmplx2str for complex numbers.
3465
3466 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
3467 scm_i_uniform_vector_prototype): Removed.
3468 (scm_i_uniform_vector_creator): New.
3469 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
3470 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
3471 Updated all tables and generic functions to support them.
3472 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
3473 (scm_init_srfi_4): Initialize them.
241d9cea 3474
5e9c05a1
MV
3475 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
3476 sizeof(CTYPE) as explained in the comment.
3477
3478 * read.c (scm_lreadr): Call scm_i_read_array for all characters
50472546 3479 following '#' that can start an array. Explicitely disambiguate
5e9c05a1
MV
3480 'i' and 'e' between introducing numbers and uniform vectors. Do
3481 not call scm_i_read_homogenous_vector, since that is also handled
3482 by scm_i_read_array now.
3483
f984af07
MV
34842004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3485
3486 First cut at integrating uniform vectors from srfi-4 with the rest
3487 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
3488 vector. The plan is to gradually replace one type after the other
3489 until none is left and then to consider general cleanups and
3490 optimizations.
241d9cea 3491
f984af07
MV
3492 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
3493
3494 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
3495 scm_uniform_vector_ref, scm_uniform_vector_set_x,
3496 scm_uniform_vector_to_list, scm_is_uniform_vector,
3497 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
3498 scm_uniform_vector_elements, scm_uniform_vector_element_size,
3499 scm_uniform_vector_release): New.
3500 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
3501 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
3502 from unif.h, unif.c and extended to handle both the old and new
3503 uniform vectors.
3504
3505 * tags.h (scm_tc7_byvect): Commented out.
3506
3507 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
3508 the former to the latter.
3509 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
3510 srfi-4.h, srfi-4.c.
3511 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
3512 (scm_array_p, scm_array_rank, scm_array_dimensions,
3513 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
3514 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
3515 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
3516 vectors. Removed code for scm_tc7_byvect.
3517 (scm_dimensions_to_uniform_array): Fill array with 0 when
3518 prototype is #\nul.
3519 (scm_i_print_array_dimension, scm_i_legacy_tag,
3520 scm_i_print_array): New.
3521 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
3522 for scm_tc7_byvect.
3523
3524 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
3525 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
3526 uniform vectors. Removed code for scm_tc7_byvect
3527
3528 * print.c (iprin1): Removed code for scm_tc7_byvect.
3529 * objects.c (scm_class_of): Likewise.
3530 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
3531 * gc-card.c (scm_i_sweep_card): Likewise.
3532 * evalext.c (scm_self_evaluating_p): Likewise.
3533 * eq.c (scm_equal_p): Likewise.
3534
3535 * gh_data.c (gh_chars2byvect): Reimplemented with
3536 scm_make_s8vector.
3537 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
3538
3539 * srfi-4.c (take_uvec): New.
3540 (alloc_uvec): Use it.
3541 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
3542
3543 * random.c (vector_scale, vector_scale_x): Renamed former to the
3544 latter, since it modifies its argument.
3545 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
3546 Do not use scm_universal_vector_length for non-uniform vectors.
3547 Use scm_f64vector_elements to access innards of uniform vectors.
3548
3549 * convert.i.c: Convert srfi-4 style uniform vectors when
3550 requested.
3551 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
3552 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
241d9cea 3553
79d52182
MV
35542004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3555
3556 * numbers.h, numbers.c (scm_i_print_double): New.
3557
3558 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
3559 ../srfi/ but heavily modified.
3560 * Makefile.am: Add them in all the right places.
3561 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
3562 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
3563 '#u', and '#s'.
3564
3565 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
3566 and made non-static. Changed all uses.
3567
6191ccec
MV
35682004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3569
e64e80b0
MV
3570 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
3571 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
3572 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
3573 scm_uintprint to print unsigned integers, raw heap words, and
3574 adresses, using a cast to scm_t_bits to turn pointers into
3575 integers.
3576
3577 * unif.c: Include "libguile/print.h".
3578
c90ac3a8
MV
3579 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
3580 scm_t_intmax values.
3581 (scm_uint2str): New, for scm_t_uintmax.
3582 (scm_iint2str): Argument type changed to scm_t_intmax,
3583 reimplemented in terms of scm_uint2str.
241d9cea 3584
c90ac3a8
MV
3585 * print.c, print.h (scm_uintprint): New, for printing
3586 scm_t_uintmax values.
3587 (scm_intprint): Argument type changed to scm_t_intmax.
241d9cea 3588
77c2594f
MV
3589 * sort.c (quicksort, scm_merge, scm_merge_list_x,
3590 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
3591 strategic places so that the loops can be interrupted.
3592
6191ccec
MV
3593 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
3594 "-I$(top_srcdir)/libguile-ltdl".
3595 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
3596 "../libguile-ltdl/libguile-ltdl.a".
241d9cea 3597
6191ccec
MV
3598 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
3599 all references to scm_lt_* with just lt_*. Include <ltdl.h>
3600 instead of <libguile-ltdl.h>.
3601
77600f3e
MV
36022004-10-20 Marius Vollmer <mvo@zagadka.de>
3603
3604 * sort.c (quicksort): Copy pivot out of the array while
3605 constructing the partitions; it could get overwritten otherwise.
3606 Because of the ultimate insertion sort, this bug did not cause
3607 quicksort to fail, it just put all the burdon on the insertion
3608 sort and was thus very slow. Thanks to Rolan Orre for reporting
3609 the slowness!
241d9cea 3610
5000379b
MV
36112004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3612
192cd792
MV
3613 * numbers.c (scm_i_range_error): New.
3614 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
241d9cea 3615 scm_out_of_range.
192cd792
MV
3616
3617 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
6191ccec 3618 endpos. State inclusiveness/exclusiveness of bounds in docstring.
192cd792
MV
3619
3620 * unif.c (scm_array_p): When no prototype is given, explicitely
3621 test for allowable types, do not simply return true. Thanks to
3622 Roland Orre for reporting this!
3623
5000379b
MV
3624 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
3625
3626 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
3627 segment to scm_max_segment_size.
3628
497eb0b7
HWN
36292004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
3630
1367aa5e
HWN
3631 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
3632
497eb0b7
HWN
3633 * inline.h (scm_double_cell): abort if GC running.
3634 (scm_cell): idem.
3635
aef0bdb4
MV
36362004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3637
3638 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
3639 pos == 0.
3640
3641 Keywords no longer store a 'dash symbol'. Instead, they store a
3642 symbol with their real name.
241d9cea 3643
aef0bdb4
MV
3644 * keywords.h, keywords.c, deprecated.h, deprecated.c
3645 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
3646 terms of scm_is_keyword and scm_keyword_dash_symbol.
241d9cea 3647
aef0bdb4
MV
3648 * keywords.h, keywords.c, discouraged.h, discouraged.c
3649 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
3650 scm_c_make_keyword): Discouraged.
3651
3652 * keywords.h, keywords.c (scm_symbol_to_keyword,
3653 scm_keyword_to_symbol): Implemented in C.
3654 (scm_is_keyword, scm_from_locale_keyword,
3655 scm_from_locale_keywordn): New.
3656
241d9cea 3657 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
aef0bdb4
MV
3658
3659 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
3660 scm_from_locale_keyword instead of scm_c_make_keyword.
3661
3662 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
3663 better error message.
3664
3665 * deprecated.c: Include discouraged.h and keywords.h.
3666
3667 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
3668 reading '#:' or ':'. See NEWS for consequences.
3669
818deb11
MV
36702004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3671
43c25626
MV
3672 * read.c (scm_lreadr): Revert change from 2004-09-22: string
3673 literals are now read-write again (until SCM_STRING_CHARS is
3674 removed).
3675
3676 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
3677 strings with an error message that blames SCM_STRING_CHARS.
3678
3679 * options.c (change_option_setting): Use scm_car instead of
3680 explicit type check plus SCM_CAR.
3681
3682 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
3683 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
3684 (scm_iprin1): Use them instead of the previoulsy hardcoded
3685 strings.
3686 (scm_init_print): Initialize them.
3687
3688 * backtrace.c (display_frame_expr): Do not remove control
3689 characters from the final string. Print it directly using
3690 scm_display.
3691
818deb11
MV
3692 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
3693 Thanks to Roland Orre!
3694
d748089e
KR
36952004-09-29 Kevin Ryde <user42@zip.com.au>
3696
3697 * regex-posix.c (scm_regexp_exec): Correction to last change, should
3698 be whole original string in match struct, not offsetted substring.
3699
0ff7e3ff
HWN
37002004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
3701
3702 * gc.c (scm_gc_unprotect_object): abort if called during GC.
3703
ad7de4b8
MV
37042004-09-24 Marius Vollmer <mvo@zagadka.de>
3705
2edf319f
MV
3706 * Makefile.am (EXTRA_DIST): Added gettext.h.
3707
d180337b
MV
3708 * smob.c, smob.h (scm_assert_smob_type): New.
3709
05d7cf89 3710 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
ad7de4b8
MV
3711 Include GUILE_CFLAGS.
3712 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3713 now.
3714 (libpath.h): Put GUILE_CFLAGS in the build-info.
241d9cea 3715
c9fedf8a
MV
37162004-09-23 Marius Vollmer <mvo@zagadka.de>
3717
3718 * print.h (scm_print_state): Added highlight_objects.
3719 * print.c (make_print_state, scm_free_print_state): Initialize it
3720 to SCM_EOL.
3721 (scm_iprin1): Wrap output in '{...}' when object is contained in
3722 highlight_objects.
3723
3724 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3725 scm_backtrace_with_highlights): New. Set highlight_objects of
3726 printstate.
241d9cea 3727
c9fedf8a
MV
3728 * error.c (scm_error_scm): Document new meaning of data/rest
3729 argument for out-of-range and wrong-type-arg errors.
3730 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3731 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3732 exception so that it gets highlighted in the backtrace.
3733 Don't talk about "argument" when not giving a position.
241d9cea 3734
c9fedf8a
MV
3735 * throw.c (handler_message): The rest argument is the fourth
3736 argument, not everything after the third. Call
3737 scm_display_backtrace_with_highlights, passing the rest argument
3738 when appropriate.
3739
d5ac9b2a
MV
37402004-09-22 Marius Vollmer <mvo@zagadka.de>
3741
3742 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3743 <bruno@clisp.org>:
3744
3745 * i18n.c: Handle --disable-nls (thanks Bruno).
3746
3747 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3748 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3749
3750 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3751 LC categories.
05d7cf89 3752 * posix.c (scm_setlocale): Use it.
d5ac9b2a
MV
3753
3754 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3755 scm_bind_textdomain_codeset): Make wrappers similar to C function
3756 they wrap.
3757
3758 * i18n.h: New file.
3759 * i18n.c: New file.
3760 * gettext.h: New file, taken from GNU gettext.
3761 * init.c: Include libguile/i18n.h.
3762 (scm_init_guile_1): Add call to scm_init_i18n().
3763 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3764 (DOT_X_FILES): Add i18n.x.
3765 (DOT_DOC_FILES): Add i18n.doc.
3766 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3767 (modinclude_HEADERS): Add i18n.h.
3768
d2e53ed6
MV
37692004-09-22 Marius Vollmer <mvo@zagadka.de>
3770
2cdfe016
MV
3771 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3772
d2e53ed6
MV
3773 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3774 discouraged.h. Replaced all uses with scm_is_pair.
3775 (SCM_I_CONSP): New name for SCM_CONSP.
3776
3777 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3778 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3779 scm_cadr, etc): New.
3780 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3781 uses with scm_is_null.
5dd82006 3782
d2e53ed6
MV
3783 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3784 instead of explicit code.
5dd82006 3785
5dfdf243
MV
37862004-09-22 Marius Vollmer <mvo@zagadka.de>
3787
b50c53e5
MV
3788 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3789 Reworded logic a bit so that #f is returned immediately when s1 is
3790 too short to contain s2.
3791
5dfdf243 3792 * regex-posix.c (scm_regexp_exec): Convert string to
05d7cf89 3793 zero-terminated locale string before matching against it.
5dfdf243
MV
3794
3795 * strings.h, strings.c (scm_substring_read_only,
3796 scm_c_substring_read_only, scm_i_substring_read_only): New.
3797 (RO_STRING_TAG, IS_RO_STRING): New.
241d9cea
NJ
3798 (scm_i_string_writable_chars): Bail on read-only strings.
3799
5dfdf243
MV
3800 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3801 literals, thus making them read-only as specified by R5RS.
3802
22ab5ba3
MV
38032004-09-22 Marius Vollmer <mvo@zagadka.de>
3804
3805 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3806 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3807
2663421c
MV
38082004-09-21 Marius Vollmer <mvo@zagadka.de>
3809
0d83cb90
MV
3810 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3811 numbers.c.
3812 (scm_to_mpz, scm_from_mpz): New.
9a5fa6e9 3813 Thanks to Andreas Vögele!
241d9cea 3814
2663421c
MV
3815 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3816 just on a line of its own.
3817
3818 * srfi-13.c (scm_string_any, scm_string_every,
3819 scm_string_tabulate, string_upcase_x, string_down_case_x,
3820 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3821 size_t instead of int for indices into strings. Make sure that no
9a5fa6e9 3822 over- or underflow occurs. Thanks to Andreas Vögele!
2663421c
MV
3823 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3824 indices, which can also be negative.
241d9cea 3825
b00b73f9
MV
38262004-09-20 Marius Vollmer <mvo@zagadka.de>
3827
3828 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3829
3830 * threads.c (scm_threads_mark_stacks): Call
3831 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3832 only used once.
3833
adba74f3
HWN
38342004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3835
05d7cf89 3836 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
adba74f3
HWN
3837 Bugfix: when subtracting unsigned values, make sure that result
3838 does not wrap.
3839
f6de32c8
KR
38402004-09-09 Kevin Ryde <user42@zip.com.au>
3841
3842 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3843 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
9a5fa6e9 3844 by Andreas Vögele.
f6de32c8 3845
e548be5f
MV
38462004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3847
eb8d0af1
MV
3848 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3849
e548be5f
MV
3850 * eq.c (real_eqv): Pretend that all NaNs are equal.
3851
3852 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3853
e7acba81
MV
38542004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3855
874fbad1
MV
3856 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3857 use size_t for some locals instead of int.
3858
e7acba81
MV
3859 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3860 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3861 (skip_scsh_block_comment): Use scm_input_error instead of
3862 scm_misc_error in case of EOF.
241d9cea 3863
5de12658
KR
38642004-09-07 Kevin Ryde <user42@zip.com.au>
3865
3866 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
3867 Bug report by Bill Schottstaedt.
3868
3869 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3870 column.
3871 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3872
3873 * posix.c (scm_access): Update docstring per manual.
3874
3875 * posix.c (scm_nice): Correction to error detection. Reported by
3876 Matthias Koeppe.
3877
3878 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3879 throw error before unlocking mutex with SCM_ALLOW_INTS.
3880
e227addf
KR
38812004-09-06 Kevin Ryde <user42@zip.com.au>
3882
3883 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3884 available. This also gets around CLK_TCK being absent when
3885 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3886
edea856c
SJ
38872004-09-03 Stefan Jahn <stefan@lkcc.org>
3888
3889 * threads.c (scm_threads_mark_stacks): Fixed local variable
3890 definitions.
3891
e7acba81 3892 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
3893 local variable definitions.
3894
3895 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3896 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
3897 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3898 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
3899 scm_makfrom0str().
3900
874fbad1 3901 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
3902 part.
3903
3904 * numbers.c (scm_init_numbers): Removed check_sanity() call
3905 inside GUILE_DEBUG. The function has been removed somewhen...
3906
3907 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3908 MinGW32 because it conflicts with its pthread headers.
3909
d9eb2d67
MV
39102004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3911
3912 * strings.c (SCM_STRINGP): Accept all strings.
3913 (SCM_STRING_CHARS): Reject shared substrings here.
3914
3915 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3916 the Copyright years.
3917
c495c342
KR
39182004-08-27 Kevin Ryde <user42@zip.com.au>
3919
3920 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3921 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3922 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3923
57aa5515
MV
39242004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3925
3926 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3927 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3928 scm_i_symbol_is_interned, scm_i_mem2symbol,
3929 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3930
ce25760f
MV
39312004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3932
19ff6ffc
MV
3933 * srfi-13.c: First cut at thread-safeness and proper use of
3934 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3935 been inserted. Made sure that no internal string pointer is used
3936 across a SCM_TICK or a possible GC.
241d9cea 3937
ce25760f
MV
3938 * script.c (scm_compile_shell_switches): Use
3939 scm_from_locale_string instead of scm_makfrom0str.
3940
3941 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3942 always been.
3943
c5080b51
MV
39442004-08-25 Marius Vollmer <mvo@zagadka.de>
3945
3946 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3947 strop.c.
3948
3949 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3950 * strop.h, strop.c: Removed, they are now empty.
3951 * Makefile.am: Updated for new and removed files.
241d9cea 3952
c5080b51
MV
3953 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3954 to scm_string_to_symbol.
3955
3956 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3957 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3958 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3959 charset instead of libc functions.
3960
3961 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3962 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3963 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3964 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3965 instead of explicit code.
241d9cea 3966
c5080b51
MV
3967 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3968 "srfi-13.h" instead of "strop.h".
3969
3970 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3971 scm_init_srfi_14. Do not call scm_init_strop.
3972
4b0d27f2
MV
39732004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3974
3975 * numbers.c (scm_inf_p): Synced docstring back from manual.
3976
3ece39d6
MV
39772004-08-22 Marius Vollmer <mvo@zagadka.de>
3978
3979 * strings.c (get_str_buf_start): New helper function.
3980 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3981 scm_i_string_char, scm_i_string_writable_chars): Use it.
3982 (scm_i_substring_copy): Make START argument optional for C
3983 callers, for upcoming SRFI-13 integration.
241d9cea 3984
3ece39d6
MV
39852004-08-21 Marius Vollmer <mvo@zagadka.de>
3986
3987 From Richard Todd, Thanks!
241d9cea 3988
3ece39d6
MV
3989 * script.c (scm_compile_shell_switches): added '-L' switch to add
3990 to the %load-path.
241d9cea 3991
5fa0939c
DH
39922004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3993
3994 * eval.c (unmemoize_exprs): When dropping internal body markers
3995 from the output during unmemoization, also drop those that are not
3996 immediately at the beginning of a body.
3997
2146fdeb
MV
39982004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3999
c1f54b3d
MV
4000 * eval.c (scm_lookupcar1): Report "Variable used before given a
4001 value" insetad of an "Unbound" one for variables that are found
4002 but still contain SCM_UNDEFINED.
2146fdeb
MV
4003
4004 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
4005 expects a null-terminated string in the locale encoding, but
4006 scm_i_string_writable_chars doesn't give that. Fixed by letting
4007 mkstemp modify a locale version of the tmpl argument and copying
4008 the result back into tmpl.
241d9cea 4009
2146fdeb
MV
4010 * strop.c (scm_substring_move_x): Store into str2, not str1.
4011
d4f76919
KR
40122004-08-20 Kevin Ryde <user42@zip.com.au>
4013
4014 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
4015 to modify the input string.
4016
b5247a6b
MV
40172004-08-19 Marius Vollmer <mvo@zagadka.de>
4018
4019 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
4020 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
4021 scm_c_symbol_length.
4022
f26b9395
MV
40232004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4024
4025 New string implementation, with copy-on-write strings and
4026 mutation-sharing substrings, and a new internal string API.
4027 Symbols can now share memory with strings.
241d9cea 4028
f26b9395
MV
4029 * tags.h (scm_tc7_stringbuf): New tag.
4030
4031 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
4032 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
4033 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
4034 uses.
4035 (scm_i_make_string, scm_c_make_string): New, to replace
4036 scm_allocate_string. Updated all uses.
4037 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
4038 SCM_STRING_LENGTH): Deprecated.
4039 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
4040 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
4041 Discouraged. Replaced all uses with scm_from_locale_string or
4042 similar, as appropriate.
4043 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
4044 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
4045 scm_substring_shared, scm_substring_copy): New.
4046
4047 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
4048 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
4049 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
4050 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
4051 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
4052 Deprecated.
4053 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
4054 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
4055 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
4056 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
4057 Updated all uses.
4058 (scm_gensym): Generate only the number suffix in the buffer, just
4059 string-append the prefix.
4060
4061 * error.c (scm_memory_error): Do not try to throw, just abort.
4062 Throwing will not work anyway.
4063
4064 * gh.h, gh-data.c (gh_set_substr): Made src const.
4065
4066 * ports.c (scm_i_mode_bits_n): New, for counted strings.
4067 (scm_mode_bits): Use it.
4068 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
4069 a vector normally and fill that instead of consing a list with a
4070 blocked GC.
4071
4072 * read.c (scm_i_casei_streq): New, for counted strings.
4073
4074 * threads.c (gc_section_count): Removed, thread-sleeping can not
4075 be nested.
4076 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
4077 admin mutex so that we can be put to sleep by other threads while
4078 blocking on that mutex. Lock all the heap mutex of all threads,
4079 including ourselves.
4080 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
4081 call scm_i_enter_guile.
4082 (scm_thread_mark_stacks): Expect all threads to be suspended.
241d9cea 4083
f26b9395
MV
4084 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
4085 scm_gc_mallocated, for now.
4086 (scm_init_storage): Initialize it.
4087 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
241d9cea 4088
f26b9395
MV
4089 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
4090 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
4091 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
4092 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
4093
cd505b38
MV
4094 * strop.c (scm_string_copy): Use scm_c_substring to get a
4095 copy-on-write string.
4096
8a807b26
KR
40972004-08-18 Kevin Ryde <user42@zip.com.au>
4098
4099 * arbiters.c (FETCH_STORE): New macro.
4100 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
4101 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
4102 scm_try_arbiter and scm_release_arbiter.
4103 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
4104 for speed on i386, otherwise using mutex.
4105
4106 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
4107 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
4108 exact and inexact is #f.)
4109
4110 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
4111 to get thread safety of scm_ttyname.
4112
4113 * ports.c (ttyname): Remove prototype, unused.
4114
d6cd4c36 4115 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 4116 Reported by Michael Tuexen.
d6cd4c36 4117
fa0c0a4b
MV
41182004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4119
4120 * load.c (scm_init_load_path): Do not pass NULL to
4121 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
4122 not set. Thanks to Bill Schottstaedt.
4123
70f7ee41
MV
41242004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4125
4126 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
4127 locale strings instead of accessing their internals.
4128 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
4129 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
4130 SCM_STRING_CHARS and SCM_STRING_LENGTH.
241d9cea 4131
70f7ee41
MV
4132 * simpos.c (scm_system): Convert SCM strings to locale strings
4133 instead of accessing their internals.
4134
4135 * script.c (scm_compile_shell_switches): Convert version to locale
4136 string before printing it.
4137
4138 * rdelim.c (scm_read_delimited_x): Avoid
4139 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
4140 of scm_from_long for the returned number of read characters.
4141
4142 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
4143 scm_i_mode_bits to avoid accessing internals of SCM string from C.
4144
4145 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
4146 Use them instead of SCM_SYSCALL when one or two strings need to be
4147 converted into locale strings.
4148 (my_rename): New, gathers platform dependent code for renaming.
4149 (scm_rename): Use it.
4150 (scm_readlink, scm_copy_file): Convert SCM strings to locale
4151 strings instead of accessing their internals.
4152 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
4153 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
4154 SCM_STRING_LENGTH.
241d9cea 4155
70f7ee41
MV
4156 * extensions.c (load_extension): Convert lib and init to locale
4157 strings instead of accessing the internals directly.
4158 (scm_c_load_extension): Use scm_from_locale_string instead of
4159 scm_makfrom0str.
241d9cea 4160
70f7ee41
MV
4161 * fports.h, fports.c (scm_i_fdes_to_port): New, like
4162 scm_fdes_to_port, but take mode bits directly instead of as a C
4163 string.
4164 (scm_i_fdes_to_port): Implement using above.
4165 (scm_open_file): Use scm_i_fdes_to_port together with
4166 scm_i_mode_bits to avoid accessing internals of SCM string from C.
4167 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
4168 with scm_i_mode_bits to avoid accessing internals of SCM string
4169 from C.
4170
4171 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
4172 SCM string as argument.
4173
4174 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
4175 bits directly instead of C string.
4176 (scm_void_port): Implement using above.
4177 (scm_sys_make_void_port): Use scm_i_void_port together with
4178 scm_i_mode_bits to avoid accessing internals of SCM string.
241d9cea 4179
70f7ee41
MV
4180 * strings.h, strings.c (scm_i_get_substring_spec): New.
4181
4182 * socket.c, rw.c, deprecated.h, validate.h
4183 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
4184 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
4185 scm_to_locale_string, etc.
4186 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
4187 above, plus scm_i_get_substring_spec.
241d9cea 4188
70f7ee41
MV
4189 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
4190 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
4191 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
4192 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
4193 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
4194 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
4195 with more explicit scm_remember_upto_here_1, etc, or introduced
4196 them in the first place.
4197
4198 * posix.c (WITH_STRING): New helper macro. Use it where one
4199 locale string is needed for a short piece of code.
4200 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
4201 when one locale string is needed.
4202 (scm_mkstemp): Convert tmpl to a locale string.
4203 (scm_putenv): Rewritten to use only C strings.
4204 (scm_setlocale, scm_crpt): Convert argument strings to locale
4205 strings.
241d9cea 4206
70f7ee41
MV
42072004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4208
4209 * load.c (scm_primitive_load_path): Do not check for absolute
4210 filenames when scm_sys_search_load_path returns false, which will
4211 return absolute filenames unchanged.
4212
bb26cc2d
MV
42132004-08-11 Marius Vollmer <mvo@zagadka.de>
4214
4215 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
4216 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
4217 of an alist. Thanks to Matthias Koeppe!
4218
02573e4c
MV
42192004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4220
4221 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
4222 Moved from string.h to deprecated.h.
4223
4224 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
4225
f9751e86 4226 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
4227 SCM_I_MAKE_STRING_TAG, changed all uses.
4228 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
4229 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
4230 respectively. For a short time, the old names are still there as
4231 aliases. Not all uses have been changed yet, but the ones in
4232 strings.c have.
4233 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
4234 SCM_T_BITS_MAX.
4235 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
4236 scm_take_locale_string, scm_take_locale_stringn,
4237 scm_to_locale_string, scm_to_locale_stringn,
4238 scm_to_locale_stringbuf): New.
4239 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
4240 deprecated.[hc]. Implemented in terms of the new functions above.
4241 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
4242 scm_makfrom0str): Reimplemented in terms of the new functions from
4243 above. They will be discouraged shortly.
4244 (scm_substring): Do not use scm_mem2string.
4245 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
4246 to replace similar code from posix.c, simpos.c, and dynl.c.
4247 (scm_string_append): Use memcpy instead of explicit loop. Do not
4248 use register keyword. Use plain 'char' instead of 'unsigned
4249 char'.
241d9cea 4250
02573e4c
MV
4251 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
4252 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
4253
4254 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
4255 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4256 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
4257 not as a pointer. Use scm_remember_upto_here_1 to protect it.
4258
4259 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
4260 string. This avoids a conversion round-trip.
4261
4262 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
4263 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4264 SCM_I_STRING_LENGTH, respectively.
4265 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
241d9cea 4266
02573e4c
MV
4267 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
4268 of a string, call scm_display on the string itself.
4269
4270 * dynwind.c, dynwind.h (scm_frame_free): New.
4271
4272 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
4273 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
4274 Replaced uses of SCM_STRING_CHARS with proper uses of
4275 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
4276 Replaced scm_mem2string with scm_from_locale_string.
4277
4278 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
4279 Removed, replaced all uses with scm_i_allocate_string_pointers.
4280
4281 * load.h, load.c (scm_internal_parse_path): Removed.
4282 (scm_parse_path): Use scm_string_split to do the work.
4283 (scm_init_load_path): Use scm_parse_path instead of
4284 scm_internal_parse_path.
4285 (scm_search_path): Rewritten string handling part of the code in
4286 terms of scm_to_locale_stringbuf and so that it is thread safe.
4287
4288 * error.c (scm_error_scm): Throw directly instead of calling
4289 scm_error, this avoids the back and forth conversion of SUBR and
4290 MESSAGE and also plugs a memory leak.
4291 (scm_error): Call scm_error_scm.
241d9cea 4292
02573e4c
MV
4293 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
4294 (display_header): Print FNAME when it is true, not
4295 merely when it is a string.
4296
4297 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
4298 unceremoniously. They were unused by Guile itself, and external
4299 use should stop immediately.
241d9cea 4300
02573e4c 4301
409eb4e5
MV
43022004-08-10 Marius Vollmer <mvo@zagadka.de>
4303
4304 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
4305 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
4306 deprecated versions installed in deprecated.h and deprecated.c.
4307 Changed all uses.
241d9cea 4308
a00eaf19
RB
43092004-08-06 Rob Browning <rlb@defaultvalue.org>
4310
4311 * net_db.c (scm_resolv_error): don't cause an exception while
4312 trying to throw an exception -- call scm_misc_error with correct
4313 arguments. The previous arguments needed a format escape that
4314 wasn't in any of the format strings.
4315
bcb88c93
KR
43162004-08-06 Kevin Ryde <user42@zip.com.au>
4317
8f094b97
KR
4318 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
4319 so as not to depend on signedness of plain char. For byvect range
4320 check, throw out-of-range rather than wrong-type-arg.
4321
bcb88c93
KR
4322 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
4323 signed byte range checks by using scm_to_schar and scm_from_schar,
4324 don't want to depend on signedness of C char.
4325
29e61124
KR
43262004-08-05 Kevin Ryde <user42@zip.com.au>
4327
4328 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
4329 SCM_DEFER_INTS.
4330 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
4331 guaranteed if multiple threads compete to unlock.
4332 Update docstrings per doc/ref/api-scheduling.texi.
4333
99de794f
KR
4334 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
4335 stat on the filename, to be certain a file rename can't mean we get
4336 info on one filesystem object but open another. This fstat usage is
4337 similar to Emacs copy-file.
241d9cea 4338
29e61124
KR
4339 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
4340
4341 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
4342 SIGINT and SIGQUIT, since those values are ints.
4343
759aa8f9
MV
43442004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4345
7241f213
MV
4346 * num2integral.i.c, num2float.i.c: Removed.
4347 * Makefile.am (noinst_HEADERS): Updated.
4348
f9656a9f
MV
4349 * numbers.h. numbers.c (scm_make_ratio): Renamed to
4350 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
4351 (scm_complex_p): New, export as "complex?" to Scheme.
4352 (scm_number_p): Export as "number?" to Scheme.
4353 (scm_is_complex, scm_is_number): New.
4354 (scm_c_make_rectangular, scm_c_make_polar): New.
4355 (scm_make_rectangular, scm_make_polar): Use above.
4356 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
4357 New.
4358 (scm_make_complex): Discouraged by moving to discouraged.h and
4359 discouraged.c. Replaced all uses with scm_c_make_rectangular.
241d9cea 4360
759aa8f9
MV
4361 * discouraged.h, discouraged.c, numbers.c, numbers.h
4362 (scm_is_rational): New.
4363 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
4364 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
4365 Removed prototypes.
4366 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
4367 Discouraged by moving to discouraged.h and discouraged.c.
4368 Replaced all uses with scm_from_double.
4369 (scm_num2float, scm_num2double): Discouraged by moving prototype
4370 to discouraged.h and rewriting in terms of scm_to_double.
4371 Replaced all uses with scm_to_double.
4372 (scm_to_double): Do not implement in terms of scm_num2dbl, use
4373 explicit code.
4374 (scm_from_double): Do not implement in terms of scm_make_real, use
4375 explicit code.
241d9cea 4376
531bf3e6
MV
43772004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4378
759aa8f9
MV
4379 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
4380
531bf3e6
MV
4381 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
4382 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
4383
4384 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
4385 Renamed to SCM_I_* in order to avoid collisions with the versions
4386 defined in deprecated.h.
4387
4388 * discouraged.h, discouraged.c: New files.
4389
4390 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
4391 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
4392 deprecated to being discouraged by moving to discouraged.h.
4393
4394 * numbers.h, numbers.c, discouraged.h, discouraged.c
4395 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
4396 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
4397 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
4398 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
4399 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
4400 scm_num2ulong_long): Discouraged by moving to discouraged.h and
4401 discouraged.c and reimplementing in terms of scm_from_* and
4402 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
4403 functions.
4404
4405 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
4406 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
4407 scm_i_size2big, scm_i_ptrdiff2big): Removed.
241d9cea 4408 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
531bf3e6
MV
4409 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
4410 explicit code.
4411
5ec82e96
KR
44122004-08-02 Kevin Ryde <user42@zip.com.au>
4413
4414 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
4415 and current usage and migration.
4416
58f28989
KR
44172004-07-31 Kevin Ryde <user42@zip.com.au>
4418
4419 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
4420 it's not thread safe.
4421 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
4422 advantage of this.
4423 * fports.c (scm_open_file): Use scm_strerror likewise.
4424 * filesys.c (scm_stat, scm_lstat): Ditto.
4425
4426 * filesys.c (scm_copy_file): Avoid fd leak when destination file
4427 cannot be opened.
4428
4429 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
4430 update, for thread safety.
4431 (gensym_counter): Move into scm_gensym which is its only user.
4432 (scm_init_symbols): No need to explicitly initialize gensym_counter.
4433
03696aab
MV
44342004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4435
51fdb325
MV
4436 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
4437 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
4438 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
4439 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
4440 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
4441 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
4442 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
4443 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
4444 defined in terms of scm_to_signed_integer, etc, but in terms of
4445 scm_to_int8, etc.
4446
4447 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
4448
03696aab
MV
4449 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
4450 no longer used.
4451
4452 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
4453 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
4454
4455 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
4456 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
4457 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
4458 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
4459 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
4460 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
4461 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
241d9cea 4462
03696aab
MV
4463 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
4464 the functions below.
4465
4466 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
4467 conv-uinteger.i.c.
4468
4469 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
4470 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
4471 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
4472 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
4473 scm_from_uint64): Turned from macros into proper functions.
4474 (scm_to_signed_integer, scm_to_unsigned_integer,
4475 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
4476 conv-integer.i.c and conv-uinteger.i.c, as well.
241d9cea 4477
03696aab
MV
4478 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
4479 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
4480 the limits. Those are always defined.
241d9cea 4481
1f15779e
KR
44822004-07-29 Kevin Ryde <user42@zip.com.au>
4483
4484 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
4485
48360eb3
KR
44862004-07-28 Kevin Ryde <user42@zip.com.au>
4487
4488 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
4489 safety.
4490
c3f3c841
KR
4491 * unif.c (scm_array_set_x): For svect, use scm_num2short for
4492 consistency with other vector types and to get arg and func name into
4493 error message.
4494
c82f8ed6
MV
44952004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4496
4497 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
4498 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
4499 scm_from_bool, respectively.
4500 (SCM_NINUMP): Added.
241d9cea 4501
c82f8ed6
MV
4502 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
4503 deprecated.h. Replaced all uses with scm_is_eq.
4504
317b4c4a
KR
45052004-07-24 Kevin Ryde <user42@zip.com.au>
4506
4507 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
4508 * posix.c (scm_crypt): Use it to protect static data in crypt().
4509
e11e83f3
MV
45102004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4511
4512 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 4513 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
4514 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
4515 versions to deprecated.h and deprecated.c. Changed all uses to
4516 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
4517 scm_from_*, as appropriate.
4518
4519 * dynwind.c (scm_i_dowinds): Removed unused code that would call
4520 the unexisting scm_cross_dynwind_binding_scope for inums on the
4521 windlist.
241d9cea 4522
a55c2b68
MV
45232004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4524
4525 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 4526 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
4527 byte-wise address to a SCM integer. Changed all uses.
4528 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
4529 scm_to_ipv6 and added type and range checking, for converting from
4530 an IPv& byte-wise address to a SCM integer. Changed all uses.
4531 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
4532 is now done by scm_to_ipv6.
241d9cea 4533
a55c2b68
MV
4534 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
4535 not accept inexact integers.
4536
4537 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
4538 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
4539 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
4540 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
4541 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
4542 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
4543 fixnum/bignum distinction visible. Changed all uses to
4544 scm_to_size_t or similar.
4545
45462004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4547
4548 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
4549
48a06bd5
KR
45502004-07-10 Kevin Ryde <user42@zip.com.au>
4551
4552 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
4553 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
4554 such a size causes divide-by-zeros in scm_hasher.
4555
052fbfd9
KR
4556 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
4557 leak.
4558
43240c9c
MV
45592004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4560
4561 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
4562 Rewritten using the same logic as scm_to_signed_integer and
4563 scm_to_unsigned_integer, respectively, which is better(tm). Also,
4564 use CHAR_BIT instead of hardcoding 8.
4565 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
4566 SCM_I_LLONG_MIN etc. instead.
241d9cea 4567
43240c9c
MV
4568 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
4569 SCM_I_MAKINUM and changed all uses.
4570 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
4571
a3de8e7b
MV
4572 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
4573 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
4574 them by assuming twos-complement.
4575
c9eb03bb
MV
45762004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4577
4578 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
4579 configure now produces.
4580 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
4581 definitions, giving the limits of the integer types defined by
4582 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
4583 LLONG_MIN or LONG_LONG_MIN is hard to get at.
4584
4585 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
4586 SHORT_MIN.
4587 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
4588 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
4589 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
4590 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
4591 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
4592 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
4593 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
4594 scm_from_uintmax): New.
241d9cea 4595
7888309b
MV
45962004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4597
4598 * tags.h (scm_is_eq): New.
4599
4600 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
4601 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
4602 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
4603 scm_from_bool, and scm_is_bool, respectively.
4604
4605 * boolean.h (scm_is_bool): Fix bug in prototype.
4606 (scm_from_bool): The argument is "x" not "f", stupid.
4607
4608 * boolean.c (scm_is_bool): Fix typo.
4609
4610 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
4611 scm_is_unsigned_integer, scm_to_signed_integer,
4612 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
4613 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
4614 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
4615 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
4616 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
4617 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
4618 New.
241d9cea 4619
800570a6
MV
46202004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4621
4622 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
4623 scm_to_bool): New.
4624
9fcf3cbb
DH
46252004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4626
4627 * backtrace.c (display_expression, display_frame): Call
4628 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
4629 single memoized expression.
4630
4631 * debug.c (memoized_print): Don't try to unmemoize the memoized
4632 object, since we can't know whether it holds a single expression
4633 or a body.
4634
4635 (scm_mem_to_proc): Removed check for lambda expression, since it
4636 was moot anyway. Whoever uses these functions for debugging
4637 purposes should know what they do: Creating invalid memoized code
4638 will cause crashes, independent of whether this check is present
4639 or not.
4640
4641 (scm_proc_to_mem): Take the closure's code as it is and don't
4642 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
4643 memoized code should not be modified.
4644
4645 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
4646 scm_unmemoize from public use, but made scm_i_unmemoize_expr
4647 available as a guile internal function instead. However,
4648 scm_i_unmemoize_expr will only work on memoized objects that hold
4649 a single memoized expression. It won't work with bodies.
4650
4651 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
4652 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
4653 i. e. a list of expressions.
4654
4655 * eval.c (unmemoize_exprs): Drop internal body markers from the
4656 output during unmemoization.
4657
4658 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
4659 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
4660 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
4661 as guile internal functions instead. scm_i_unmemoize_expr will
4662 only work on a single memoized expression, while
4663 scm_i_unmemocopy_body will only work on bodies.
4664
90df793f
DH
46652004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4666
4667 * eval.c (unmemoize_exprs): Handle semi-memoized code.
4668
4669 (scm_cons_source, scm_primitive_eval): Prefer higher level
4670 predicate SCM_FALSEP over SCM_IMP.
4671
8048c00b
RB
46722004-06-15 Rob Browning <rlb@defaultvalue.org>
4673
4674 * script.c (scm_shell_usage): minor phrasing change.
4675
4676 * gc_os_dep.c: update ifdefery for macosx.
4677 (scm_get_stack_base): separate result initialization from
4678 declaration to slience warnings with macosx and hp-ux using gcc
9a5fa6e9 4679 3.3. Thanks to Andreas Vögele.
8048c00b 4680
d93294d4
HWN
46812004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
4682
4683 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
4684
212e58ed
DH
46852004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4686
4687 * list.[ch] (scm_i_finite_list_copy): New internal function to
4688 copy lists that are known to be finite (though not necessarily
4689 proper).
4690
4691 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
4692 a closure's argument list like an expression of a body.
4693
4694 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
4695 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
4696 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
4697 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
4698 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
241d9cea 4699 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
212e58ed
DH
4700 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
4701 unmemoize_builtin_macro): New static functions and symbols.
4702
4703 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
4704 now has a slightly different meaning: The memoized form that is
4705 receives as its argument is now interpreted as a sequence of
4706 expressions from a body.
4707
4708 (unmemocar, scm_unmemocar): Since the whole functionality of
4709 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4710 has its old content back and is deprecated, while unmemocar has
4711 been removed.
4712
4713 (SCM_BIT7): Removed.
4714
4715 (CEVAL): For unmemoizing a single expression, call
4716 unmemoize_expression instead of scm_unmemocopy, which now expects
4717 a sequence of body expressions. Eliminated unnecessary empty
4718 environment frame when executing let* forms. Eliminated
4719 unmemoization step from evaluator.
4720
9ccea370
MV
47212004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4722
4723 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4724 macroexp and made static. Added new version of scm_macroexp that
4725 emits a deprecation warning and then calls macroexp.
4726 (scm_m_undefine): Issue deprecation warning.
241d9cea 4727
57d23e25
DH
47282004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4729
4730 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4731 Modified to make set! work on symbols that represent syntactic
4732 keywords.
4733
141521ad
HWN
47342004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4735
4736 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4737 compound expression as lvalue errors.
4738
7c2f56a4
MV
47392004-05-24 Marius Vollmer <mvo@zagadka.de>
4740
4741 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4742 WINDER_DATA to a SCM.
4743
366ecaec
DH
47442004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4745
4746 * goops.c (compute_getters_n_setters, create_standard_classes,
4747 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4748 lambda expression rather than creating them with scm_closure.
4749
26ecfa39
DH
47502004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4751
4752 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4753 misplaced syntactic keywords. This will not work unless guile's
4754 defmacro feature is deprecated.
4755
4756 (scm_m_case): Fixed a bug that caused the list of labels to grow
4757 with every case form.
4758
f865229a
KR
47592004-05-19 Kevin Ryde <user42@zip.com.au>
4760
4761 * numbers.c (scm_round_number): For inum and big, just return x. For
4762 real, use scm_round for 2^54-1 etc problems covered there.
4763
4764 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4765 doesn't provide trunc. This was for when `truncate' was done as a
4766 scm_tc7_dsubr, no longer required.
4767
4768 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4769 to stack marking call, two parameters and no cast on t->base.
4770
63947c7a
MV
47712004-05-18 Marius Vollmer <mvo@zagadka.de>
4772
4773 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4774 processed hashtables back into the weak_hashtables list. Thanks
4775 to Bill Schottstaedt!
4776
e7313a9d
DH
47772004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4778
4779 * eval.c (unmemoize_quote): New static function.
4780
4781 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4782 representation of 'quote' and '@slot-ref' to an improper list.
4783 This reduces execution time, the number of cells used to hold the
4784 memoized code, and thus also reduces garbage collection time.
4785
4786 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4787
4788 (SCM_CEVAL): Changed macro handling to also work with macros that
4789 return improper lists. Added an assertion, that the code returned
4790 by a macro transformer will not lead to cycles in the memoized
4791 code.
4792
e5156567
DH
47932004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4794
4795 No functional change, just rearrangements of functions within the
4796 file.
4797
4798 * eval.c (scm_ilookup, scm_unbound_variable_key,
4799 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4800 the definitions used for execution, since that's where they will
4801 belong to later.
4802
651f07f8
DH
48032004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4804
4805 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4806 throughout guile, has not been part of an official release yet,
4807 and the concept of sloppy predicates has never been a good idea.
4808
4809 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4810 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4811 Simplified.
4812
770e048f
DH
48132004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4814
4815 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4816 to make explicit what happens.
4817
2ff08405
DH
48182004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4819
4820 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4821 explicit what happens.
4822
4823 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4824 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4825
89afb9cd
MV
48262004-05-11 Marius Vollmer <mvo@zagadka.de>
4827
4828 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4829 is indeed a procedure when it isn't a number.
4830
3d5ebfa9
MV
48312004-05-10 Marius Vollmer <mvo@zagadka.de>
4832
4833 Convert floating point numbers into strings with an arbitrary
4834 radix. Thanks to Richard Todd!
241d9cea 4835
3d5ebfa9
MV
4836 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4837 fit.
4838 (fx): Removed.
4839 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4840 number_chars): New, to support variable radices.
4841 (idbl2str): Use above instead of the old base-10 only tables.
4842 (iflo2str): Pass on new RADIX argument to idbl2str.
4843 (scm_number_to_string): Pass radix to iflo2str.
4844 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4845 iflo2str.
4846 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4847 possible radices.
4848
3ae69bb4
KR
48492004-05-10 Kevin Ryde <user42@zip.com.au>
4850
4851 * numbers.c (scm_logbit_p): Correction to test above the end of an
4852 inum. Reported by Jan Konecny.
4853
27968825
MV
48542004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4855
4856 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4857 scm_t_bits. Updated all users.
4858 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4859 duplicating the code.
4860 (SCM_CELL_OBJECT_LOC): New.
4861 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4862 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4863
4864 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4865 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4866 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4867 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4868 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4869 SCM_SMOB_OBJECT_3_LOC): New.
4870 * smob.c (scm_i_set_smob_flags): New function.
4871
4872 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4873 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4874 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4875 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4876 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4877 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4878
4879 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4880 taking the address of SCM_CELL_WORD_1, the latter being no longer
4881 an lvalue.
4882
4883 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4884 of casting SCM_CELL_WORD_LOC.
4885
3cf17ef0
KR
48862004-05-02 Kevin Ryde <user42@zip.com.au>
4887
37026925 4888 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
9a5fa6e9 4889 --disable-deprecated. Reported by Andreas Vögele.
37026925 4890
3cf17ef0 4891 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
9a5fa6e9 4892 particular on HP-UX). Reported by Andreas Vögele.
3cf17ef0 4893
c5854598
KR
4894 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4895 code has support for. Fixes building with AIX cc, which is ansi but
4896 doesn't define __STDC__. Reported by Keith Crane.
4897 (var_start): Remove macro, this variation no longer required.
4898 (scm_list_n): Use va_start directly.
4899
f26c1a32
KR
49002004-05-01 Kevin Ryde <user42@zip.com.au>
4901
4902 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
9a5fa6e9 4903 is now gone. Reported by Andreas Vögele.
f26c1a32 4904
dfa6017e
KR
49052004-04-28 Kevin Ryde <user42@zip.com.au>
4906
4907 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4908 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4909 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
9a5fa6e9 4910 subscript. Reported by Andreas Vögele.
dfa6017e
KR
4911 Also cast through unsigned char to avoid passing negatives to those
4912 macros if input contains 8-bit values.
4913
4914 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4915 corrections to range check for signed numbers. Remove
4916 scm_remember_upto_here_1(num) from these checks, since num is used
4917 subsequently anyway.
4918
4919 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4920 avoid warning from gcc 3.4. Reported by Hyperdivision.
241d9cea 4921
dfa6017e
KR
4922 * numbers.c (scm_bit_extract): Use min instead of MIN.
4923 (MIN): Remove, this conflicts with similar macro defined by limits.h
9a5fa6e9 4924 on HP-UX. Reported by Andreas Vögele.
dfa6017e
KR
4925
4926 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
9a5fa6e9 4927 particular on HP-UX). Reported by Andreas Vögele.
dfa6017e 4928
a0d06a00 4929 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
9a5fa6e9 4930 Reported by Andreas Vögele.
a0d06a00 4931
dfa6017e
KR
4932 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4933 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
9a5fa6e9 4934 by Andreas Vögele.
dfa6017e 4935
36245b66
DH
49362004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4937
4938 * eval.c (s_macro_keyword): New static identifier.
4939
4940 (scm_m_define): Change order to first create binding and
4941 evaluating the expression afterwards.
4942
4943 (scm_m_set_x): Memoize complete set! expression. Only leave
4944 symbols if no binding exists at memoization time. Throw error if
4945 assigning to a syntactic keyword.
4946
4947 (lazy_memoize_variable): New function.
4948
4949 (CEVAL): When execution set!, perform lazy memoization if
4950 unmemoized symbol is detected.
4951
4952 * modules.c (module_variable): Return variables with unbound
4953 value.
4954
4955 * tags.h: Fix comment.
4956
4d81111e
KR
49572004-04-25 Kevin Ryde <user42@zip.com.au>
4958
da8bcb2f
KR
4959 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4960 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4961 in 8-bit locales, and ensures consistency with char-upper-case? and
4962 char-lower-case? which already use ctype.h.
4963 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4964 Remove.
4965 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4966
4d81111e
KR
4967 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4968 call. Reported by Hyperdivision.
4969
4970 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4971 Reported by Hyperdivision.
4972
4973 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4974 Hyperdivision.
4975
7e6e6b37
DH
49762004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4977
4978 Hide the implementation of ilocs and isyms in eval.c.
4979
4980 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4981 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4982 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4983 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4984 eval.h to eval.c.
4985
4986 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4987 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4988 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4989 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4990 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4991 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4992 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4993 renamed to ISYMNUM.
4994
4995 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4996 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4997 Extracted printing of ilocs and isyms to guile internal functions
4998 scm_i_print_iloc, scm_i_print_isym of eval.c.
4999
caab294f
KR
50002004-04-22 Kevin Ryde <user42@zip.com.au>
5001
7aaf4758
KR
5002 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
5003
caab294f
KR
5004 * numbers.c (scm_round): Test for x already an integer, to avoid bad
5005 rounding in x+0.5 when x is a big value already an integer. In
5006 certain hardware rounding cases x+0.5 can give an adjacent integer,
5007 leading to that as the result, when we really just wanted x itself.
241d9cea 5008
b1cb24ff
DH
50092004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5010
5011 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
5012
5013 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
5014 added const qualifiers, cast intentionally unused expressions to
5015 void for emphasis, improved comment.
5016
5065b40d
DH
50172004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5018
5019 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
5020 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
5021 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
5022 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
5023 Defined the tc8-tag for flags to be 0x04, which will mean that
5024 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
5025 to the reduced number of bits and the simpler bit pattern for
5026 SCM_BOOL_F, certain machines may be able to use more efficient
5027 processor instructions to deal with SCM_BOOL_F.
5028
5029 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
5030 never been defined in a released version, thus no need to
5031 deprecate them.
5032
5033 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
5034 instead of tc9 tags.
5035
5036 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
5037 of tc9 tags.
5038
5039 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
5040 could have used this definition.
5041
5042 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
5043 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
5044 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
5045 as isyms, as special isyms don't exist any more.
5046
9fa6c119
KR
50472004-04-18 Kevin Ryde <user42@zip.com.au>
5048
e08d2eee
KR
5049 * filesys.c (scm_readdir): Use readdir_r when available, for thread
5050 safety.
5051
9fa6c119
KR
5052 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
5053 explicit swapping code.
5054
c9cdd396
KR
50552004-04-15 Kevin Ryde <user42@zip.com.au>
5056
5057 * cpp_sig_symbols.in: Add SIGSYS.
241d9cea 5058
c9cdd396
KR
5059 * list.c (scm_append_x): Use iterative style, to avoid non-tail
5060 recursion.
5061
5062 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
5063 frac/big and frac/frac, use scm_less_p for exact comparison.
5064
83ac9c59
KR
5065 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
5066 with big/inum.
5067
84a4be9a
KR
5068 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
5069
84fad130
HWN
50702004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
5071
6b69393d
HWN
5072 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
5073
84fad130 5074 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
241d9cea 5075 scm_c_{up,down}case.
84fad130 5076 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
241d9cea 5077 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
84fad130 5078
c3110a30
KR
50792004-04-06 Kevin Ryde <user42@zip.com.au>
5080
0b288f36
KR
5081 * numbers.c (scm_ash): Remove stray "}" in docstring.
5082
ea2508c8
KR
5083 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
5084 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
5085 calling mpz_cmp_ui in most cases.
5086
c3110a30
KR
5087 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
5088 for big == abs(most-negative-fixnum) special case.
5089 (abs_most_negative_fixnum): Remove, no longer used.
5090
5091 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
5092 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
5093 calling (sigaction NSIG).
5094
5095 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
5096 and fork error cases to do this.
5097
dec40cd2
DH
50982004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5099
5100 * eval.c (CEVAL): Don't distinguish between short and long
5101 instructions when dispatching - just always dispatch on the
5102 instruction code, which is common for short and long instructions.
5103 Further, removed unnecessary goto statements and added comment.
5104
0e7bb795
DH
51052004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5106
5107 * eval.c (scm_unmemocopy): Don't distinguish between short and
5108 long instructions when dispatching - just always dispatch on the
5109 instruction code, which is common for short and long instructions.
5110 Further, removed unnecessary goto statements, fixed indentation
5111 and replaced SCM_IMP predicates by SCM_NULLP.
5112
f9986767
DH
51132004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5114
5115 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
5116 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
5117 'checkmacro'.
5118
fbc42231
KR
51192004-03-31 Kevin Ryde <user42@zip.com.au>
5120
5121 * simpos.c: Include <signal.h> for SIG_IGN and friends.
5122
434f2f7a
DH
51232004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5124
5125 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
5126 SCM_DEBUGGINGP:
5127
5128 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
5129 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
5130 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
5131 single interface that also matches the naming conventions.
5132 Probably scm_debug_mode_p should be part of the private interface
5133 anyway.
5134
5135 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
5136 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
5137 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
5138 to scm_debug_mode_p.
5139
5140
5141 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
5142
5143 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
5144 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
5145 from debug.h to eval.h.
5146
5147 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
5148 more, just leave it with setting scm_debug_mode_p, which is
5149 equivalent for practical purposes.
5150
5151 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
5152 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
5153
5154 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
5155
5156 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
5157 static and renamed it to ceval throughout. Provide a new exported
5158 but deprecated function scm_ceval as a wrapper for backwards
5159 compatibility. The same is done for the deval/scm_deval pair of
5160 functions.
5161
5162 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
5163 throughout. Defined CEVAL to ceval or deval, based on compilation
5164 phase.
5165
5166 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
5167 to ceval and deval instead of calling *scm_ceval_ptr.
5168
5169 * eval.c (dispatching_eval): New deprecated static function.
5170
5171 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
5172 to emulate its old behaviour as closely as possible.
5173
5174
5175 Change the evaluator such that only expressions for which pair? is
5176 true are passed to CEVAL, and such that all other expressions are
5177 evaluated outside of CEVAL:
5178
5179 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
5180 expression that is assumed to be memoized already. All but
5181 expressions of the form '(<form> <form> ...)' are evaluated inline
5182 without calling an evaluator.
5183
5184 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
5185 expressions of the form '(<form> <form> ...)' inline without
5186 calling an evaluator.
5187
5188 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
5189 the special case of unmemoized symbols passed on the top level.
5190
5191 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
5192 is known that the expression passed to CEVAL is of the form
5193 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
5194 now it is known that the input expression of CEVAL is a pair.
5195
51962004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5fb64383
DH
5197
5198 * eval.c (is_self_quoting_p): New static function.
5199
5200 (scm_m_quote): Use is_self_quoting_p.
5201
5202 (copy_tree): Corrected typo in comment.
5203
702551e6
HWN
52042004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
5205
bfefbf18
HWN
5206 * eval.c (s_scm_copy_tree): idem.
5207
5208 * list.c (s_scm_filter): remove "pointer" from doc string.
5209
702551e6
HWN
5210 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
5211
5212 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
5213
5214 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
5215 (display_frame): idem.
5216 (display_backtrace_file_and_line): idem.
5217
5218 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
5219 arguments.
5220
3cd23214
KR
52212004-03-26 Kevin Ryde <user42@zip.com.au>
5222
88a7ae1f
KR
5223 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
5224
3cd23214
KR
5225 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
5226 big==0 since that never occurs.
5227
5228 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
5229 scm_modular_expt, matching scheme level name `modulo-expt'.
5230
5231 * numbers.c (scm_modular_expt): Return a negative remainder for a
5232 negative divisor, the same as `modulo' does.
5233
52342004-03-26 Eric Hanchrow <offby1@blarg.net>
5235
5236 * numbers.c, numbers.h (scm_modular_expt): New function.
5237
2926035a
KR
52382004-03-25 Kevin Ryde <user42@zip.com.au>
5239
5240 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
5241 return inexact as required by r5rs.
5242
62360b89
DH
52432004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5244
5245 * eval.c: Separated some definitions relevant for execution from
5246 the memoization part of the file.
5247
5248 (copy_tree): New static function
5249
5250 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
5251 structures are detected now and will lead to an exception instead
5252 of forcing guile to run in an endless loop, using up all the
5253 system's memory. Second, arrays in the cdr of an improper list
5254 are now copied. See the new test cases in eval.test.
5255
52562004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
b28f5b3c
DH
5257
5258 * posix.c (scm_gethostname): Make sure len is initialised before
5259 it is used. Restructured to (hopefully) represent possible
5260 configurations more clearly in the code. Added unwind handler.
5261
3bd3bae8
KR
52622004-03-23 Kevin Ryde <user42@zip.com.au>
5263
5264 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
5265 MAXHOSTNAMELEN when available.
5266
254bf78d
MV
52672004-03-21 Marius Vollmer <mvo@zagadka.de>
5268
5269 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
5270 terminator. Rewritten the logic as a state machine, I must have
5271 been doing too much VHDL lately...
5272
5273 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
5274 themselves. Thanks to Han-Wen Nienhuys!
5275
5276 * list.c: Changed docstrings so that they no longer talk about
5277 returning 'pointers' to something.
5278
009c34a2
HWN
52792004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5280
5281 * gc.c: remove set_debug_cell_accesses! when
5282 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
5283 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
5284 debugging conditionally.
241d9cea 5285
54733c95
KR
52862004-03-21 Kevin Ryde <user42@zip.com.au>
5287
5288 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
5289
bbaf8747
KR
52902004-03-20 Kevin Ryde <user42@zip.com.au>
5291
5292 * posix.c (scm_gethostname): Preserve errno across free() call.
5293
726f82e7
HWN
52942004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
5295
5296 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
5297 free cells.
5298
e1350d6a
KR
52992004-03-14 Kevin Ryde <user42@zip.com.au>
5300
5301 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
5302 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
5303
62055253
KR
53042004-03-07 Kevin Ryde <user42@zip.com.au>
5305
5306 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
5307 than "GMT" always.
5308 (filltime): Make zname parameter "const".
5309
92e64b87
MD
53102004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
5311
5312 * threads.c, threads.h (scm_c_scm2thread): New function.
5313
004ad931
KR
53142004-02-29 Kevin Ryde <user42@zip.com.au>
5315
5316 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
5317 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
5318 particular don't assume "defined (__alpha__) && ! defined (linux)"
5319 means OSF. Remove "SCO" code, which was not really SCO specific and
5320 which John W. Eaton advises should be long past being needed.
5321
5322 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
5323 error throw.
5324
72ea45ac
KR
53252004-02-24 Kevin Ryde <user42@zip.com.au>
5326
5327 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
5328
2af0602e
KR
53292004-02-22 Kevin Ryde <user42@zip.com.au>
5330
5331 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
5332 complex, same as for two args. (Handle only inum, big, real, frac).
5333
b114eafe
KR
53342004-02-21 Kevin Ryde <user42@zip.com.au>
5335
5336 * posix.c (scm_crypt): Use new HAVE_CRYPT.
5337 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 5338 Reported by Andreas Voegele.
b114eafe 5339
1e55d288
NJ
53402004-02-20 Neil Jerram <neil@ossau.uklinux.net>
5341
5342 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
5343 validation.
5344
5345 * read.c (scm_lreadparen): Removed.
5346 (scm_lreadparen1): Renamed scm_i_lreadparen.
5347
eb741d98
HWN
53482004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5349
5350 * list.c (scm_list_n): validate non-immediate arguments;
5351 this will catch forgotten a SCM_UNDEFINED.
5352
4e28ba5e
MV
53532004-02-18 Marius Vollmer <mvo@zagadka.de>
5354
5355 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
5356 Thanks to Bill Schottstaedt!
241d9cea 5357
4e28ba5e
MV
5358 * socket.h (scm_gethost): Removed prototype it is already in
5359 "net_db.h". Thanks to Bill Schottstaedt!
241d9cea 5360
ef861ead
KR
53612004-02-18 Kevin Ryde <user42@zip.com.au>
5362
5363 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
5364 order parameter to mpz_import, in fact with just one word there's no
5365 order to worry about at all.
5366
5367 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
5368 and frac==complex, make an exact comparison rather than converting
5369 with fraction2double.
5370
5371 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
5372 shared library, since environ is not directly available there.
5373
5374 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
5375 standard.
5376
5377 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
5378 errno EINVAL in case localtime and gmtime don't set it.
5379 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
5380 SCM_SYSERROR, since mktime and strptime generally don't set errno.
5381
ae43d08e 53822004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 5383
c9ea6462
KR
5384 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
5385 which were permitted in the past for these.
5386
292dfa7f
KR
5387 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
5388 previous change to numbers.c.
5389
ae43d08e
KR
5390 * script.c (scm_shell_usage): Print bug-guile email address, as per
5391 GNU standard. Reported by Han-Wen Nienhuys.
5392
711a9fd7
MD
53932004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5394
5395 * unif.c (scm_make_uve): Removed local variable and simplified
5396 code in order to avoid compiler used uninitialized warnings.
5397
5398 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
5399 scm_hash_map.
5400 (scm_hash_fold): Use scm_call_3 directly in the call to
5401 scm_internal_hash_fold instead of going via fold_proc (which is
5402 now removed).
5403 (scm_hash_for_each): Use a trampoline +
5404 scm_internal_hash_for_each_handle.
5405 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
5406 functions.
5407
3da7f6b2
KR
54082004-02-12 Kevin Ryde <user42@zip.com.au>
5409
344a212f
KR
5410 * ports.c (scm_port_line): In docstring, note first line is 0.
5411 (scm_set_port_line_x): In docstring, note first line is 0.
5412 (scm_port_column): In docstring, there's no default to current input
5413 port, and remove shared port-line @defun.
5414 (scm_set_port_column_x): In docstring, there's no default to current
5415 input port, note first column is 0, remove shared set-port-line!
5416 @defun.
5417
3da7f6b2
KR
5418 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
5419 convert args the same way that array-set! does.
5420
5421 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
5422 for dvect.
5423 (scm_array_p): Add missing "break"s in switch, fix llvect test look
5424 for "l" not "s", fix dvect to be false for singp(prot) since such a
5425 value is for fvect.
5426 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
5427 (exactly_one_third): New variable.
5428 (scm_init_unif): Initialize it.
3da7f6b2 5429
cd21f5eb
NJ
54302004-02-10 Neil Jerram <neil@ossau.uklinux.net>
5431
5432 * read.c (scm_read_opts): Change `escaped-parens' to
5433 `elisp-strings'.
5434
16353acc
NJ
54352004-02-08 Neil Jerram <neil@ossau.uklinux.net>
5436
5437 * read.c (scm_read_opts): New opts `elisp-vectors' and
5438 `escaped-parens'.
5439 (s_vector): New.
5440 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
5441 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
5442 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
5443 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
5444 `escaped-parens' option set.
5445 (scm_read_token): If elisp vector syntax active, disallow [ and ]
5446 in tokens.
5447 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
5448 (scm_lreadparen1): New.
5449
5450 * read.h: Remove conditionally compiled last arg to
5451 scm_lreadparen.
5452 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
241d9cea 5453
f62b9dff
HWN
54542004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
5455
5456 * eval.c (m_expand_body): remove stray variable new_body.
5457
ef5b6b61
MV
54582004-01-22 Marius Vollmer <mvo@zagadka.de>
5459
5460 * eval.c (m_expand_body): Rewrite the expression in place (by
5461 overwriting FORMS) also when a letrec is constructed, not only
5462 when no definitions are found. Do not return rewritten expression
5463 to emphasize the in-place rewriting. Changed all users.
5464
7eec4c37
HWN
54652004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
5466
5467 * gc.c: add protected_object_count, a number that is dumped from
5468 gc_stats()
5469
25ffbdac
MV
54702004-01-11 Marius Vollmer <mvo@zagadka.de>
5471
5472 * dynwind.h, dynwind.c (scm_frame_unwind,
5473 scm_frame_unwind_handler): Renamed and changed all uses.
5474 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
241d9cea 5475
08568c95
KR
54762004-01-11 Kevin Ryde <user42@zip.com.au>
5477
5478 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
5479 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
5480 changes made to scheme-compound.texi.
5481
5565749c
MV
54822004-01-10 Marius Vollmer <mvo@zagadka.de>
5483
25ffbdac
MV
5484 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
5485 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
5486
5487 * guile-snarf.in: Use mkdir to create a unique temporary directory
5488 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 5489
fc6bb283
MV
54902004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5491
7ebccde8
MV
5492 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
5493 argument since it is always zero now. Changed all callers.
5494 Removed code for handling fluids.
96e3b2f8
MV
5495
5496 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
5497 the wind chain explicitely. Use scm_c_with_fluid for the common
5498 case of only one fluid.
5499 (scm_with_fluid): New.
5500 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
241d9cea 5501
fc6bb283 5502 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
5503 (scm_with_fluid): New.
5504 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
5505
5506 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
5507 do the unwinding directly. It is simple enough.
241d9cea 5508
fc6bb283
MV
5509 * dynwind.h, dynwind.c: Did the following renamings:
5510 scm_begin_frame -> scm_frame_begin,
5511 scm_end_frame -> scm_frame_end,
5512 scm_on_unwind -> scm_frame_unwind,
5513 scm_on_rewind -> scm_frame_rewind,
5514 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
5515 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
5516 Changed all uses.
5517
5518 * aync.h, async.c: Did the follwing renamings:
5519 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
5520 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
5521 Changed all uses.
241d9cea 5522
fc6bb283
MV
5523 * ports.h, ports.c: Did the follwing renamings:
5524 scm_with_current_input_port -> scm_frame_current_input_port,
5525 scm_with_current_output_port -> scm_frame_current_output_port,
5526 scm_with_current_error_port -> scm_frame_current_error_port.
5527 Changed all uses.
5528
298ab996
KR
55292004-01-07 Kevin Ryde <user42@zip.com.au>
5530
5531 * numbers.c (s_bignum): Remove, not used since gmp bignums.
5532 Reported by Richard Todd.
5533
ba40113e
KR
5534 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
5535 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
5536
298ab996
KR
5537 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
5538 traversing the args list, fixes segv if an improper list is given.
5539 Reported by Rouben Rostamian.
5540
aacff585
MV
55412004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5542
5543 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
5544 swap_data on stack, use a 'malloc obj'.
5545
5546 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
5547 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
5548 scm_i_... since they are internal. Changed all uses.
5549
5550 * dynwind.c (frame_print): Removed, use the default printer.
5551 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
5552 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
5553 to protect SCM values.
241d9cea 5554
aacff585
MV
5555 * dynwind.h (SCM_F_WIND_EXPLICITELY,
5556 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
5557 Changed all uses.
5558 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
241d9cea 5559
49c00ecc
MV
55602004-01-05 Marius Vollmer <mvo@zagadka.de>
5561
5562 * ports.h, ports.c (scm_with_current_input_port,
5563 scm_with_current_output_port, scm_with_current_error_port): New.
5564
5565 * async.h, async.c (scm_with_blocked_asyncs,
5566 scm_with_unblocked_asyncs): New.
5567
dab514a8
MV
55682004-01-03 Marius Vollmer <mvo@zagadka.de>
5569
5570 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
5571 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
5572 New.
5573 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
5574 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
5575 function when the outermost wind point has been reached. The
5576 latter is used to copy a continuation stack at the right time.
5577 scm_dowinds remains available.
5578 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
5579 tc16_guard, guards_print): Removed.
5580 (scm_internal_dynamic_wind): Reimplemented using frames.
5581
5582 * continuations.c (copy_stack): New, do only the stack copying
5583 part of copy_stack_and_call.
5584 (copy_stack_and_call): Copy the stack after unwinding and before
5585 rewinding.
5586 (scm_dynthrow): Do not call scm_dowinds, this is now done by
5587 copy_stack_and_call.
241d9cea 5588
441a25d9
KR
55892004-01-04 Kevin Ryde <user42@zip.com.au>
5590
5591 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 5592 can give bad results due to rounding.
241d9cea 5593
e0499207
KR
5594 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
5595 setzone/restorezone protection for DOS.
5596
89fcf1b4
MV
55972003-12-26 Marius Vollmer <mvo@zagadka.de>
5598
5599 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
5600 and scm_t_uintmax to be defined in scmconfig.h
5601
caff34d4
KR
56022003-12-03 Kevin Ryde <user42@zip.com.au>
5603
5604 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
5605
5606 * numbers.c (scm_make_ratio): Check for numerator equal to
5607 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
5608 giving integer -1.
5609
5610 * numbers.c (scm_real_part): Return fraction unchanged rather than
5611 converting to flonum.
5612
2d0b85ac
DH
56132003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5614
5615 * modules.c (module_variable): Fixed (and thus simplified) the
5616 definition of SCM_BOUND_THING_P to reflect the fact that since
5617 after the 1.4 series of guile, obarrays only hold variable
5618 objects.
5619
2297981d
MV
56202003-11-30 Marius Vollmer <mvo@zagadka.de>
5621
5622 * numbers.c (scm_logand): It's "#b...", not "#\b...".
5623
5624 From Paul Jarc:
5625
5626 * read.c (scm_lreadr): Signal an error for invalid escape
5627 sequences in strings. Code cleanups too.
5628
5629 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
5630 writing control characters in strings.
5631
56322003-11-21 Marius Vollmer <mvo@zagadka.de>
5633
5634 * ports.c (scm_drain_input): Bug fix: only access the port after
5635 checking that it indeed is one.
5636
5c264007
DH
56372003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5638
5639 * eval.c (s_bad_define): New static identifier.
5640
5641 (m_body): Fixed comment.
5642
5643 (scm_m_define): Don't generate memoized code for definitions that
5644 are not on the top level. As a consequence, no memoized code at
5645 all is generated for definitions any more: Top level definitions
5646 are executed immediately during memoization and internal
5647 definitions are handled separately in m_expand_body.
5648
5649 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
5650 definitions. Consequently, there is no unmemoizing code any more
5651 that might modify the environment. Thus, the old scm_unmemocopy
5652 is removed and the old unmemocopy is renamed to scm_unmemocopy.
5653
5654 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
5655 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
5656 over SCM_NIMP in places, where the argument is known to be part of
5657 a proper list.
5658
018d4730
KR
56592003-11-21 Kevin Ryde <user42@zip.com.au>
5660
5661 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
5662 for bignums.
5663
5664 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
5665 to share some shifting.
5666
5667 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
5668 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
5669 since gc does this.
5670
4bca30d8
MV
56712003-11-19 Marius Vollmer <mvo@zagadka.de>
5672
fb16d26e
MV
5673 * numbers.c (scm_make_ratio): Rewritten to have a simpler
5674 structure. Previously, not all cases with a negative denominator
5675 were covered.
5676
4bca30d8
MV
5677 * numbers.c (mem2decimal_from_point): use scm_divide instead of
5678 scm_divide2real when forming the fractional part. This allows
5679 "#e1.2" to yield 6/5.
5680
5681 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
5682 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
5683 fractions were equal to each other regardless of value. Ooops.
5684
5685 * numbers.c (scm_rationalize): Return an inexact result when given
5686 inexact arguments.
5687
5688 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
5689 non-numbers.
5690
bdf26b60
MV
56912003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5692
5693 Support for exact fractions from Bill Schottstaedt! Thanks!
241d9cea 5694
bdf26b60
MV
5695 * print.c (scm_iprin1): Handle fractions.
5696
5697 * objects.h (scm_class_fraction): New.
241d9cea 5698 * objects.c (scm_class_fraction): New.
bdf26b60 5699 (scm_class_of): Handle fractions.
241d9cea 5700
bdf26b60
MV
5701 * hash.c (scm_hasher): Handle fractions.
5702
5703 * numbers.c: New code for handling fraction all over the place.
5704 (scm_odd_p, scm_even_p): Handle inexact integers.
5705 (scm_rational_p): New function, same as scm_real_p.
5706 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
5707 New exact functions that replace the inexact 'dsubr'
5708 implementations.
5709 (scm_numerator, scm_denominator): New.
5710
5711 * numbers.h (SCM_NUMP): Recognize fractions.
5712 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5713 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5714 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5715 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5716 SCM_FRACTION_REDUCED): New.
5717 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5718 New prototypes.
5719 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5720 scm_rational_p): New prototypes.
5721 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5722 scm_i_print_fraction): New prototypes.
241d9cea 5723
bdf26b60
MV
5724 * goops.c (create_standard_classes): Create "<fraction>" class.
5725
5726 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5727
5728 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5729 case in the switch, but do nothing for now.
5730
5731 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5732 to doubles when calling 'dsubr' functions.
5733
5734 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5735
28fda544
RB
57362003-11-18 Rob Browning <rlb@defaultvalue.org>
5737
5738 * gen-scmconfig.c (main): remove public definition of
5739 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5740 direct typedef of long_long and ulong_long inside deprecated block
5741 when appropriate.
5742
5743 * deprecated.h: move long_long and ulong_long definitions to
5744 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5745 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5746
b58e7420
MV
57472003-11-17 Marius Vollmer <mvo@zagadka.de>
5748
9a1d7d7c
MV
5749 * hash.c (scm_string_hash): New hashing algorithm that takes the
5750 complete string into account.
5751
b58e7420
MV
5752 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5753 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
5754 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5755 SCM_ASSYNT.
b58e7420
MV
5756
5757 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5758 the "-e" option instead of scm_str2symbol. This allows things
5759 like (@ ...) to be specified for the entry point.
5760
461bffb1
DH
57612003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5762
5763 * eval.c (scm_m_letstar): Create memoized code in place to
5764 minimize consing.
5765
6f81708a
DH
57662003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5767
5768 * eval.c (s_splicing): Commented and reformulated.
5769
5770 (lookup_global_symbol, lookup_symbol): New static functions.
5771
5772 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5773
5774 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5775 creating a temporary pair for scm_lookupcar.
5776
5777 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5778 created deprecated wrapper function scm_unmemocar.
5779
5780 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5781 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5782 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5783 undefineds, sym_three_question_marks): Moved around without
5784 modifications.
5785
5786 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5787
910b5125
DH
57882003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5789
5790 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5791 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5792 No further modifications.
5793
c86c440b
DH
57942003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5795
5796 * eval.c (s_mixed_body_forms): New static identifier.
5797
5798 (canonicalize_define, scm_m_define): The check for a bad
5799 expression is performed in canonicalize_define now.
5800
5801 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5802 static helper functions for m_expand_body.
5803
5804 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5805 expand user defined macros. Fixed handling of the definition/
5806 expression boundary. Fixed handling of definitions grouped with
5807 'begin. Use canonicalize_define to expand definitions.
5808
3890131a
MV
58092003-11-13 Marius Vollmer <mvo@zagadka.de>
5810
b58e7420
MV
5811 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5812 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5813
5df36eac
MV
5814 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5815 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5816 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5817 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5818 New macros from Paul Jarc. Thanks!
5819
3890131a
MV
5820 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5821 return NULL when the machine type is unknown. Previously,
5822 gc_os_dep.c would refuse to compile.
5823
430b8401
DH
58242003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5825
5826 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5827 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5828 scm_m_body to m_body.
5829
328dc9a3
DH
58302003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5831
5832 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5833 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5834 scm_m_expand_body to m_expand_body and made it static. Added
5835 deprecated wrapper scm_m_expand_body.
5836
5837 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5838 of scm_m_expand_body.
5839
c2337a61
KR
58402003-11-09 Kevin Ryde <user42@zip.com.au>
5841
5842 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5843 argument. Reported by Mike Gran.
5844
ced8edb0
DH
58452003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5846
5847 * eval.c (s_missing_body_expression): New static identifier.
5848
5849 (s_body): Removed.
5850
5851 (scm_m_expand_body): Fixed core dump when passing a body with
5852 defines, but without expressions (see additions to syntax.test).
5853 Use ASSERT_SYNTAX to signal syntax errors.
5854
0f572ba7
DH
58552003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5856
5857 * eval.c (canonicalize_define): New static helper function.
5858
5859 (memoize_define, canonicalize_define): Extract handling of
5860 function currying to canonicalize_define.
5861
2510c810
DH
58622003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5863
5864 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5865 Make sure that error checking in debug mode is not worse than in
5866 standard mode.
5867
34adf7ea
DH
58682003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5869
5870 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5871 handled in scm_m_body any more, but rather in scm_m_lambda.
5872
5873 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5874 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5875 calling functions of scm_m_body.
5876
5877 (scm_m_lambda): Avoid unnecessary consing when creating the
5878 memoized code.
5879
89bff2fc
DH
58802003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5881
5882 * eval.c (s_expression): Added comment.
5883
5884 (s_empty_combination, error_unbound_variable): New static
5885 identifiers.
5886
5887 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5888 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5889 signal syntax errors.
5890
5891 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5892 scheme objects.
5893
60a49842
DH
58942003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5895
5896 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5897 Grouped together with unmemocopy, without modifications.
5898
5899 (build_binding_list, unmemocopy): Renamed names of list arguments
5900 and variables to reflect the actual order of the list elements.
5901
70c1c108
DH
59022003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5903
5904 * eval.c (s_defun): New static identifier.
5905
5906 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5907 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5908 when creating the memoized code.
5909
0ee39677
KR
59102003-10-19 Kevin Ryde <user42@zip.com.au>
5911
5912 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5913
5914 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5915 in accordance with R5RS, which just mpz_get_d doesn't really give.
5916
9a848baf
DH
59172003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5918
5919 * eval.c (s_bad_slot_number): New static identifier.
5920
5921 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5922 signal syntax errors. Avoid unnecessary consing when creating the
5923 memoized code.
5924
da48db62
DH
59252003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5926
5927 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5928 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5929 errors. Avoid unnecessary consing when creating the memoized
5930 code.
5931
5932 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5933 standard case. Make sure line and file information are copied to
5934 every created expression.
5935
82b3e2c6
DH
59362003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5937
5938 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5939 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5940 when creating the memoized code.
5941
5942 (scm_m_atbind): Reversed the order, in which the init expressions
5943 are stored and executed. The order of execution is now equal to
5944 the order in which the initializers of the let-forms are executed.
5945 Use check_bindings and transform_bindings.
5946
5947 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5948 !SCM_NULLP. Added some comments.
5949
21628685
DH
59502003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5951
5952 * eval.c: Sorted include files alphabetically.
5953
5954 (scm_m_begin): Added comment.
5955
5956 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5957 unnecessary consing when creating the memoized code.
5958
5959 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5960 syntax errors. Be more specific about the kind of error that was
5961 detected.
5962
5963 (scm_m_quote, unmemocopy): As an optimization, vector constants
5964 are now inserted unquoted into the memoized code. During
5965 unmemoization the quotes are added again to provide syntactically
5966 correct code.
5967
d6754c23
DH
59682003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5969
5970 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5971 scm_m_expand_body, check_bindings): Extracted syntax checking of
5972 bindings to new static function check_bindings.
5973
5974 (scm_m_let, memoize_named_let): Extracted handling of named let to
5975 new static function memoize_named_let.
5976
5977 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5978 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5979 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5980 unnecessary consing when creating the memoized code.
5981
03a3e941
DH
59822003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5983
5984 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5985 static identifiers.
5986
5987 (s_clauses, s_formals, s_duplicate_formals): Removed.
5988
5989 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5990 specific about the kind of error that was detected. Prepare for
5991 easier integration of changes for separated memoization.
5992
da48db62 59932003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
5994
5995 * eval.c (s_duplicate_binding): New static identifier.
5996
5997 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5998
5999 (scm_m_define): Added comment about how we check for duplicate
6000 formals.
6001
6002 (scm_m_do): Added check for duplicate bindings.
6003
6004 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
6005 unnecessary consing when creating the memoized code.
6006
6007 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
6008 scm_c_improper_memq to c_improper_memq, since it is not exported.
6009
6010 (transform_bindings): Call scm_c_memq rather than
6011 scm_c_improper_memq.
6012
6013 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
6014
da48db62 60152003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
6016
6017 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
6018 static identifiers.
6019
6020 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
6021 specific about the kind of error that was detected. Avoid use of
6022 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
6023 code, this way also making sure that file name, line number
6024 information etc. remain available.
6025
da48db62 60262003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
6027
6028 * eval.c (memoize_as_thunk_prototype): New static function.
6029
6030 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
6031 Avoid unnecessary consing when creating the memoized code.
6032
9b9a35b6
KR
60332003-10-12 Kevin Ryde <user42@zip.com.au>
6034
6035 * list.c (scm_append): Track argument number and use in error.
6036
cc56ba80
DH
60372003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6038
6039 * eval.c (s_missing_expression, s_bad_variable): New static
6040 identifiers.
6041
6042 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
6043 R5RS terminology for the naming of variables. Be more specific
6044 about the kind of error that was detected. Make sure file name,
6045 line number etc. are added to all freshly created expressions.
6046 Avoid unnecessary consing when creating the memoized code.
6047
609a8b86
DH
60482003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6049
6050 * eval.c (s_extra_expression, s_misplaced_else_clause,
6051 s_bad_cond_clause, s_missing_recipient): New static identifiers.
6052
6053 (s_extra_case_clause): Removed.
6054
6055 (scm_m_case, scm_m_cond): If a clause appears after an else
6056 clause, report a misplaced else clause.
6057
6058 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
6059 specific about the kind of error that was detected. Handle bound
6060 'else and '=>. Avoid unnecessary consing when creating the
6061 memoized code.
6062
6063 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
6064 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
6065 syntactic keyword '=>.
6066
58a2510b
DH
60672003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6068
6069 * eval.c (scm_m_case): Allow empty lists of case labels.
6070
2a6f7afe
DH
60712003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6072
6073 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
6074
6075 * print.c (scm_isymnames): Add names for the new memoizer codes.
6076
6077 * eval.c (s_missing_clauses, s_bad_case_clause,
6078 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
6079 literal_p): New static identifiers.
6080
6081 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
6082 specific about the kind of error that was detected. Check for
6083 duplicate case labels. Handle bound 'else. Avoid unnecessary
6084 consing when creating the memoized code.
6085
6086 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
6087 the syntactic keyword 'else.
6088
e6729603
DH
60892003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
6090
6091 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
6092 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
6093
6094 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
6095 unnecessary consing when creating the memoized code.
6096
9ddeb776
KR
60972003-10-09 Kevin Ryde <user42@zip.com.au>
6098
6099 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
6100 cast gives for values bigger than a long, or for nan or inf.
6101
df5af69a
DH
61022003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
6103
6104 * smob.h (scm_make_smob_type): Made the declaration match the
6105 definition.
6106
da0e6c2b
MV
61072003-10-07 Marius Vollmer <mvo@zagadka.de>
6108
6109 * goops.c, objects.h, smob.c, smob.h: Make type names char
6110 const * instead of char *. Thanks to Paul Jarc!
6111
591924eb
KR
61122003-10-02 Kevin Ryde <user42@zip.com.au>
6113
ff6ea7b9 6114 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
6115 rather than scm_strport_to_string, so as to guard against the port
6116 having been closed by the called procedure. Reported by Nic Ferrier.
6117
f03314f9
DH
61182003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6119
6120 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
6121
6122 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
6123 tags.h to deprecated.h.
6124
534c55a9
DH
61252003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6126
6127 This set of patches introduces a new tc7 code scm_tc7_number for
6128 numbers. Bignums, reals and complex numbers are turned from smobs
6129 into subtypes of scm_tc7_number.
6130
6131 * tags.h (scm_tc7_number): New.
6132
6133 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
6134 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
6135 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
6136 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
6137 (scm_class_of), print.c (scm_iprin1), smob.c
6138 (scm_smob_prehistory): Don't handle bignums, reals and complex
6139 numbers as subtypes of scm_tc7_smob any more.
6140
6141 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
6142 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
6143
29c4382a
DH
61442003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6145
6146 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
6147 sizeof (scm_t_complex) to determine the memory size of the
6148 malloc'd area for complex numbers.
6149
47ae1f0e
DH
61502003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6151
6152 * numbers.c (scm_bigequal): Fixed.
6153
859b6b2f
MV
61542003-09-16 Marius Vollmer <mvo@zagadka.de>
6155
6156 * stime.c (scm_current_time): 'time' does not set errno so don't
6157 use SCM_SYSERROR for reporting errors.
6158
e17d318f
DH
61592003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
6160
6161 This set of patches eliminates the dependency between the
6162 implementation of evaluator specific memoization codes and special
6163 constants like #f, '() etc. ('flags'), which are not evaluator
6164 specific. The goal is to remove definitions of evaluator
6165 memoization codes completely from the public interface. This will
6166 make it possible to experiment more freely with optimizations of
6167 guile's internal representation of memoized code.
6168
6169 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
6170
6171 * print.c (iflagnames): New array, holding the printed names of
6172 guile's special constants ('flags').
6173
6174 (scm_isymnames): Now holds only the printed names of the
6175 memoization codes.
6176
6177 (scm_iprin1): Separate the handling of memoization codes and
6178 guile's special constants.
6179
6180 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
6181 SCM_IFLAGNUM): new
6182
6183 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
6184 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
6185 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
6186 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
6187 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
6188 values.
6189
6190 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
6191
6192 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
6193 tc9 macros and scm_tc9_flag.
6194
eecac806
MV
61952003-09-15 Marius Vollmer <mvo@zagadka.de>
6196
6197 * posix.c (scm_setgroups): Check that the gid list is not too
6198 long. Thanks to Paul Jarc!
6199
22f2cf2d
DH
62002003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
6201
6202 * tags.h: Reduced the number of short instructions from 14 to 13.
6203 The typecode of the former 14th short instruction is now used to
6204 represent long instructions. Changed some comments to reflect
6205 this fact.
6206
6207 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
6208 previously used by SCM_IM_DEFINE.
6209
6210 (SCM_IM_DEFINE): Turned into a long instruction.
6211
6212 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
6213 instruction.
6214
6215 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
6216 code that is separate from all instructions, one level of dispatch
6217 for long instructions can be eliminated.
6218
6219 * print.c (scm_isymnames): Removed some commented code.
6220
62f548e1
MV
62212003-09-12 Marius Vollmer <mvo@zagadka.de>
6222
97a61c5f
MV
6223 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
6224 compiler on IA64.
6225
50e0ba57
MV
6226 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
6227
6228 * modules.c (scm_module_reverse_lookup): Check that the obarray
6229 really is a hashtable and do nothing if not.
6230
62f548e1
MV
6231 * inline.h: Use "extern inline" only with GCC. Use "static
6232 inline" else.
6233
0d5e3480
DH
62342003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6235
6236 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
6237 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6238
6239 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
6240 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
6241 deprecated.h.
6242
6b412e91
DH
62432003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6244
6245 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
6246 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6247
6248 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
6249 0.0==some_expression to some_expression==0.0. The latter is
6250 better readable. The former is preferred by some people, since it
6251 leads to a compiler error when confusing == with =. However, when
6252 using gcc, a warning will be issued if in an if-statement an
6253 assigment appears. Since many Guile developers are using gcc,
6254 such errors will not remain unnoticed anyway. We can therefore
6255 focus on better readability.
6256
7e3b25bf
DH
62572003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6258
6259 * tags.h: Added description of Guile's type system. Removed some
6260 old and misleading comments.
6261
3ea39242
DH
62622003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6263
6264 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
6265 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6266
5d7d39ff
DH
62672003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6268
6269 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
6270
6271 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
6272 respective SLOPPY macro.
6273
baa84a20
DH
62742003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6275
6276 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
6277 type string, not SCM_TYP7S.
6278
ba15f500
KR
62792003-09-03 Kevin Ryde <user42@zip.com.au>
6280
6281 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
6282 2s-complement.
6283
53bb8782
KR
6284 * stime.c (scm_strptime): Add comment about glibc strptime %s and
6285 current timezone requiring SCM_DEFER_INTS.
6286
defdc4b4
NJ
62872003-08-30 Neil Jerram <neil@ossau.uklinux.net>
6288
6289 * script.c (scm_compile_shell_switches): Make -s switch optional
6290 if file to be loaded does not begin with a `-'. (Thanks to Aaron
6291 VanDevender for the patch!)
6292
0f008a15
KR
62932003-08-30 Kevin Ryde <user42@zip.com.au>
6294
6295 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
6296 and to have non-integer types rejected as per other logical funcs.
241d9cea 6297
438a3ba1
KR
62982003-08-28 Kevin Ryde <user42@zip.com.au>
6299
6300 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
6301
98dceb37
KR
63022003-08-23 Kevin Ryde <user42@zip.com.au>
6303
6304 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
6305 thread safe, and could take a long time too.
6306
1fa79a38
KR
63072003-08-22 Kevin Ryde <user42@zip.com.au>
6308
6309 * numbers.c (scm_difference): Correction to bignum - negative inum.
6310
d97f9b42
KR
63112003-08-14 Kevin Ryde <user42@zip.com.au>
6312
6313 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
6314 [__GNUC__]: Use volatile asm macros rather than a function call.
6315 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
6316 macros while defining functions.
6317
6318 * simpos.c (getenv): Use <stdlib.h> for prototype.
6319 (scm_system): In docstring, refer to status:exit-val rather than
6320 "functions above".
6321
b9052fcc
KR
63222003-08-09 Kevin Ryde <user42@zip.com.au>
6323
6324 * srcprop.c (scm_source_properties): Return plist from hash if it's a
6325 list set by source-properties! rather than an SRCPROPS object,
6326
8e5b4b9e
KR
63272003-07-29 Kevin Ryde <user42@zip.com.au>
6328
6329 * properties.c (scm_primitive_property_ref): In docstring, note
6330 parameters to not-found-proc, use hyphens rather than underscores for
6331 that parameter name.
6332 (scm_primitive_property_set_x): In docstring, VAL is the value
6333 parameter not CODE.
241d9cea 6334
20703ac4
MV
63352003-07-27 Marius Vollmer <mvo@zagadka.de>
6336
c6ccee34
MV
6337 * print.c (scm_print_symbol_name): handle more weird characters by
6338 escaping the symbol name properly. Thanks to Paul Jarc!
6339
2f4931bf
MV
6340 * posix.h (scm_setgroups): New prototype.
6341 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
6342 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
6343 Don't use SCM_WRITABLE_VELTS.
241d9cea 6344
265c456f
MV
6345 * gc.h (SCM_GC_SET_CELL_BVEC): New.
6346 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
6347 Matthias Koeppe!
6348
20703ac4
MV
6349 * __scm.h (SCM_C_INLINE_KEYWORD): New.
6350 * numbers.c: Use it in place of SCM_C_INLINE so that the code
6351 compiles when SCM_C_INLINE is undefined.
6352
59c4bb82
DH
63532003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6354
6355 * __scm.h: Reformulated the architecture and compiler properties
6356 in terms of properties of scm_t_bits and SCM variables rather than
6357 in terms of c standard types. This is since it is not known which
6358 of the standard types scm_t_bits and SCM variables will be defined
6359 to.
6360
d7850c8d
KR
63612003-07-24 Kevin Ryde <user42@zip.com.au>
6362
6363 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
6364 and real.
6365
8a0c514f
KR
63662003-07-18 Kevin Ryde <user42@zip.com.au>
6367
6368 * numbers.c (scm_product): In complex * bignum, correction to
6369 REAL/IMAG fetch, x is the complex, not y.
6370
0aacf84e
MD
63712003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6372
6373 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
6374 scm_inf_p test as Scheme values.
6375 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
6376 and a positive inum.
6377 Use GNU indentation style.
6378
192de9a4
DH
63792003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6380
6381 * values.c (scm_values): Build lists of length 1 by using
6382 scm_list_1 instead of using scm_cons.
6383
bbb4438a
KR
63842003-07-10 Kevin Ryde <user42@zip.com.au>
6385
b58c85ce
KR
6386 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
6387 * list.c (scm_list_n): Ditto.
6388
bbb4438a
KR
6389 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
6390
287f8ad1
KR
63912003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
6392
6393 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
6394 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
6395 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
6396 the other using intptr_t.
6397
005d2366
KR
63982003-07-08 Kevin Ryde <user42@zip.com.au>
6399
0aacf84e 6400 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
6401 (scm_magnitude): Use hypot.
6402
6403 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
6404 @footnote since it doesn't go through to guile-procedures.txt.
6405
6406 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
6407 outside @var to quieten makeinfo, and use @code.
6408
cbfe8e62
HWN
64092003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6410
6411 * gc-malloc.c (decrease_mtrigger): new function
6412 (increase_mtrigger): new function, separate debug registering and
6413 mtrigger administration.
6414 (scm_gc_realloc): bugfix: do mtrigger administration before the
6415 actual realloc, for the realloc might invalidate a GC-d segment of
6416 memory. Thanks to Sam Hocevar for pointing this out.
6417 (scm_gc_realloc): use scm_malloc_reregister instead of
6418 unregistering and registering in sequence.
6419
aeb4c2e1
HWN
64202003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6421
241d9cea 6422 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
aeb4c2e1 6423
4c27f8d2
HWN
64242003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6425
6426 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
6427 clauses.
241d9cea 6428
983e697d
MV
64292003-06-29 Marius Vollmer <mvo@zagadka.de>
6430
6431 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
6432 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
6433 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
6434 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
6435 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
6436 the release_1_6 branch.
6437
78b6566e
SJ
64382003-06-25 Stefan Jahn <stefan@lkcc.org>
6439
6440 * continuations.c: Redeclaration of getcontext() via the
6441 __asm__ ("getcontext") directive.
6442
241d9cea 6443 * continuations.h: Include <ucontext.h> instead of
78b6566e
SJ
6444 <sys/ucontext.h>.
6445
1ebb8497
KR
64462003-06-21 Kevin Ryde <user42@zip.com.au>
6447
6448 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
6449 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
6450 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
6451 available.
6452 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
6453 (isfinite): Remove, conflicts with C99 isfinite().
6454
fbf85ba4
MV
64552003-06-19 Marius Vollmer <mvo@zagadka.de>
6456
6457 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
6458 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
6459 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
6460 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
6461 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
6462 the release_1_6 branch.
6463
fcc5d734
SJ
64642003-06-14 Stefan Jahn <stefan@lkcc.org>
6465
6466 * threads.h: Redefined scm_getspecific() and scm_setspecific()
6467 to be functions instead of macros.
6468
6469 * threads.c: Conditionalized inclusion of <sys/time.h> and
6470 <unistd.h>.
6471 (scm_getspecific, scm_setspecific): Made these two function
6472 real part of the API.
6473
241d9cea 6474 * posix.c (s_scm_putenv): Added some code to make a
fcc5d734
SJ
6475 (putenv "FOO="), i.e. setting an empty string, work also on
6476 Win32 systems. Thanks to Kevin Ryde for the proposal.
6477
c3ae8e07
KR
64782003-06-12 Kevin Ryde <user42@zip.com.au>
6479
75b14838
KR
6480 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
6481 freebsd to comment about need to use unsetenv.
c3ae8e07 6482
9d9fa092
MV
64832003-06-02 Marius Vollmer <mvo@zagadka.de>
6484
6485 * ports.c (scm_peek_char): Safe the column of the port around the
6486 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
6487
f2478375
KR
64882003-06-07 Kevin Ryde <user42@zip.com.au>
6489
6490 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
6491 and friends required by scm_t_bits setups.
6492
6375e040
DH
64932003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6494
6495 * tags.h (scm_tc2_int): Added.
6496
6497 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
6498 scm_tc2_int.
6499
6500 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
6501 scm_tcs_closures): Hard coded values replaced by symbolic ones.
6502
f5c6ec2f
DH
65032003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6504
6505 * eval.c: Partially undid my patch from 2003-05-31. This patch
6506 caused the segfault referenced in the previous changelog entry.
6507
47dbd81e
DH
65082003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6509
6510 * tags.h: Fixed comment about the immediate type code layout.
6511
6512 * eval.c: Fixed handling of non-special instructions. Without
6513 this patch, guile will segfault on (#\0) and similar instructions.
6514
3ec52c51
KR
65152003-06-05 Kevin Ryde <user42@zip.com.au>
6516
6517 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
6518 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
6519
e418bd7c
KR
6520 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
6521 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
241d9cea 6522
d0624e39
DH
65232003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6524
6525 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
6526 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
6527 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
6528 generalized it to apply not only to C level functions but also to
6529 scheme level functions.
6530
6531 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
6532 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
6533 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
6534 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
6535 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
6536 respectively.
6537
6538 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
6539 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
6540 eval.h into eval.c and a copy is placed into deprecated.h.
6541
6542 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
6543 into eval.c. This definition was not part of the API in any
6544 officially released version of guile and thus does not need to go
6545 through a phase of deprecation.
6546
e90c3a89
DH
65472003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
6548
d0624e39
DH
6549 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
6550 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
6551 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
6552 definitions are make static and renamed from scm_s_xxx to s_xxx.
6553 In deprecated.c the original definitions are copied.
6554
d0624e39
DH
6555 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
6556 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
6557 eval.h into eval.c and a copy (slightly modified to work in user
6558 code) is placed into deprecated.h.
6559
6560 * eval.c: Use the local static s_xxx definitions instead of the
6561 scm_s_xxx definitions throughout.
6562
14b18ed6
DH
65632003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6564
6565 This set of patches separates the representation of the cxr family
6566 of functions (car, cdr etc.) from the dsubr family of functions
6567 (i. e. functions that take a double precision floating point
6568 argument). Further, the algorithm for handling the cxr function
6569 is improved.
6570
6571 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
6572 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
6573 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
6574 cosh, tanh), objects.c (scm_class_of), procprop.c
6575 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
6576 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
6577 typecode for the dsubr family of functions.
6578
6579 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
6580 ramap_dsubr.
6581
6582 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
6583 (scm_init_pairs): Make use of the (now usable) second cell element
6584 of a scm_tc7_cxr function to implement the cxr family of functions
6585 more efficiently.
6586
2ca0d207
DH
65872003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6588
6589 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
6590 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
6591 end of an if-else-if-sequence of checks.
6592
9a069bdd
DH
65932003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6594
6595 * eval.c (SCM_CEVAL): Improved readability of call-with-values
6596 execution. Generalize apply_closure to apply_proc and use that
6597 for call-with-values.
6598
e910e9d2
DH
65992003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6600
6601 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
6602 a non closure.
6603
1e498fbd
SJ
66042003-05-30 Stefan Jahn <stefan@lkcc.org>
6605
241d9cea 6606 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
1e498fbd
SJ
6607 appropriately for mingw32 hosts.
6608
6609 * numbers.h: Defining copysign(), isnan() and finite() to
6610 be prefixed by a single '_' for mingw32 hosts.
6611
c47e2599
KR
66122003-05-30 Kevin Ryde <user42@zip.com.au>
6613
6614 * numbers.c (z_negative_one): New variable.
6615 (scm_init_numbers): Initialize it.
6616 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
6617
2e945bcc
SJ
66182003-05-29 Stefan Jahn <stefan@lkcc.org>
6619
6620 * win32-dirent.c: Use malloc() instead of scm_malloc().
6621
6622 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
6623 warning.
6624
6625 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
6626 mingw32 build.
6627
6628 * modules.c (s_scm_module_import_interface): Renamed local
6629 variable interface to _interface. Seems like 'interface'
6630 is a special compiler directive for the mingw32 compiler.
6631
6632 * mkstemp.c: Provide prototype to avoid compiler warning.
6633
6634 * load.c (s_scm_search_path): Fixed absolute and relative
6635 path detections for native Windows platforms.
6636
241d9cea 6637 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
2e945bcc
SJ
6638 to build on mingw32).
6639
241d9cea 6640 * gc-freelist.c ("s_scm_map_free_list",
2e945bcc
SJ
6641 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
6642
241d9cea 6643 * fports.c (fport_fill_input): Disable use of
2e945bcc
SJ
6644 fport_wait_for_input() on Win32 platforms.
6645
6646 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
6647
6648 * Makefile.am: Modified some rules for cross compiling.
6649
ddd8f927
DH
66502003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6651
6652 * eval.c (SCM_CEVAL): In case of an application, all checks for a
6653 proper function object and the correct number of arguments are now
6654 performed in the application part of SCM_CEVAL.
6655
6656 (scm_badformalsp): Removed.
6657
f8ba2197
DH
66582003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6659
6660 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
6661
79f55b7c
MD
66622003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6663
a502595f
MD
6664 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
6665 always being false by inserting preprocessor conditional. (Thanks
6666 to Bruce Korb.)
6667
79f55b7c
MD
6668 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
6669 (void *) in order to avoid an aliasing warning; thanks to Bruce
6670 Korb.)
6671
6672 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
6673
6674 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
6675 SCM_STACK_PTR.
6676
6677 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
6678 thread->base --> t->base.
6679
6680 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
6681
47dee228
MV
66822003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6683
6684 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
6685 scm_variable_set_name_hint, scm_builtin_variable,
6686 scm_internal_with_fluids, scm_make_gsubr,
6687 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
6688 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
6689 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
6690 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
6691 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
6692 scm_make_subr_with_generic, scm_make_subr_opt,
6693 scm_call_catching_errors, scm_make_smob_type_mfpe,
6694 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
6695 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
6696 branch. Some have been slightly rewritten.
6697 (scm_i_object_chars, scm_i_object_length): New, to support
6698 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
241d9cea 6699
e681d187
DH
67002003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6701
6702 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
6703 names and inits in the memoized code of do.
6704
7e59d9d4
MD
67052003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6706
6707 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
6708 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
6709 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6710 a compilation error if error-on-warning is enabled).
6711
9950a42c
MV
67122003-05-17 Marius Vollmer <mvo@zagadka.de>
6713
6714 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6715 removes preprocessor directives from the snarfage that might
6716 otherwise confuse us. These directives appear when compiling with
6717 "-g3", for example.
6718
0068984b
HWN
67192003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6720
26e68795
HWN
6721 * ChangeLog: add my surname
6722
0068984b
HWN
6723 * srcprop.c (scm_finish_srcprop): use
6724 scm_gc_register_collectable_memory()
6725 (scm_make_srcprops): idem.
6726
131805f0
HWN
67272003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6728
6729 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6730 wrap-around for scm_mtrigger
6731 (scm_gc_register_collectable_memory): abort on overflowing
6732 scm_mallocated().
6733
d4611024
KR
67342003-05-13 Kevin Ryde <user42@zip.com.au>
6735
6736 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6737 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6738
7aaf8dc9
MD
67392003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6740
dfd03fb9
MD
6741 * backtrace.c (scm_display_error_message): Introduced fancy
6742 printing with max level 7 and length 10. (Purpose: avoid printing
6743 gigantic objects in error messages.)
6744
6745 * print.c, print.h (scm_i_port_with_print_state): New function.
6746
6747 * print.c (scm_iprin1, scm_printer_apply,
6748 scm_port_with_print_state): Use scm_i_port_with_print_state.
6749 (scm_simple_format): Modified not to destroy print states.
6750 (print_state_mutex): New mutex.
6751 (scm_make_print_state, scm_free_print_state, scm_prin1):
6752 Lock/unlock print_state_mutex.
241d9cea 6753
7aaf8dc9
MD
6754 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6755 Use current names in definitions.
6756
a4d9ffa1
KR
67572003-05-10 Kevin Ryde <user42@zip.com.au>
6758
6759 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6760
d25e96a4
KR
6761 * numbers.c (scm_integer_length): On negative bignums, adjust
6762 mpz_sizeinbase to account for it looking at absolute value where we
6763 want ones-complement.
6764
6765 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6766 since we're only using the ulong return value, and x might not fit.
6767
5bf6a6f0
DH
67682003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6769
6770 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6771 read. This will allow to make the definition in read.c static.
6772
f58c472a
DH
67732003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6774
6775 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6776 from evalext to eval. This will allow to make some of the
6777 definitions in eval.c static.
6778
90382aeb
KR
67792003-05-06 Kevin Ryde <user42@zip.com.au>
6780
6781 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6782 (scm_logcount): Use mpz_com, not mpz_neg.
6783
3b88ed2a
DH
67842003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6785
6786 The purpose of this patch is to make guile's internal memoizers
6787 distinguishable from memoizing macros created on the scheme level
6788 or from user provided primitive memoizing macros. The reason is,
6789 that the internal memoizers are the only ones that are allowed to
6790 transform their scheme input into memoizer byte code, while all
6791 other memoizing macros may only transform scheme code into new
6792 scheme code.
6793
6794 To achieve this, a new macro type 'builtin-macro!' is introduced.
6795 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6796 this will change when the memoizer and executor are separated.
6797
6798 * macros.[ch] (scm_i_makbimacro): New.
6799
6800 * macros.h (SCM_BUILTIN_MACRO_P): New.
6801
6802 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6803
6804 * eval.c, goops.c: All of guile's primitive memoizing macros are
6805 primitive builtin-macros now.
6806
6807 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6808 builtin-macros are handled equally to memoizing macros.
6809
b0780eb1
MV
68102003-05-04 Marius Vollmer <mvo@zagadka.de>
6811
6812 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6813 work around a bug in GCC 2.95.2 but is now a bug in itself.
6814
1cbf4fe9
MV
68152003-05-02 Marius Vollmer <mvo@zagadka.de>
6816
6817 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6818 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6819 scm_tcs_symbols): New.
6820
1a61d41b
MV
68212003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6822
096ecbaf
MV
6823 * deprecated.h, deprecated.c (scm_protect_object,
6824 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6825 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6826 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6827 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6828 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6829 scm_ptob_descriptor, scm_port_rw_active,
6830 scm_close_all_ports_except): New.
6831
1a61d41b
MV
6832 * ports.c (scm_c_port_for_each): New function, mostly copied from
6833 scm_port_for_each.
6834 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6835 * ports.h (scm_c_port_for_each): New prototype.
241d9cea 6836
c8e1d354
MD
68372003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6838
6839 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6840 macro was introduced in anticipation of GOOPS method compilation
6841 code.)
6842
6843 * goops.c: Removed binding of @dispatch.
6844
a4aa2134
DH
68452003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6846
6847 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6848 instructions that bind the macros on the scheme level back to
6849 goops.c in order to make sure again that the bindings go into the
6850 (oop goops) module and are not visible from the outside.
6851
9fbee57e
DH
68522003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6853
6854 * eval.c: Non functional change: Separated R5RS and non-R5RS
6855 macros into different sections of the file and ordered the
6856 memoizers alphabetically.
6857
12841895
DH
68582003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6859
6860 * eval.c (scm_ilookup): Rewritten to improve readability.
6861
6a3f13f0
DH
68622003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6863
6864 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6865 Partially reverted patch from 2003-04-23 in oder to find a better
6866 compromise between readability and debuggability.
6867
b0c5d67b
DH
68682003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6869
6870 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6871 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6872 definitions of the special goops memoizers from goops.[ch] to
6873 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6874 throughout guile.
6875
b9ad392e
MD
68762003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6877
6878 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6879
6880 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6881
6882 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6883
6884 * ioext.c (scm_fdes_to_ports): Ditto.
6885
6886 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6887 lock/unlock scm_i_port_table_mutex.
6888
6889 * strports.c (scm_mkstrport): Ditto.
6890
6891 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6892
6893 * fports.c (scm_fdes_to_port): Ditto.
6894
d0b07b5d
DH
68952003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6896
6897 This set of patches contains no functional changes, only debatable
6898 minor stylistic ones. Still, in order to prepare a patch between
6899 my local copy and the CVS version, I decided to submit the changes
6900 below. Then, the patch will hopefully only contain relevant
6901 modifications :-)
6902
6903 * eval.c (iqq): Added const specifier.
6904
6905 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6906 Use NULL instead of 0 to indicate that a pointer is returned.
6907 Removed some misleading 'fall through' comments.
6908
6909 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6910 Split up long expressions into smaller ones to be more debugging
6911 friendly.
6912
a98e8e98
DH
69132003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6914
6915 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6916 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6917 rather than casting to SCM.
6918
c178c3a6
DH
69192003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6920
6921 * sort.c, pairs.h: Removed unnecessary includes.
6922
d339981a
DH
69232003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6924
6925 * sort.c: Replaced hand-made trampline code by the new official
6926 mechanism from eval.c. This fixes a segfault in the new test file
6927 sort.test.
6928
6929 (quicksort, compare_function, scm_restricted_vector_sort_x,
6930 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6931 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6932 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6933 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6934 eval.c.
6935
6936 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6937 cmp_fun_t): Removed.
6938
6939 (compare_function): Added.
6940
6941 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6942 arithmetics with index arithmetics. Changed quicksort to work on
6943 an array of SCM values instead of an array of characters. Avoid
6944 bytewise copying of SCM elements. Avoid allocating memory on the
6945 stack with alloca. Fixed some comments.
6946
821f18a4
DH
69472003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6948
6949 * eval.c (EXTEND_ENV): Eliminated.
6950
6951 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6952 EXTEND_ENV.
6953
94fb5a6e
DH
69542003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6955
6956 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6957
6958 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6959 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6960
6961 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6962 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6963 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6964 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6965 functions such that they check if the object is a non-immediate.
6966 Further, renamed identifiers to use the scm_dbg_ prefix and made
6967 their inclusion into the lib dependent of the
6968 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6969
fce0b22d
DH
69702003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6971
6972 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6973 debug option.
6974
1685446c
DH
69752003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6976
821f18a4 6977 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
6978 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6979 any calls to SCM_NCONSP any more.
6980
6981 * unif.c (l2ra): Eliminate redundant check.
6982
9ff1720f
DH
69832003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6984
6985 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6986 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6987 SCM_NNULLP. Now, guile itself does not include any calls to
6988 SCM_NNULLP any more.
6989
05b15362
DH
69902003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6991
6992 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6993 scm_copy_tree): Place assignment expressions which are part of
6994 other expressions into an expression of their own.
6995
0c88d7df
DH
69962003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6997
6998 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6999 compare SCM values with !=.
7000
5cb22e96
DH
70012003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7002
7003 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
7004 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
7005 and definition of the memoizer for the generalized set! macro from
7006 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
7007 define the macro object.
7008
7009 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
7010 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
7011 eval.c, it is made static and renamed to s_set_x.
7012
7013 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
7014 over SCM_N<foo>.
7015
a44a9715
DH
70162003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7017
7018 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
7019 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
7020 to undefineds and registered the object as a permanent object.
7021
7022 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
7023 static in eval.c, renamed it to f_apply and registered the object
7024 as a permanent object.
7025
1b43d24c
DH
70262003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7027
5cb22e96 7028 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
7029 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
7030
aec16f99
DH
70312003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7032
7033 * numbers.c (scm_logtest): Fixed argument bug in the call to
7034 mpz_and, which showed up when compiling with SCM_DEBUG defined.
7035
f96460ce
DH
70362003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7037
7038 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
7039 type errors that showed up when compiling with SCM_DEBUG defined.
7040
d0f6ceb8
DH
70412003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7042
7043 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
7044 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
7045 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
7046 fix compile errors with --disable-deprecated.
7047
19a7a089
RB
70482003-04-17 Rob Browning <rlb@defaultvalue.org>
7049
7050 * numbers.c (scm_integer_expt): fix case where we were declaring
7051 vars in the middle of a statement block. Thanks to Thamer
7052 Al-Harbash.
7053
47cd67db
MD
70542003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7055
0fd7dcd3
MD
7056 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
7057 change.
7058
47cd67db
MD
7059 * eq.c (scm_eqv_p): Turned into a primitive generic.
7060
3b8b889c
RB
70612003-04-16 Rob Browning <rlb@defaultvalue.org>
7062
312006bb
RB
7063 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
7064 Thanks to Boyd Gerber.
7065 Added check for __arm__ in addition to arm for LINUX and copied
7066 __s390__ defines from upstream libgc. Thanks to James Treacy for
7067 reporting the problems.
c7ef2ea1 7068
3b8b889c
RB
7069 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
7070
7071 * socket.c: use SCM_CHAR_BIT.
7072
7073 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
7074
7075 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
7076
43261b39
MD
70772003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7078
7079 * feature.c (scm_init_feature): Always add threads feature.
7080
58241edc
MD
70812003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7082
7083 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
7084 scm_at_assert_bound_ref. (We don't want the unbound check. See
7085 oop/goops/active-slot.scm.)
7086
94e91275
RB
70872003-04-14 Rob Browning <rlb@defaultvalue.org>
7088
7089 * tags.h: scm_t_intptr should have been intptr_t.
7090
3071ea27
RB
70912003-04-13 Rob Browning <rlb@defaultvalue.org>
7092
7093 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
7094 test. Instead use
7095 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
7096 as gc_os_dep.c suggests is appropriate.
7097
7098 * goops.c (prep_hashsets): make static to match prototype.
7099 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
7100 Chin.
241d9cea 7101
3071ea27
RB
7102 * c-tokenize.lex: remove trailing comma from enum. Thanks to
7103 Albert Chin.
7104
7105 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
7106 Klausner.
7107
21ab2aeb
MD
71082003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7109
7110 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
7111 indicated through extra fields in getters-n-setters.
7112 (scm_add_slot): Adapted to new format of getters_n_setters slot.
7113 (Thanks to Andy Wingo.)
7114
dff96e95
HWN
71152003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7116
7117 * gc-segment.c: add comment
7118
07921c76
RB
71192003-04-07 Rob Browning <rlb@defaultvalue.org>
7120
b5331f10
RB
7121 * debug.h: change "id" arg name to "info_id" to avoid objective-c
7122 clash.
7123
07921c76
RB
7124 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
7125 and add regression test to standalone/.
7126
71272003-04-06 Rob Browning <rlb@defaultvalue.org>
7128
7129 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
7130 Thanks to Dale P. Smith.
7131
7132 * random.c: #include gmp.h.
7133 (scm_c_random_bignum): normalize result on return.
7134
7135 * init.c: #include gmp.h.
7136
7137 * numbers.h: remove the gmp.h #include (not needed now).
7138
7139 * posix.h: change occurences of "id" to something else so we don't
7140 cause trouble when included via objective-c (can't hurt, might
7141 help). Still have usage in debug.h, though.
7142
938f6b7c
MD
71432003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7144
372691d8
MD
7145 * random.c (scm_c_random_bignum): Don't generate a random number
7146 equal to m (the second argument of scm_c_random_bignum); only
7147 generate numbers in the range 0 <= r < m.
c5f268f8
MD
7148 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
7149 scm_var_random_state.
372691d8 7150
938f6b7c
MD
7151 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
7152 clause.
7153
6cdb8c3f
RB
71542003-04-05 Rob Browning <rlb@defaultvalue.org>
7155
938f6b7c 7156 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
7157 uses before any code.
7158
15635be5
MD
71592003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7160
1ecfd013
MD
7161 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
7162 not top_srcdir.
7163
15635be5
MD
7164 * hashtab.c (rehash_after_gc): Clear to_rehash list before
7165 processing it in order to avoid an infinite loop.
7166
7167 * print.c (scm_prin1): Remember old state of pstate->writingp.
7168
73be1d9e
MV
71692003-04-05 Marius Vollmer <mvo@zagadka.de>
7170
7171 * Changed license terms to the plain LGPL thru-out.
7172
ad815c06
RB
71732003-04-04 Rob Browning <rlb@defaultvalue.org>
7174
7175 * socket.c (FLIPCPY_NET_HOST_128): new macro.
7176 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
7177 rewrite to handle GMP bignums.
7178
7179
7180 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
7181
7182 * ports.c (scm_getc): minor tweak.
7183
7184 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
7185 rewrite to handle GMP bignums.
7186
7187 * numbers.c: rewrite *many* functions to handle GMP bignums.
7188
7189 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
7190 handle GMP bignums.
7191
7192 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
7193
7194 * init.c (check_config): remove SCM_BIGDIG conditionals.
7195 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
7196
7197 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
7198
7199 * eval.c: remove SCM_BIGDIG conditionals.
7200
7201 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
7202
6cdb8c3f
RB
72032003-03-31 Rob Browning <rlb@defaultvalue.org>
7204
7205 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
7206 to Kevin Ryde.)
7207
72082003-03-27 Rob Browning <rlb@defaultvalue.org>
7209
7210 * threads.h: fix various preprocessor usages of new public
7211 symbols to expect 0 or 1 values rather than 1 or undefined.
7212 i.e. change #ifdef to #if, etc.
7213
7214 * threads.c: fix various preprocessor usages of new public
7215 symbols to expect 0 or 1 values rather than 1 or undefined.
7216 i.e. change #ifdef to #if, etc.
7217
7218 * tags.h: fix various preprocessor usages of new public
7219 symbols to expect 0 or 1 values rather than 1 or undefined.
7220 i.e. change #ifdef to #if, etc.
7221
7222 * stacks.c: fix various preprocessor usages of new public
7223 symbols to expect 0 or 1 values rather than 1 or undefined.
7224 i.e. change #ifdef to #if, etc.
7225
7226 * stackchk.h: fix various preprocessor usages of new public
7227 symbols to expect 0 or 1 values rather than 1 or undefined.
7228 i.e. change #ifdef to #if, etc.
7229
7230 * stackchk.c: fix various preprocessor usages of new public
7231 symbols to expect 0 or 1 values rather than 1 or undefined.
7232 i.e. change #ifdef to #if, etc.
7233
7234 * sort.c: fix various preprocessor usages of new public
7235 symbols to expect 0 or 1 values rather than 1 or undefined.
7236 i.e. change #ifdef to #if, etc.
7237
7238 * read.c: fix various preprocessor usages of new public
7239 symbols to expect 0 or 1 values rather than 1 or undefined.
7240 i.e. change #ifdef to #if, etc.
7241
7242 * random.c: fix various preprocessor usages of new public
7243 symbols to expect 0 or 1 values rather than 1 or undefined.
7244 i.e. change #ifdef to #if, etc.
7245
7246 * print.c: fix various preprocessor usages of new public
7247 symbols to expect 0 or 1 values rather than 1 or undefined.
7248 i.e. change #ifdef to #if, etc.
7249
7250 * objects.c: fix various preprocessor usages of new public
7251 symbols to expect 0 or 1 values rather than 1 or undefined.
7252 i.e. change #ifdef to #if, etc.
7253
7254 * numbers.h: fix various preprocessor usages of new public
7255 symbols to expect 0 or 1 values rather than 1 or undefined.
7256 i.e. change #ifdef to #if, etc.
7257
7258 * null-threads.c: fix various preprocessor usages of new public
7259 symbols to expect 0 or 1 values rather than 1 or undefined.
7260 i.e. change #ifdef to #if, etc.
7261
7262 * lang.c: fix various preprocessor usages of new public
7263 symbols to expect 0 or 1 values rather than 1 or undefined.
7264 i.e. change #ifdef to #if, etc.
7265
7266 * lang.h: fix various preprocessor usages of new public
7267 symbols to expect 0 or 1 values rather than 1 or undefined.
7268 i.e. change #ifdef to #if, etc.
7269
7270 * iselect.h: fix various preprocessor usages of new public
7271 symbols to expect 0 or 1 values rather than 1 or undefined.
7272 i.e. change #ifdef to #if, etc.
7273
7274 * init.c: fix various preprocessor usages of new public
7275 symbols to expect 0 or 1 values rather than 1 or undefined.
7276 i.e. change #ifdef to #if, etc.
7277
7278 * gh_data.c: fix various preprocessor usages of new public
7279 symbols to expect 0 or 1 values rather than 1 or undefined.
7280 i.e. change #ifdef to #if, etc.
7281
7282 * gh.h: fix various preprocessor usages of new public
7283 symbols to expect 0 or 1 values rather than 1 or undefined.
7284 i.e. change #ifdef to #if, etc.
7285
7286 * gen-scmconfig.c: change most new public symbols to be defined to
7287 0 or 1 rather than being either 1 or undefined.
7288
7289 * gc_os_dep.c: fix various preprocessor usages of new public
7290 symbols to expect 0 or 1 values rather than 1 or undefined.
7291 i.e. change #ifdef to #if, etc.
7292 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
7293
7294 * gc.h: fix various preprocessor usages of new public
7295 symbols to expect 0 or 1 values rather than 1 or undefined.
7296 i.e. change #ifdef to #if, etc.
7297
7298 * gc-card.c: fix various preprocessor usages of new public
7299 symbols to expect 0 or 1 values rather than 1 or undefined.
7300 i.e. change #ifdef to #if, etc.
7301
7302 * gc-mark.c: fix various preprocessor usages of new public
7303 symbols to expect 0 or 1 values rather than 1 or undefined.
7304 i.e. change #ifdef to #if, etc.
7305
7306 * feature.c: fix various preprocessor usages of new public
7307 symbols to expect 0 or 1 values rather than 1 or undefined.
7308 i.e. change #ifdef to #if, etc.
7309
7310 * evalext.c: fix various preprocessor usages of new public
7311 symbols to expect 0 or 1 values rather than 1 or undefined.
7312 i.e. change #ifdef to #if, etc.
7313
7314 * eval.h: fix various preprocessor usages of new public
7315 symbols to expect 0 or 1 values rather than 1 or undefined.
7316 i.e. change #ifdef to #if, etc.
7317
7318 * eval.c: fix various preprocessor usages of new public
7319 symbols to expect 0 or 1 values rather than 1 or undefined.
7320 i.e. change #ifdef to #if, etc.
7321
7322 * eq.c: fix various preprocessor usages of new public
7323 symbols to expect 0 or 1 values rather than 1 or undefined.
7324 i.e. change #ifdef to #if, etc.
7325
7326 * coop.c: fix various preprocessor usages of new public
7327 symbols to expect 0 or 1 values rather than 1 or undefined.
7328 i.e. change #ifdef to #if, etc.
7329
7330 * coop-threads.c: fix various preprocessor usages of new public
7331 symbols to expect 0 or 1 values rather than 1 or undefined.
7332 i.e. change #ifdef to #if, etc.
7333
7334 * coop-pthreads.c: fix various preprocessor usages of new public
7335 symbols to expect 0 or 1 values rather than 1 or undefined.
7336 i.e. change #ifdef to #if, etc.
7337
7338 * coop-defs.h: fix various preprocessor usages of new public
7339 symbols to expect 0 or 1 values rather than 1 or undefined.
7340 i.e. change #ifdef to #if, etc.
7341
7342 * convert.i.c: fix various preprocessor usages of new public
7343 symbols to expect 0 or 1 values rather than 1 or undefined.
7344 i.e. change #ifdef to #if, etc.
7345
7346 * continuations.c: fix various preprocessor usages of new public
7347 symbols to expect 0 or 1 values rather than 1 or undefined.
7348 i.e. change #ifdef to #if, etc.
7349
7350 * _scm.h: fix various preprocessor usages of new public symbols to
7351 expect 0 or 1 values rather than 1 or undefined. i.e. change
7352 #ifdef to #if, etc.
7353
d11d697a
MV
73542003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7355
9686f86d
MV
7356 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
7357
7358 * deprecated.c, deprecated.h: New files, to collect deprecated
7359 things in one place.
7360 * Makefile.am: Added them in all the right places.
7361
d11d697a
MV
7362 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
7363 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
7364 builds work.
9686f86d
MV
7365 (DOT_X_FILES): Removed "iselect.x".
7366 (DOT_DOC_FILES): Removed "iselect.doc".
241d9cea 7367
e3c0c3b9
RB
73682003-03-25 Rob Browning <rlb@defaultvalue.org>
7369
7370 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
7371 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
7372
7373 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
7374
7375 * vports.c: #include <config.h> if HAVE_CONFIG_H.
7376
7377 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
7378 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7379
7380 * threads.h: replace usage of struct timespect with
7381 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
7382 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
7383 favor of scm_t_timespec from scmconfig.h.
7384
7385 * threads.c: move libguile/_scm.h include to the top so we pick up
7386 any critical defines like _GNU_SOURCE early. Replace usage of
7387 struct timespect with scm_t_timespec. Replace usage of
7388 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
7389 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
7390
7391 * threads-plugin.h: replace usage of struct timespect with
7392 scm_t_timespec.
7393
7394 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
7395 usage of struct timespect with scm_t_timespec.
7396
7397 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
7398 HAVE_INTTYPES_H handling to scmconfig.h. #include
7399 "libguile/__scm.h". Rework handling for scm_t_bits,
7400 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
7401 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
7402 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
7403 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
7404 SCM_HAVE_ARRAYS.
7405
7406 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
7407
7408 * struct.c: #include <config.h> if HAVE_CONFIG_H.
7409
7410 * strports.c: #include <config.h> if HAVE_CONFIG_H.
7411
7412 * strop.c: #include <config.h> if HAVE_CONFIG_H.
7413
7414 * stime.h: move handling of time related headers to scmconfig.h.
7415
7416 * stime.c: #include <config.h> if HAVE_CONFIG_H.
7417
7418 * stacks.c: replace usage of STACK_GROWS_UP with
7419 SCM_STACK_GROWS_UP.
7420
7421 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7422 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7423
7424 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7425 of uint32 and HAVE_UINT_32 with scm_t_int32.
7426
7427 * smob.c: #include <config.h> if HAVE_CONFIG_H.
7428
7429 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
7430
7431 * script.c: #include <config.h> if HAVE_CONFIG_H.
7432
7433 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
7434
7435 * scmconfig.h.top: new file -- preamble for scmconfig.h.
7436
7437 * rw.c: #include <config.h> if HAVE_CONFIG_H.
7438
7439 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
7440
7441 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7442
7443 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
7444
7445 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7446 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
7447 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
7448 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7449
7450 * ramap.c: replace usage of HAVE_LONG_LONGS with
7451 "SCM_SIZEOF_LONG_LONG != 0".
7452
7453 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
7454 "libguile/scmconfig.h".
7455
7456 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
7457
7458 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7459 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7460
7461 * posix.c: #include <config.h> if HAVE_CONFIG_H.
7462
7463 * ports.c: #include <config.h> if HAVE_CONFIG_H.
7464
7465 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7466
7467 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
7468 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
7469 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
7470 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
7471 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
7472 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
7473 "SCM_SIZEOF_LONG_LONG != 0".
7474
7475 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7476 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
7477 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
7478 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
7479
7480 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
7481
7482 * null-threads.h: replace usage of struct timespect with
7483 scm_t_timespec.
7484
7485 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
7486
7487 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
7488 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
7489 scm_t_uint64 and rename usages.
7490
7491 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
7492
7493 * load.c: #include <config.h> if HAVE_CONFIG_H.
7494
7495 * iselect.h: move handling of time related headers to scmconfig.h.
7496 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
7497 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
7498 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
7499
7500 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7501 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7502 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7503
7504 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
7505
7506 * inline.h: #include "libguile/__scm.h" at the top. Change code
7507 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
7508 what to do instead of creating a new public #define. Rename usage
7509 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7510 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
7511 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
7512
7513 * inline.c: rearrange handling -- now we just #define
7514 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
7515 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
7516 appropriate, and we use that in inline.h along with the above
7517 define to determine how to respond.
7518
7519 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7520 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7521
7522 * guile.c: #include <config.h> if HAVE_CONFIG_H.
7523
7524 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7525 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7526
7527 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7528
7529 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
7530
7531 * gen-scmconfig.c: new file -- see comments in file for details.
7532
7533 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
7534
7535 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
7536 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7537
7538 * gc.h: replace usage of SIZEOF_LONG with
7539 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
7540 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
7541 since we handle that in scmconfig.h now.
7542
7543 * gc.c: #include <config.h> if HAVE_CONFIG_H.
7544
7545 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7546 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
7547 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7548
7549 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
7550
7551 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7552 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7553
7554 * fports.c: #include <config.h> if HAVE_CONFIG_H.
7555
7556 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
7557
7558 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7559 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7560
7561 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
7562
7563 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7564 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7565
7566 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
7567 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
7568 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7569 with "SCM_SIZEOF_LONG_LONG != 0".
7570
7571 * error.c: #include <config.h> if HAVE_CONFIG_H.
7572
7573 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7574 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7575 with "SCM_SIZEOF_LONG_LONG != 0".
7576
7577 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
7578
7579 * coop.c: replace usage of struct timespect with scm_t_timespec.
7580 #include <config.h> if HAVE_CONFIG_H.
7581
7582 * coop-threads.c: #include "libguile/_scm.h" early. Replace
7583 usage of struct timespect with scm_t_timespec. Replace usage of
7584 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7585
7586 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
7587 usage of struct timespect with scm_t_timespec. Replace usage of
7588 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7589
7590 * coop-defs.h: move handling of time related headers to
7591 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
7592 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
7593 timespect with scm_t_timespec.
7594
7595 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7596
7597 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7598
7599 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7600 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7601
7602 * continuations.c: move libguile/_scm.h include to the top so we
7603 pick up any critical defines like _GNU_SOURCE early.
7604
7605 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
7606
7607 * async.c: #include <config.h> if HAVE_CONFIG_H.
7608
7609 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
7610
7611 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
7612 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
7613
7614 * __scm.h: move libguile/scmconfig.h include up to the top, so
7615 we're sure to pick up any critical defines like _GNU_SOURCE early.
7616 #include <limits.h> removed in favor of scmconfig.h inclusion when
7617 appropriate. STDC_HEADERS based inclusion of stdlib.h,
7618 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
7619 scmconfig.h inclusion when appropriate. Various Win32 related
7620 definitions removed in favor of scmconfig.h inclusion when
7621 appropriate.
7622 (HAVE_UINTPTR_T): definition removed (see NEWS).
7623 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
7624 (HAVE_LONG_LONGS): definition removed (see NEWS).
7625 (HAVE_LONG_LONG): definition removed (see NEWS).
7626 (HAVE_PTRDIFF_T): definition removed (see NEWS).
7627
7628 * Makefile.am: scmconfig.h is now generated by building and
7629 running gen-scmconfig.h and capturing its output. gen-scmconfig
7630 uses config.h and the configure.in generated gen-scmconfig.h to
7631 decide what to output. See gen-scmconfig.c for details.
7632 (noinst_PROGRAMS): add gen-scmconfig.
7633 (gen_scmconfig_SOURCES): new variable.
7634 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
7635 cross-compiling right.
7636 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
7637 (BUILT_SOURCES): add scmconfig.h.
7638
25e0bf97
MV
76392003-03-19 Marius Vollmer <mvo@zagadka.de>
7640
7641 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
7642 Adrian Bunk. Thanks!
7643
74b6d6e4
MD
76442003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7645
7646 * goops.c (make_class_from_template): New fourth arg:
7647 applicablep.
7648 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
7649 cpls.
7650
7651 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
7652
7653 * goops.c, objects.c, objects.h (scm_make_extended_class): New
7654 second arg: applicablep.
7655 (scm_i_inherit_applicable): New function.
7656
7657 * goops.c, goops.h (scm_class_applicable,
7658 scm_class_extended_accessor): New classes.
7659
5c9e7dad
DH
76602003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7661
7662 * procs.c (scm_procedure_documentation): Removed redundant
7663 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
7664 predicates.
7665
f8af5c6d
MD
76662003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7667
c614a00b
MD
7668 * list.c, list.h (scm_filter, scm_filter_x): New functions.
7669
109c2c9f
MD
7670 * modules.c (scm_module_import_interface): New function.
7671
f8af5c6d
MD
7672 * goops.c, goops.h (scm_class_accessor_method): Renamed from
7673 scm_class_accessor.
7674 (scm_class_accessor): New class.
7675
a48d60b1
MD
76762003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7677
7678 * goops.c (scm_primitive_generic_generic): Enable primitive
7679 generic if not enabled.
7680 (scm_sys_goops_loaded): Setup unextended primitive generics.
7681
7682 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
7683
7684 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
7685 snarf macros.
7686
7687 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
7688 testing example. All uses of SCM_GPROC should be converted.)
7689
7690 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
7691 scm_assoc.
7692
7693 * eq.c (scm_equal_p): Turned into a primitive generic.
7694
84edc049
RB
76952003-02-27 Rob Browning <rlb@defaultvalue.org>
7696
7697 * Makefile.am (scmconfig.h): new target -- generate file from
7698 ../config.h.
7699 (modinclude_HEADERS): remove version.h.
7700 (nodist_modinclude_HEADERS): add version.h.
7701
ea5c9285
MD
77022003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7703
b4a1358c
MD
7704 This fixes a serious GC bug, introduced during the latest
7705 reorganization of the GC, which disabled freeing of structs and
7706 GOOPS objects:
7707
7708 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
7709 SCM_EOL.
53af8255
MD
7710 (scm_struct_prehistory): Move scm_free_structs to
7711 scm_before_mark_c_hook.
ea5c9285 7712
b4a1358c
MD
7713 * gc-card.c (sweep_card): Check that we haven't swept structs on
7714 this card before. That can happen if scm_i_sweep_all_segments has
7715 been called from some other place than scm_igc.
7716
c35738c1
MD
77172003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7718
231a4ea8
MD
7719 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7720 (since hash tables now adapt their size).
7721
7722 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7723 (current number of prehistory bindings; hashtable code will select
7724 a prime which is greater than this value).
7725
7726 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7727 (current number of initial symbols).
7728
7729 * properties.c (scm_init_properties): Don't specify size of
7730 scm_properties_whash.
7731
7732 * objprop.c (scm_init_objprop): Don't specify size of
7733 scm_object_whash.
7734
7735 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7736
c35738c1
MD
7737 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7738
7739 The following changes introduce the use of resizable hash tables
7740 throughout Guile. It also renames the old *-hash-table* functions
7741 to *-alist-vector* and places them, together with the rest of the
7742 weak vector support, in the module (ice-9 weak-vector). We should
7743 probably introduce a new, better, API for weak references, for
7744 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7745 look like and are used like ordinary pairs.)
7746
7747 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7748 leaf_environment_fold, obarray_remove_all): Use hashtable
7749 accessors.
7750
7751 * gc.c (scm_init_storage): Moved hook initialization to
7752 scm_storage_prehistory.
7753 (scm_storage_prehistory): New function.
7754 (scm_igc): Added commentary about placement of
7755 scm_after_sweep_c_hook.
7756
7757 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7758 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7759 SCM_WVECT_WEAK_VALUE_P.
7760
7761 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7762 functions.
7763 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7764 Removed.
7765 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7766 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7767
7768 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7769 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7770
7771 * modules.c (module-reverse-lookup): Use hashtable accessors.
7772
7773 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7774
7775 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7776 scm_make_weak_value_alist_vector,
7777 scm_make_doubly_weak_alist_vector): New functions.
7778
7779 * weaks.c (scm_init_weaks_builtins): New function.
7780
7781 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7782 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7783 SCM_WVECT_NOSCAN_P): New macros.
7784
7785 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7786 and SCM_WVECT_WEAK_VALUE_P.
7787
7788 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7789 allocate_weak_vector and exported.
7790
0a4c1355
MD
77912003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7792
7793 * hashtab.c: Undid thread safety. (We decided that it's better to
7794 let the user explicitly protect the tables (or not) according what
7795 is suitable for the application.)
7796
87ca11ff
MD
77972003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7798
7799 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7800 thread safe and handle resizing tables.
7801 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7802 SCM_DEFER/ALLOW_INTS.
7803
f59a096e
MD
78042003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7805
7806 * hashtab.c (scm_vector_to_hash_table,
7807 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7808 functions.
7809 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7810 safe and handle resizing tables.
7811
7812 * weaks.c (scm_make_weak_key_hash_table,
7813 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7814 Size argument made optional. Return resizable table if not
7815 specified.
7816
4b612c5b
MD
78172003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7818
7819 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7820 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7821
b3d7f6df
MD
78222003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7823
7824 * debug.c (scm_procedure_source): Handle all objects for which
7825 procedure? is #t. (Thanks to Bill Schottstaedt.)
7826
756414cf
MD
78272003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7828
361d631f
MD
7829 * futures.c (mark_futures): Don't need to mark data of recycled
7830 futures.
7831 (scan_futures, cleanup_undead): Be smarter about marking
7832 futures---avoid unnecessary passes through future lists.
7833
756414cf
MD
7834 * futures.h, futures.c: New files; Introduced recycling of
7835 futures. For fine-grained threading this lifts performance to
7836 another level. We can now use parallelization in inner loops of
7837 Guile programs without impossible overhead.
7838
7839 * threads.h, threads.c: Moved futures to their own file.
7840
7841 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7842 (DOT_X_FILES): Added futures.x.
7843 (DOT_DOC_FILES): Added futures.doc.
7844 (modinclude_HEADERS): Added futures.h.
7845
7846 * threads.c, threads.h (scm_i_create_thread): Renamed from
7847 create_thread and made global.
7848
7849 * futures.c (scm_make_future): New procedure.
7850
7851 * eval.c: #include "libguile/futures.h".
7852
7853 * init.c: #include "futures.h"
7854 (scm_init_guile_1): Call scm_init_futures.
7855
7856 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7857
7858 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7859
7860 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7861 functions.
7862
7863 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7864
b4debead
MD
78652003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7866
7867 * threads.c (create_thread): Don't unwind dynwind chain of parent
7868 thread before creation. Just start the new thread with an empty
7869 dynwind chain.
7870
93f26b7b
MD
78712003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7872
7873 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7874
38d8927c
MD
78752003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7876
41c96c32
MD
7877 * threads.c (scm_timed_wait_condition_variable): Support timed
7878 waiting also for simple condition variables.
7879
38d8927c
MD
7880 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7881 of calling the procedure change-object-class.
7882
9cf5d9b7
MD
78832003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7884
7885 * ramap.c (scm_ramapc): Typo in error message.
7886
bbf8d523
MD
78872003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7888
b46fae00
MD
7889 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7890 slots with instance allocation.
241d9cea 7891
bbf8d523
MD
7892 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7893 class.
7894 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7895
7896 * goops.c (scm_generic_function_methods): Support extended
7897 generic functions.
7898
ebf9b47c
MD
78992002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7900
7901 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 7902 Thanks to Neil for pointing this out!
ebf9b47c 7903
14a9ba3f
NJ
79042002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7905
7906 * lang.h: Remove declarations matching definitions removed from
7907 lang.c (just below).
7908
c6a040a8
NJ
79092002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7910
6054d805
NJ
7911 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7912 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7913 and already commented out.
7914
c6a040a8
NJ
7915 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7916 scm_lreadparen): Support reading vectors with Elisp syntax if
7917 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7918 is not currently defined, and there isn't even a configure switch
7919 to enable it yet.)
7920
3742c12f
MV
79212002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7922
7923 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7924 builds work.
7925 (EXTRA_DIST): Added version.h.in.
241d9cea 7926
fb50ef08
MD
79272002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7928
7929 This change makes it possible for one thread to do lazy sweeping
7930 while other threads are running. Now only the mark phase need to
7931 have all threads asleep. We should look further into this issue.
7932 Presently, I've put the locking of scm_i_sweep_mutex at
7933 "conservative" places due to my current lack of knowledge about
7934 the garbage collector. Please feel free to restrict these regions
7935 further to allow for maximal parallelism!
7936
7937 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7938
7939 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7940 scm_gc_register_collectable_memory): Substitute locking of
7941 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7942 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7943 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7944 the single-thread section (which now only contains the mark
7945 phase).
7946 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7947 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7948
7949 * threads.c (gc_section_mutex): Removed.
7950
9ed24633
MD
79512002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7952
0d48aca5
MD
7953 * threads.c (create_thread): Clear parent field in root state in
7954 order not to unnecessarily remember dead threads.
7955
9ed24633
MD
7956 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7957 (scm_trampoline_1, scm_trampoline_2): Use them.
7958
29717c89
MD
79592002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7960
7961 Partial introduction of real plugin interface.
7962
7963 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7964 (EXTRA_DIST): Added threads-plugin.c.
7965
7966 * threads-plugin.h, threads-plugin.c: New files.
7967
7968 * threads.h: #include "libguile/threads-plugin.h".
7969
7970 * threads.c: #include "libguile/threads-plugin.c".
7971
7972 * pthread-threads.c: Temporarily remove debugging functions.
7973
7974 * threads.c, threads.h (scm_yield): Added back.
7975
e29e0b09
MD
79762002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7977
7978 * threads.c (really_launch): Detach before unlocking
7979 thread_admin_mutex in order not to risk being joined.
7980 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7981 thread_admin_mutex locked during GC.
7982
7983 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7984 functions.
7985
0b6843b1 79862002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 7987
6da2dfc4
MD
7988 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7989 support for debugging mutex operations.
7990
1b92fb6b
MD
7991 * threads.c (scm_thread): Removed filed joining_threads.
7992 (thread_print): Print thread number as well as address of thread
7993 structure.
0b6843b1
MD
7994 (scm_join_thread): Bugfix.
7995 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7996 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7997 scm_broadcast_condition_variable): Use the low-level API.
7998 (scm_all_threads): Return copy of thread list (to prevent
7999 unintended destruction).
8000 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 8001
93cd4dcd
MD
8002 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
8003 pthread "native" recursive mutex support.
8004
2ff4f181
MD
80052002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8006
28d52ebb
MD
8007 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
8008 Simply lock a thread C API recursive mutex.
8009 (SCM_NONREC_CRITICAL_SECTION_START,
8010 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
8011 SCM_REC_CRITICAL_SECTION_END): Removed.
8012
8013 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
8014 direct calls to scm_rec_mutex_lock / unlock around the three calls
8015 to scm_m_expand_body.
8016
8017 * eval.c, eval.h (promise_free): New function.
8018 (scm_force): Rewritten; Now thread-safe; Removed
8019 SCM_DEFER/ALLOW_INTS.
8020
8021 * pthread-threads.h: Added partially implemented plugin interface
8022 for recursive mutexes. These are, for now, only intended to be
8023 used internally within the Guile implementation.
8024
8025 * pthread-threads.c: New file.
8026
8027 * threads.c: Conditionally #include "pthread-threads.c".
8028
8029 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
8030 thread-safe;
8031
8032 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
8033 SCM_GLOBAL_REC_MUTEX): New macros.
8034
8035 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
8036 macros---use mutexes instead.
8037
8038 * tags.h (SCM_IM_FUTURE): New tag.
8039
8040 * eval.c (scm_m_future): New primitive macro.
8041 (SCM_CEVAL): Support futures.
8042 (unmemocopy): Support unmemoization of futures.
8043
8044 * print.c (scm_isymnames): Name of future isym.
8045
2ff4f181
MD
8046 * version.c: Unmade some changes to my private copy that got
8047 committed by mistake.
8048
392d2833
MD
80492002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8050
e200ddee
MD
8051 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
8052 2002-12-10.
8053
392d2833
MD
8054 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
8055
8056 * gc.c (scm_gc_sweep): Call it here instead, which is a more
8057 logical place.
8058
8059 * threads.c (create_thread): Remember root object until the handle
8060 of the new thread is on all_threads list.
8061
8062 * root.c (scm_make_root): Moved copying of fluids until after
8063 creation of root handle so that the fluids are GC protected. Also
8064 removed the critical section.
8065
c4c52ebe
MD
80662002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8067
960c408c
MD
8068 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
8069
3cdde9d6 8070 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 8071 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
8072 (scm_realloc): Serialize call to realloc
8073 (scm_calloc): Same for calloc.
8074 Thanks to Wolfgang Jaehrling!
8075 (Now we have to make sure all calls to malloc/realloc are made
8076 through scm_malloc.)
8077
960c408c
MD
8078 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
8079
c4c52ebe
MD
8080 * threads.c (really_launch): Release heap (to prevent deadlock).
8081 (create_thread): Release heap before locking thread admin mutex.
8082
b0dc3d71
MD
80832002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8084
8085 * threads.c (scm_i_thread_invalidate_freelists): New
8086 function.
8087
8088 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
8089
8090 * modules.c (scm_export): Inserted a return statement.
8091
06e80f59
HWN
80922002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8093
8094 * modules.c (scm_export): new function
8095
8096 * gc-card.c: add a note about malloc()/free() overhead.
8097
a12611c3
MD
80982002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
8099
8100 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
8101 in srcdir.
8102
c7fabadf
MD
81032002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8104
8105 These changes remove scm_ints_disabled (which hasn't has any
8106 effect in Guile for quite some time).
241d9cea 8107
c7fabadf
MD
8108 * async.c, error.h (scm_ints_disabled): Removed.
8109
8110 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
8111 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
8112 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
8113 (old_ints): Removed.
8114
8115 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
8116 critical section.
8117 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
8118 SCM_ALLOW_INTS.
8119
9bc4701c
MD
81202002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8121
52340b65
MD
8122 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
8123 Removed accidental #if 0 around these functions.
8124
9bc4701c
MD
8125 These changes are the start of support for preemptive
8126 multithreading. Marius and I have agreed that I commit this code
8127 into the repository although it isn't thoroughly tested and surely
8128 introduces many bugs. The bugs should only be exposed when using
8129 threads, though. Signalling and error handling for threads is
8130 very likely broken. Work on making the implementation cleaner and
8131 more efficient is needed.
241d9cea 8132
9bc4701c
MD
8133 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
8134 (SCM_NONREC_CRITICAL_SECTION_START,
8135 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
8136 SCM_REC_CRITICAL_SECTION_END): New macros.
8137 (SCM_CRITICAL_SECTION_START/END): Defined here.
8138
8139 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
8140 the three calls to scm_m_expand_body.
8141
8142 * gc.h: #include "libguile/pthread-threads.h";
8143 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
8144
8145 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
8146 scm_t_key;
8147
8148 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
8149 access.
8150
8151 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
8152
8153 * gc-freelist.c, threads.c (really_launch): Use
8154 SCM_FREELIST_CREATE.
8155
8156 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
8157
8158 * gc.c (scm_i_expensive_validation_check, scm_gc,
8159 scm_gc_for_newcell): Put threads to sleep before doing GC-related
8160 heap administration so that those pieces of code are executed
8161 single-threaded. We might consider rewriting these code sections
8162 in terms of a "call_gc_code_singly_threaded" construct instead of
8163 calling the pair of scm_i_thread_put_to_sleep () and
8164 scm_i_thread_wake_up (). Also, we would want to have as many of
8165 these sections eleminated.
8166
8167 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
8168
8169 * inline.h: #include "libguile/threads.h"
8170
8171 * pthread-threads.h: Macros now conform more closely to the
8172 pthreads interface. Some of them now take a second argument.
8173
8174 * threads.c, threads.h: Many changes.
8175
81762002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8177
8178 * Makefile.am (version.h): Changed $^ --> $< in rule for
8179 version.h.
241d9cea 8180
b2cbe8d8
RB
81812002-12-08 Rob Browning <rlb@defaultvalue.org>
8182
8183 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
8184 (SCM_MINOR_VERSION): use @--@ substitution now.
8185 (SCM_MICRO_VERSION): use @--@ substitution now.
8186 (scm_effective_version): new function prototype.
8187
8188 * version.c (scm_effective_version): new function, also add
8189 effective-version.
8190
8191 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
8192 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
8193 SCM_LIBRARY_DIR.
8194 (version.h): generate this here rather than configure.in. This
8195 approach tracks source edits better (i.e. more immediately).
8196 Might be worth considering for other .in files too.
8197
5441c65c
MV
81982002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
8199
8200 Reorganized thread package selection. A thread package now only
8201 implements a small set of pthread like functions and Guile
8202 implements the rest on top of that. Guile's implementation is
8203 what the "coop-pthreads" package has been previously. Support for
8204 "coop" threads has been removed until I get time to add it again.
241d9cea 8205
5441c65c
MV
8206 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
8207 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
8208 null-threads.c, coop-pthreads.c.
8209 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
8210 pthread-threads.h.
241d9cea 8211
5441c65c
MV
8212 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
8213
8214 * threads.h: Do not include "libguile/coop-defs.h". Include
8215 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
8216 (previously deprecated) C level thread API prototypes. They are
8217 now in the thread package specific headers, "null-threads.h" and
8218 "pthread-threads.h".
8219 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
8220 New.
8221 (scm_threads_init): Removed.
8222 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
8223 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
8224 SCM_I_THREAD_SWITCH_COUNT): Define here.
8225 (scm_single_thread_p): Removed.
8226 (scm_call_with_new_thread): Take two args directly instead of list
8227 of two args.
8228 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
8229 SCM_SET_THREAD_LOCAL_DATA): Define here.
8230
8231 * threads.c: Merged with "coop-pthreads.c".
8232
8233 * null-threads.h: Implement pthread-like API as a set of macros.
8234
8235 * pthread-threads.h: New, implement pthread-like API by deferring
8236 to pthread itself.
241d9cea 8237
5441c65c
MV
8238 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
8239 has been lost in the reorganization.
8240
504d99c5
MD
82412002-12-01 Mikael Djurfeldt <mdj@linnaeus>
8242
8243 The following change makes it possible to move procedure
8244 application dispatch outside inner loops. The motivation was
8245 clean implementation of efficient replacements of R5RS primitives
8246 in SRFI-1.
8247
8248 The semantics is clear: scm_trampoline_N returns an optimized
8249 version of scm_call_N (or NULL if the procedure isn't applicable
8250 on N args).
8251
8252 Applying the optimization to map and for-each increases efficiency
8253 noticeably. For example, (map abs ls) is 8 times faster than
8254 before.
8255
8256 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
8257
8258 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
8259
8260 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
8261 (map, for-each): Handle also application on two args as a special
8262 case; Use trampolines.
8263
8264 Other changes:
241d9cea 8265
504d99c5
MD
8266 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
8267 (subr2oless): Removed.
8268 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
8269 vector GC protected.
8270
8271 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
8272 scm_out_of_range.
8273
63dd3413
DH
82742002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8275
8276 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
8277
4ba5f279
MD
82782002-11-17 Mikael Djurfeldt <mdj@linnaeus>
8279
8280 * debug.c (scm_make_iloc): Added missing "return".
8281
56ae231f
MV
82822002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
8283
8284 * strports.c (scm_eval_string_in_module): Validate second arg to
8285 be a module. Thanks to Arno Peters!
8286
80b28865
DH
82872002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8288
8289 * .cvsignore: remove goops.c
8290
c88b1456
DH
82912002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8292
8293 * modules.c (scm_env_top_level, scm_lookup_closure_module,
8294 module_variable, scm_module_lookup_closure,
8295 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
8296 scm_system_module_env_p): Don't compare SCM values with C
8297 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
8298 over SCM_NFALSEP.
8299
a8a19efc
DH
83002002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8301
8302 * eval.h (SCM_MAKE_ILOC): New macro.
8303
8304 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
8305 the iloc bitpattern here.
8306
76734914
MD
83072002-11-14 Mikael Djurfeldt <mdj@linnaeus>
8308
8309 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
8310 part of the API, otherwise it's difficult to write Guile
8311 extensions using non-blocking I/O => moved #include
8312 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
8313
8314 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
8315 s_unlock_mutex.
8316
8b5b4a75
MV
83172002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
8318
8319 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
8320 are defined in configure.in.
8321
8322 * threads.c: Removed SCM_API from function definitions. SCM_API
8323 is only for declarations.
8324
e5a83084
MD
83252002-11-07 Mikael Djurfeldt <mdj@linnaeus>
8326
9be8bb45
MD
8327 * coop-pthreads.h: Added support for thread specific data to the
8328 generic C API for the coop-pthreads case.
8329
e5a83084
MD
8330 * threads.c, threads.h (scm_cond_init): Undo unintentional API
8331 change.
6c214b62 8332 (scm_cond_broadcast): Added missing function.
e5a83084 8333
7edf178e
MV
83342002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8335
8336 * coop.c (coop_next_runnable_thread): Removed, wich should have
8337 happened when GUILE_ISELECT was hard-wired.
8338
7f5b1b77
MV
83392002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
8340
7caa1b07
MV
8341 * Makefile.am (libguile_la_SOURCES): Added threads.c
8342 (DOT_DOC_FILES): Added threads.doc.
8343 (DOT_X_FILES): Added threads.x.
8344 (EXTRA_libguile_la_SOURCES): Removed threads.c.
8345 (noinst_HEADERS): Added coop-pthreads.c.
8346 (modinclude_HEADERS): Added coop-pthreads.h.
8347
8348 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
8349 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
8350
bb11cbf4
MV
8351 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
8352 Thanks to Bill Schottstaedt!
8353
1d4cbbed
MV
8354 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
8355
7f5b1b77
MV
8356 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
8357 SCM_COPT_THREADS is defined.
8358 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
8359 is defined.
241d9cea 8360
7f5b1b77
MV
8361 * coop-pthreads.c: Some harmless renamings of internal stuff.
8362 (create_thread): New, generalized version of
8363 scm_call_with_new_thread.
8364 (scm_call_with_new_thread): Use it.
8365 (scm_spawn_thread): New, use create_thread.
241d9cea 8366
d52f53b1
MV
83672002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
8368
8369 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
8370 start testing it now.
8371
8372 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
8373 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
8374 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
8375 is defined.
8376
30f920c3
MV
83772002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
8378
8379 * scmsigs.c (signal_cell_handlers, install_handler_data,
8380 scm_delq_spine_x, really_install_handler, install_handler): New
8381 scheme for triggering signal handlers, to simplify take_signal.
8382 (take_signal): Simplified, to avoid race conditions.
8383 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
8384 hasn't exited yet.
241d9cea 8385
30f920c3
MV
8386 * async.c (scm_async_click): Reset pending_asyncs, handle
8387 signal_asyncs. Don't set cdr of a non-signal async to #f.
8388 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
8389 always. Set pending_asyncs.
8390 (scm_system_async_mark_for_thread): Check that thread has not
8391 exited.
8392 (scm_unmask_signals, decrease_block): Call scm_async_click after
8393 block_asyncs becomes zero.
241d9cea 8394
30f920c3
MV
8395 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
8396 active_asyncs.
8397
8398 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
8399 fields.
8400 * root.c (root_mark): Mark them.
8401 (make_root): Initialize them.
241d9cea 8402
30f920c3
MV
8403 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
8404 USE_COOP_THREADS.
8405 (scm_internal_select): Define one version for USE_COOP_THREADS and
8406 one for USE_NULL_THREADS.
8407 (scm_init_iselect): Likewise.
241d9cea 8408
30f920c3
MV
8409 * inline.h (scm_cell, scm_double_cell): Also allow
8410 USE_COPT_THREADS to not protect the slot initializers.
241d9cea 8411
30f920c3
MV
8412 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
8413 because threads need to be initialized before the stack, but
8414 gsubrs such as scm_timed_condition_variable_wait can only be
8415 created later.
8416
8417 * threads.h: Include "coop-pthreads.h" when requested.
8418 (scm_threads_make_mutex, scm_threads_lock_mutex,
8419 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
8420 not implemented anyway.
8421 (scm_init_thread_procs, scm_try_mutex,
8422 scm_timed_condition_variable_wait,
8423 scm_broadcast_condition_variable, scm_c_thread_exited_p,
8424 scm_thread_exited_p): New prototypes.
8425 (struct timespec): Define if not already defined.
8426 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8427 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8428 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8429 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
8430 deprecated.
8431
8432 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
8433 requested.
8434 (scm_thread_exited_p): New.
8435 (scm_try_mutex, scm_broadcast_condition_variable): Newly
8436 registered procedures.
8437 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
8438 Use the latter as the procedure for "wait-condition-variable",
8439 thus offering a optional timeout parameter to Scheme.
8440 (scm_wait_condition_variable): Implement in terms of
8441 scm_timed_wait_condition_variable.
8442 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8443 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
8444 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8445 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
8446 scm_make_mutex, etc, and deprecate.
8447 (scm_init_threads): Do not create smobs, leave this to
8448 scm_threads_init. Do not include "threads.x" file.
8449 (scm_init_thread_procs): New, include "threads.x" here.
8450
8451 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
8452 scm_null_mutex_lock, scm_null_mutex_unlock,
8453 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
8454 scm_null_condvar_wait, scm_null_condvar_signal,
8455 scm_null_condvar_destroy): Removed.
8456 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
8457 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
8458 scm_cond_destory): Do not define, they are now deprecated and
8459 handled by threads.{h,c}.
241d9cea 8460
30f920c3
MV
8461 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
8462 (scm_threads_init): Create smobs here, using the appropriate
8463 sizes.
8464 (block): Removed, now unused.
8465 (scm_c_thread_exited_p): New.
8466 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
8467 scm_null_mutex_destroy, scm_null_condvar_init,
8468 scm_null_condvar_wait, scm_null_condvar_signal,
8469 scm_null_condvar_destroy): Removed and updated users to do their
8470 task directly.
8471 (scm_try_mutex, timeval_subtract,
8472 scm_timed_wait_condition_variable,
8473 scm_broadcast_condition_variable): New.
8474 (scm_wait_condition_variable): Removed.
8475
8476 * coop-defs.h (coop_m): Added 'level' field.
8477 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8478 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8479 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8480 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
8481 define.
8482 (coop_condition_variable_broadcast): New.
8483
8484 * coop-threads.c (scm_threads_init): Create smobs here, using the
8485 appropriate sizes.
8486 (scm_c_thread_exited_p, scm_try_mutex,
8487 scm_timed_wait_condition_variable,
8488 scm_broadcast_condition_variable): New.
8489 (scm_wait_condition_variable): Removed.
8490
8491 * coop.c (coop_new_mutex_init): Initialize level.
8492 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
8493 level.
8494 (coop_condition_variable_signal): Renamed to
8495 coop_condition_variable_broadcast and reimplemented in terms of
8496 that. Thus...
8497 (coop_condition_variable_broadcast): New.
8498
8499 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
8500
8501 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
241d9cea 8502
087ed40d
MV
85032002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
8504
65a23095
MV
8505 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
8506 of system headers.
8507
087ed40d
MV
8508 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
8509 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 8510 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 8511
5ec1d2c8
DH
85122002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8513
8514 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
8515 scm_definedp to scm_defined_p and deprecated scm_definedp.
8516
100ae50d
DH
85172002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8518
8519 * async.h, async.c (scm_system_async): Fixed deprecation to work
8520 correctly when deprecated features are excluded.
8521
2794cb50
MV
85222002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8523
8524 * async.c (scm_system_async_mark_for_thread): Validate thread
8525 argument.
8526
8527 * coop-threads.c (scm_i_thread_root): Do not validate argument.
8528
8529 * feature.c (scm_init_feature): Don't add 'threads' for
8530 USE_NULL_THREADS.
8531
8532 * inline.h (scm_cell, scm_double_cell): Also allow
8533 USE_NULL_THREADS to not protect the slot initializers.
8534
8535 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
8536 "USE_THREAD".
8537
8538 * Makefile.am (noinst_HEADERS): Added null-threads.c.
8539 (modinclude_HEADERS): Added null-threads.h.
8540
8541 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
8542 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
8543 (scm_init_threads): Use generic type names scm_t_mutex and
8544 scm_t_cond instead of coop_m and coop_c.
8545
8546 * null-threads.c, null-threads.h: New files.
8547
ff810d7a
MV
85482002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
8549
8550 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
8551 This is to support makes that know about "$<" only in pattern
8552 rules, like Sun's make.
8553
a90bdb73
MV
85542002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
8555
8556 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
8557 substitution. Thanks to David Allouche!
8558
e71a8bf2
DH
85592002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8560
8561 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
8562 !SCM_ENABLE_DEPRECATED.
8563
41f77ff5
MV
85642002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8565
504d99c5 8566 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
8567 scm_i_thread_root when USE_THREADS is defined. Use scm_root
8568 otherwise.
8569
8570 * scmsigs.c (take_signal): Only call scm_i_thread_root when
8571 USE_THREADS is defined. Use scm_root otherwise.
8572 (scm_sigaction_for_thread): Ignore THREAD argument when
8573 USE_THREADS is not defined. Also, move THREAD argument defaulting
8574 out of HAVE_SIGACTION section, which was a bug.
8575
6d16b125
MV
85762002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8577
8578 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
8579 signal_handlers, not the closure that is used as the async.
8580 The closure is stored in signal_handler_cells, as previously.
241d9cea 8581
acfa1f52
MV
85822002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
8583
8584 * root.h (scm_root_state): Added 'block_async' slot.
8585 (scm_active_asyncs): Removed abbrev.
8586 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
8587
8588 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
8589 abbrev.
8590
8591 * async.h (scm_call_with_blocked_asyncs,
8592 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8593 scm_c_call_with_unblocked_asyncs): New prototypes.
8594 (scm_mask_signals, scm_unmask_signals): Deprecated.
8595 (scm_mask_ints): Turned into a macro.
8596 * async.c (scm_mask_ints): Removed.
8597 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
8598 this should not be necessary.
8599 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
8600 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
8601 deprecation warning and check for errornous use. Set block_asyncs
8602 instead of scm_mask_ints.
8603 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
8604 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8605 scm_c_call_with_unblocked_asyncs): New.
241d9cea 8606
acfa1f52
MV
8607 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
8608 Asyncs are enabled by default.
8609
34010f56
NJ
86102002-10-09 Neil Jerram <neil@ossau.uklinux.net>
8611
8612 * vports.c (scm_make_soft_port): Allow vector argument to carry a
8613 6th element: an input waiting thunk.
8614 (sf_input_waiting): New.
8615
9310d6f2
MV
86162002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
8617
8618 * root.c (root_mark): Mark active_asyncs slot.
8619
8620 * async.c (scm_async_click): Set the cdr of a executed handler
8621 cell to SCM_BOOL_F, not SCM_EOL.
8622 (scm_i_queue_async_cell): Queue the cell at the end of the list,
8623 and only if the handler procedure is not already present.
8624 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
8625 with SCM_BOOL_F.
8626 * scmsigs.c (scm_sigaction_for_thread): Likewise.
241d9cea 8627
ac48c719
RB
86282002-10-04 Rob Browning <rlb@defaultvalue.org>
8629
1360a142
RB
8630 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
8631
8632 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
8633 scm_lt_dlopenext, and scm_lt_dlerror.
8634 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
8635 and scm_lt_dlerror.
8636 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
8637 and scm_lt_dlerror.
8638 (sysdep_dynl_init): switch to scm_lt_dlinit();
8639
8640 * Makefile.am (libguile_la_LIBADD): switch to use
8641 libguile-ltdl.la.
8642
504d99c5 8643 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 8644
497092c9
MV
86452002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
8646
8647 * scmsigs.h (scm_sigaction_for_thread): New prototype.
8648 * scmsigs.c (got_signal): Removed.
8649 (signal_handler_cells, signal_handler_threads): New.
8650 (take_signal): Queue the cell of the signal for the specified
8651 thread. Reset the signal handler on systems that don't have
8652 sigaction.
8653 (sys_deliver_signals): Removed.
8654 (close_1): New.
8655 (scm_sigaction_for_thread): Renamed from scm_sigaction and
8656 extended to also set the thread of a signal and allocate a cell
8657 for it. Keep the Scheme name "sigaction". Check that signum is
8658 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
8659 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
8660 (scm_init_scmsigs): Allocate signal_handler_cells and
8661 signal_handler_threads vectors.
8662
8663 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
8664 that system asnycs and user asyncs are separated. Reimplemented
8665 system asyncs to work per-thread.
8666
8667 * gc.c (scm_init_gc): Do not use scm_system_async.
8668
8669 * async.h (scm_asyncs_pending, scm_set_tick_rate,
8670 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
8671 Removed prototypes.
8672 (scm_i_queue_async_cell): New.
241d9cea 8673
497092c9
MV
8674 * __scm.h (scm_asyncs_pending_p): Removed.
8675 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
8676 scm_asyncs_pending_p.
8677
8678 * async.h (scm_system_async_mark_for_thread): New prototype.
8679
8680 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
8681
8682 * root.h (scm_root_state): Added new "active_asyncs" slot.
8683 * root.c (scm_make_root): Initialize it to SCM_EOL.
8684
8685 * coop-defs.h (coop_t): Added new "handle" slot.
8686 * coop-threads.c (all_threads, scm_current_thread,
8687 scm_all_threads, scm_i_thread_root): New.
8688 (scm_threads_init): Add main thread to all_threads.
8689 (scheme_launch_thread): Remove thread from all_threads when it
8690 terminates.
8691 (scm_call_with_new_thread): Initialize handle slot of coop_t
8692 structure and add new thread to all_threads.
8693 (scm_spawn_thread): Likewise.
8694
8695 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
8696 * threads.c (scm_current_thread, scm_all_threads): Register as
8697 primitives.
8698
8699 * dynl.c: Use scm_lt_ prefix for libltdl functions.
8700
480fa28d
NJ
87012002-09-29 Neil Jerram <neil@ossau.uklinux.net>
8702
8703 * script.c (scm_compile_shell_switches): Fix bad spelling of
8704 `explicitly' in comment.
8705
87062002-09-28 Neil Jerram <neil@ossau.uklinux.net>
8707
8708 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
8709 Refer to provided? in doc string rather than deprecated feature?.
8710
3553e1d1
GH
87112002-09-24 Gary Houston <ghouston@arglist.com>
8712
8713 * inline.h (scm_double_cell): prevent reordering of statements
8714 with any following code (for GCC 3 strict-aliasing).
8715 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8716 the earlier version of the reordering prevention.
8717
4ad0814a
HWN
87182002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8719
241d9cea 8720 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
4ad0814a 8721
e88e4f2e
HWN
87222002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8723
8724 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8725 protection.
8726
1e71eafb
HWN
87272002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8728
8729 * inline.h: include stdio.h
8730
8731 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8732
61ef9c1f
HWN
87332002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8734
dac04e9f
HWN
8735 * gc-segment.c (scm_i_make_initial_segment): check user settings
8736 for sanity.
8737
8738 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8739 sanity.
dac04e9f 8740
241d9cea 8741 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
dac04e9f 8742
ffd72400
HWN
8743 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8744
8745 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
8746 these won't ever wrap around with high memory usage. Thanks to
8747 Sven Hartrumpf for finding this.
ffd72400 8748
5bd4a949
HWN
8749 * gc-freelist.c: include <stdio.h>
8750
61ef9c1f
HWN
8751 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8752
ffd0ef3b
MV
87532002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8754
a27e3d14
MV
8755 * vectors.h (SCM_VECTOR_REF): New.
8756
ffd0ef3b
MV
8757 * snarf.h (SCM_DEFINE_PUBLIC): New.
8758
f8a1712b
MV
87592002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8760
8761 * socket.c (scm_addr_vector): Added size of address to arguments.
8762 Use it to avoid accessing a non-existent path in a sockaddr_un.
8763 Changed all callers.
8764
7200a36b
HWN
87652002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8766
1383773b
HWN
8767 * gc.h: remove DOUBLECELL card flags.
8768
8769 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8770 scm_realloc().
8771
8772 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8773 init loop; handle this from scm_init_card_freelist()
8774
8775 * gc-card.c (scm_init_card_freelist): init bit vector here.
8776
7200a36b 8777 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 8778 num2float.i.c (FLOAT2NUM): idem
7200a36b 8779
9981de3a
HWN
87802002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8781
8782 * eval.h: prepend libguile/ to include path
8783
19647556
MV
87842002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8785
8786 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
9a5fa6e9 8787 years. Thanks to Martin Grabmüller!
19647556 8788
38d1262a
HWN
87892002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8790
8791 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8792 unsigned numbers for computing minimum heap increment. This
8793 prevents weird results when a a negative minimum increment is
8794 computed.
8795
f800ebfb
MV
87962002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8797
8798 * gc_os_dep.c: When we have __libc_stack_end, use that directly
19647556 8799 instead of the old tricks.
f800ebfb
MV
8800
8801 * guile-snarf.in: Do not expect the input file to be the first
8802 argument after the optional "-o" option, just pass everything to
8803 the pre-processor without extracting the input file name.
8804
4a5309c9
HWN
88052002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8806
8807 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
241d9cea 8808 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
4a5309c9 8809
f2893a25
HWN
88102002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8811
8812 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8813 Bill Schottstaedt for the bug report
8814
483f518b
MV
88152002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8816
8817 * print.c (scm_iprin1): Print primitives generics always as
8818 "primitive-generic" even when they have no primitive methods yet.
8819
917adc55
GH
88202002-08-17 Gary Houston <ghouston@arglist.com>
8821
8822 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8823 call.
8824
67329a9e
HWN
88252002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8826
85835e59 8827 * ports.c (scm_add_to_port_table): small bugfix.
67329a9e
HWN
8828
8829 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8830 malloc.
8831
8832 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8833 only use SCM_MIN_HEAP_SEG_SIZE.
8834
8835 * ports.c (scm_add_to_port_table): add backwards compatibility
8836 function
8837
8838 * ports.h: use scm_i_ prefix for port table and port table size.
241d9cea 8839
f07c886a
MD
88402002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8841
8842 * vports.c (scm_make_soft_port): Initialize pt variable.
8843
dc61cbc6
MV
88442002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8845
8846 * strports.h (scm_c_eval_string_in_module,
8847 scm_eval_string_in_module): New prototypes.
8848 * strports.c (scm_eval_string_in_module): New, but use
8849 "eval-string" as the Scheme name and make second parameter
8850 optional.
8851 (scm_eval_string): Implement using scm_eval_string_in_module.
8852 (scm_c_eval_string_in_module): New.
8853 Thanks to Ralf Mattes for the suggestion!
241d9cea 8854
da220f27
HWN
88552002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8856
be3ff021
HWN
8857 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8858 message and abort.
241d9cea 8859
be3ff021
HWN
8860 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8861
da220f27
HWN
8862 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8863 stead of scm_t_port*. The function now takes a tag argument.
8864
eab1b259
HWN
88652002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8866
8867 * gc.h: add scm_debug_cells_gc_interval to public interface
8868
8869 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8870
8871 * gc.c (scm_i_expensive_validation_check): separate expensive
8872 validation checks from cheap ones.
8873
ba1b2226
HWN
88742002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8875
8876 * read.c (scm_input_error): new function: give meaningful error
8877 messages, and throw read-error
8878
8879 * gc-malloc.c (scm_calloc): add scm_calloc.
8880
39e8f371
HWN
88812002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8882
241d9cea 8883 * tags.h: remove GC bits documentation from the tags table.
33138b05 8884
39e8f371
HWN
8885 * read.c (INPUT_ERROR): Prepare for file:line:column error
8886 messages for errors in scm_lreadr() and friends.
8887
88882002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8889
8890 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
241d9cea 8891 implementation).
39e8f371
HWN
8892 (scm_gc_calloc): new function
8893
26e68795 88942002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
402788a9 8895
5f16b897
HWN
8896 * ports.c (scm_new_port_table_entry): init port entry to 0
8897 completely.
241d9cea 8898
402788a9
HWN
8899 * ports.c (scm_new_port_table_entry): change function from
8900 scm_add_to_port_table. This prevents cells with null-pointers from
8901 being exposed to GC.
8902
504d99c5 8903 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
402788a9 8904 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
c8a1bdc4 8905
504d99c5 8906 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
c2cbcc57
HWN
8907 to gc-stats.
8908
c8a1bdc4
HWN
8909 * numbers.c (big2str): return "0" for 0 iso. ""
8910
c2cbcc57
HWN
8911 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8912 private-gc.h: new file
c8a1bdc4
HWN
8913
8914 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8915 sweeping. More documentation in workbook/newgc.text
8916
aea06b34
MV
89172002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8918
8919 * random.c (rstate_free): Return zero.
8920
35060ae9
DH
89212002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8922
8923 * environments.c (remove_key_from_alist): Removed.
8924
8925 (obarray_remove): Simplified.
8926
6a535440
SJ
89272002-07-24 Stefan Jahn <stefan@lkcc.org>
8928
241d9cea 8929 * continuations.h: ia64: Include <signal.h> before
6a535440
SJ
8930 <sys/ucontext.h>.
8931
bcbd25b7
DH
89322002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8933
8934 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8935
26e68795 89362002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1d1559ce
HWN
8937
8938 * goops.c (scm_compute_applicable_methods): use
8939 scm_remember_upto_here_1 iso scm_remember_upto_here
8940
8941 * macros.c: include deprecation.h
8942
504d99c5 8943 * vectors.c (scm_vector_move_right_x): remove side effect in
1d1559ce 8944 macro arg.
504d99c5 8945 (scm_vector_move_left_x): idem.
1d1559ce
HWN
8946
8947 * net_db.c, posix.c, socket.c: variable naming: change ans to
8948 result.
8949
8950 * sort.c (scm_merge_vector_x): accept vector as argument
8951 iso. SCM*. This is needed for full GC correctness.
8952
8953 * gc.h: undo previous undocumented changes related to #ifdef
8954 GENGC.
8955
26e68795 89562002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
34d19ef6
HWN
8957
8958 * *.c: add space after commas everywhere.
8959
8960 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8961 Document cases where SCM_WRITABLE_VELTS() is used.
241d9cea 8962
34d19ef6
HWN
8963 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8964 SCM_VELTS() return a const pointer
8965 (SCM_VECTOR_SET): add macro.
8966
3063e30a
DH
89672002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8968
8969 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8970 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8971 Deprecated the special kind of built-in dynamic syntax transformer
8972 that was inaccurately named "macro". Note: The built-in syntax
8973 transformers that are named "mmacro" or "memoizing-macro" still
8974 exist, and it is these which come much closer to what one would
8975 call a macro.
8976
4c5f8e8f
NJ
89772002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8978
8979 * eval.c (unmemocopy): Fix for
8980 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8981 with internal definitions and local-eval).
8982
4f6f9ae3
GH
89832002-07-12 Gary Houston <ghouston@arglist.com>
8984
8985 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8986 defined. They don't do anything useful, especially since the
8987 only case where DYNAMIC_LINKING is undefined seems to be
8988 when --with-modules=no is given to configure, which is basically
8989 requesting that the "dynamic linking module" be omitted.
8990
8991 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8992 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8993
8994 * extensions.c (load_extension): check DYNAMIC_LINKING for
8995 scm_dynamic_call.
8996 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8997 scm_init_dynamic_linking.
8998
c21935e6
MV
89992002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
9000
9001 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
9002 check for Cygwin when including <winsock2.h>, this is already
9003 check for by configure. Thus, revert change from 2002-07-07.
9004
ee95d597
GH
90052002-07-10 Gary Houston <ghouston@arglist.com>
9006
9540b68f 9007 * eq.c: include <string.h>
ee95d597
GH
9008 * dynl.c: docstring editing.
9009
46732b54
GH
90102002-07-09 Gary Houston <ghouston@arglist.com>
9011
9012 * dynl.c (scm_dynamic_call): docstring editing.
9013
c09d12e0
RB
90142002-07-08 Rob Browning <rlb@defaultvalue.org>
9015
9016 * gc_os_dep.c: HURD fixes.
9017
3f6571eb
MV
90182002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
9019
9020 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
9021
9022 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
9023 this should be compiled for BUILD host.
9024 Override default rule for
9025 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
9026 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
9027 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
9028
9029 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
9030 <winsock2.h> on Cygwin even when we have it.
9031
bd987b8e
DH
90322002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9033
9034 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
9035 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
9036 the code. Full number of arguments checking of closures is
9037 mandatory now. However, the option to disable the checking has
9038 most probably not been used anyway.
9039
8505e285
DH
90402002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
9041
bd987b8e
DH
9042 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
9043 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
9044 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
9045 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
9046 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
9047 (scm_source_properties, scm_set_source_properties_x,
9048 scm_source_property): Removed compile time option SCM_RECKLESS to
9049 clean up the code. Full number of arguments checking of closures
9050 is mandatory now. However, the option to disable the checking has
9051 most probably not been used anyway.
8505e285
DH
9052
9053 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
9054 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
9055
2ee08a28
GH
90562002-06-30 Gary Houston <ghouston@arglist.com>
9057
732b9327
GH
9058 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
9059 do anything useful. Added a comment about need for a mutex if
9060 pre-emptive threading is supported.
9061
2ee08a28
GH
9062 * posix.c (scm_convert_exec_args), dynl.c
9063 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
9064 allocate_string_pointers. 2) simplified: don't reallocate the
9065 strings, just make an array of pointers 3) avoid memory leaks on
9066 error 4) let the procedure report errors in its own name.
9067 Consequences: 1) the procedures now assume that SCM strings are
9068 nul-terminated, which should always be the case. 2) Since strings
9069 are not reallocated, it's now possible for strings passed to
9070 dynamic-args-call to be mutated.
9071
c136c920
DH
90722002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9073
9074 * __scm.h, eval.c, eval.h: Removed compile time option
9075 MEMOIZE_LOCALS to clean up the code. Now, caching of local
9076 variable positions during memoization is mandatory. However, the
9077 option to disable the caching has most probably not been used
9078 anyway.
9079
e540802f
MV
90802002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
9081
9082 * print.c (scm_simple_format): Print missing part of format before
9083 ~% control. Thanks to Daniel Skarda!
9084
4c1ffcdd
MV
90852002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
9086
9087 * mkstemp.c: Added exception notice to license statement.
9088
ba1b077b
MV
90892002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
9090
8dc434c7
MV
9091 * numbers.c (mem2ureal): When returning an inexact zero, make sure
9092 it is represented as a floating point value so that we can change
9093 its sign.
9094
ba1b077b
MV
9095 From John W. Eaton <jwe@bevo.che.wisc.edu>
9096
9097 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
9098
74c58131
TTN
90992002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
9100
9101 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
0926d46e 9102 in addition to `i386'. Thanks to Dale P. Smith.
74c58131 9103
8766d4b5
MV
91042002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
9105
9106 * eq.c (real_eqv): New.
9107 (scm_eqv_p): Use it when comparing reals and complexes.
9108
9109 * numbers.c: Include <string.h>, for strncmp.
9110 (mem2complex): Do not create negative NaNs.
9111 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
9112 NaN.
9113 (scm_inexact_to_exact): Signal error when converting a NaN.
74c58131 9114
1d8c3cad
MV
91152002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
9116
9117 * posix.c (scm_putenv): Handle removing variables explicitely by
9118 calling unsetenv.
9119
9120 From John W. Eaton.
74c58131 9121
1d8c3cad
MV
9122 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
9123 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
9124 and scm_nan.
9125 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
9126 [SCO && ! HAVE_ISINF] (isinf): New function.
9127 (xisinf, xisnan): New functions.
9128 (IS_INF): Delete.
9129 (isfinite): Define in terms of xisinf.
9130 (scm_inf_p, scm_nan_p): New functions.
9131 (guile_Inf, guile_NaN): New file-scope vars.
9132 (guile_ieee_init): New function.
9133 (scm_inf, scm_nan): New functions.
9134 (idbl2str): Handle Inf and NaN. Remove funny label and
9135 corresponding gotos.
9136 (ALLOW_DIVIDE_BY_ZERO): New macro.
9137 (scm_divide): Allow division by zero to occur if
9138 ALLOW_DIVIDE_BY_ZERO is defined.
9139 Handle bignums and ints as special cases.
9140
9141 Additional stuff by me:
9142
9143 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
9144 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
9145 (iflo2str): Don't output a '+' for negative numbers or for Inf and
9146 NaN. They will provide their own sign.
9147 (scm_divide): Only allow divides by inexact zeros. Dividing by
9148 exact zeros still signals an errors.
74c58131 9149
7a0c65eb
TTN
91502002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
9151
87b72063 9152 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb 9153 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
504d99c5 9154 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb
TTN
9155 Thanks to Andreas Rottmann.
9156
5e423a39
GH
91572002-04-20 Gary Houston <ghouston@arglist.com>
9158
9159 * removal of unused fields in root state (thanks to Christopher
9160 Cramer for pointing out the disuse.)
9161 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1841c44a 9162 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
b6287a25 9163
5e423a39
GH
9164 * root.c (root_mark): don't mark them.
9165 (scm_make_root): don't set them to #f.
9166 * init.c (scm_init_standard_ports): don't initialise with the
9167 default ports.
9168
9d2cce76
MV
91692002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
9170
9171 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
9172 cpp_sig_symbols.c.
9173
91742002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
9175
9176 * guile-snarf.in: Do not clean input file. This would write to
9177 the $(srcdir) during a VPATH build, which is not allowed. It also
9178 isn't needed since it only works when an output filename has been
9179 specified and in that case we don't need to clean the input file
9180 because the output file will already exist.
9181
6f79b6cc
MV
91822002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
9183
9184 * guile-snarf: Install the trap for removing $cleanfile only when
9185 the value of $cleanfile is actually known.
9186
21550b10
RB
91872002-04-10 Rob Browning <rlb@defaultvalue.org>
9188
9189 * .cvsignore: add versiondat.h and *.c.clean.c.
9190
bc76d628
DH
91912002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
9192
9193 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
9194 function, replaces macro SRCBRKP.
9195
9196 (SRCBRKP): Deprecated.
9197
9198 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
9199 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
9200 temporary variable.
9201
5132eef0
DH
92022002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9203
9204 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
9205 CHECK_EXIT and removed all references to them.
9206
680516ba
DH
92072002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
9208
9209 * debug.h (scm_ready_p, debug_print): Removed declarations.
9210
9211 * eval.c (EVALCELLCAR): Removed.
9212
9213 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
9214 operation from condition.
9215
e2bd68e0
MV
92162002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
9217
9218 * guile-snarf.in: When the output filename is "-", write to
9219 stdout. When no "-o" option is given, use "-" as the output
9220 filename (i.e., stdout). Only 'clean' the inputfile or remove the
9221 output file on error when the output file name is not "-". Define
9222 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
9223
9224 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
9225
ab1f1094
DH
92262002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
9227
9228 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
9229 and the corresponding goto statements. Removed redundant code.
9230
42030fb2
DH
92312002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
9232
9233 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
9234 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
9235 Re-enabled handing of rpsubrs and asubrs.
9236
e050d4f8
DH
92372002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
9238
9239 * eval.c (SIDEVAL): Removed.
9240
9241 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
9242 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
9243 argument checking order for set! to locals, variables and symbols.
9244 Improvements to control structure. Removed some uses of arg1 and
9245 arg2 as temporary variables.
9246
a6d344d3
TTN
92472002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
9248
9249 * guile-snarf.in: Remove "--compat=1.4" support.
9250 Add "-d" and "-D" support.
9251
9252 (deprecated_list): New var.
9253 (compat_mode_clean_xxx): Delete.
9254 (grep_deprecated): New func.
9255 ("main"): If "-d" or "-D", call `grep_deprecated'.
9256
3939e9df
NJ
92572002-03-15 Neil Jerram <neil@ossau.uklinux.net>
9258
387d418c
NJ
9259 * hooks.h: Change scm_t_c_hookype_t everywhere to
9260 scm_t_c_hook_type.
9261
bb2c02f2 9262 Docstring fixes:
a6d344d3 9263
bb2c02f2
NJ
9264 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
9265
9266 * ports.c (scm_sys_make_void_port): Use `@file'.
9267
9268 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
9269 than `else'.
9270
9271 * macros.c (scm_makmacro): Don't say that the form replaces its
9272 source, because it doesn't.
9273 (scm_makmmacro): Clarify difference between this and scm_makmacro.
9274
9275 * backtrace.c (scm_display_error), filesys.c (scm_umask,
9276 scm_select, scm_basename), goops.c (scm_method_generic_function),
9277 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
9278 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
9279 spelling mistakes.
9280
3939e9df
NJ
9281 * debug.c (scm_debug_options), eval.c
9282 (scm_eval_options_interface), read.c (scm_read_options): Change
9283 incorrect @var in docstring to @code.
9284
3b3cc781
MV
92852002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
9286
500b0d5b
MV
9287 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
9288
3b3cc781
MV
9289 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
9290 guile-snarf can remove trailing non-init code.
9291
9292 * guile-snarf.in (modern_snarf): Remove everything following and
9293 including "^:^" from the output.
9294
dff98306
DH
92952002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9296
9297 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
9298
9299 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
9300
2287fb53
TTN
93012002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
9302
9303 * guile-snarf.in: Update copyright.
9304 Rewrite to internalize error handling.
9305 Add "--compat=1.4" handling.
9306 Add commentary.
9307
9308 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
9309 (snarfcppopts): New var.
9310 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
9311 (.c.doc): Use $(snarfcppopts).
9312
822250a4
TTN
9313 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
9314 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
9315 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
9316 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
9317 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
9318 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
9319 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
9320 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
9321 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
9322 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
9323 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
9324 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
9325 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
9326 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
9327
b7798e10
DH
93282002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9329
9330 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
9331 The next step will be to remove the union 't' and simplify the
9332 code of SCM_CEVAL that way.
9333
04a98cff
NJ
93342002-03-12 Neil Jerram <neil@ossau.uklinux.net>
9335
9336 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
9337 rreadfds, rwritefds, rexceptfds): Made static.
9338
9339 * gc.c (terminating), fports.c (terminating): Renamed
9340 scm_i_terminating.
9341
16d98032
MV
93422002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
9343
5046250e
MV
9344 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
9345 potential overflow problems. Thanks to John W Eaton!
9346
8794207d
MV
9347 * strop.c (string_capitalize_x): Treat characters as unsigned so
9348 that 8-bit chars work. Thanks to David Pirotte!
16d98032 9349
1d15ecd3
DH
93502002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9351
9352 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
9353 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
9354 proc as temporary variables. Introduced temporary variables with
9355 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9356 by a more explicit predicate in some places.
9357
93582002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
f12745b6
DH
9359
9360 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
9361 Added lots of comments regarding the implementation of #@dispatch.
9362 Changed intra-procedure communication to use t.arg1 instead of
9363 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
9364 variables. Introduced temporary variables with hopefully
9365 descriptive names for clarification. Replaced SCM_N?IMP by a more
9366 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
9367 of computing the expression explicitly. Eliminate now unused
9368 label nontoplevel_cdrxbegin.
9369
9370 * goops.h (SCM_INSTANCE_HASH): New macro.
9371
9372 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
9373
1ebf1566
TTN
93742002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9375
9376 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
9377 "guile-snarf" moved back from `noinst_SCRIPTS'.
9378
020c890c
NJ
93792002-03-08 Neil Jerram <neil@ossau.uklinux.net>
9380
58d233cc
NJ
9381 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
9382 exists when adding a source property other than those that are
9383 handled explicitly, add the new property to the SRCPROPS obj's
9384 plist.
9385
020c890c
NJ
9386 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
9387 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
9388
9389 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
9390 debug.status. It isn't needed, and it can overflow the bits
9391 reserved for it (which may lead to a segv or a GC abort).
9392
3f04400d
DH
93932002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9394
9395 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
9396 side-effecting operations from conditions and macro calls.
9397 Replaced SCM_N?IMP by a more explicit predicate in some places.
9398 Minimized the scope of some variables.
9399
97820583
SJ
94002002-03-02 Stefan Jahn <stefan@lkcc.org>
9401
9402 * convert.i.c: Fixed int <-> long conversions which would have
9403 failed if their sizes were different.
9404
38ace99e
DH
94052002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9406
9407 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
9408 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
9409 as temporary variables. Removed side-effecting operations from
9410 conditions and macro calls. Introduced temporary variables with
9411 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9412 by a more explicit predicate in some places. Removed code that
9413 was conditionally compiled if SICP was defined - which it never
9414 is.
9415
e5cb71a0
DH
94162002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9417
9418 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
9419 Removed some uses of t.arg1 and proc as temporary variables.
9420 Removed side-effecting operations from conditions and macro calls.
9421 Introduced temporary variables with hopefully descriptive names
9422 for clarification. Replaced SCM_N?IMP by a more explicit
9423 predicate in some places.
9424
6a0f6ff3
DH
94252002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9426
9427 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
9428 explicit predicate in some places.
9429
9430 (CHECK_EQVISH): Removed.
9431
9432 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
9433 variables. Removed side-effecting operations from conditions and
9434 macro calls. Introduced temporary variables for clarification.
9435 Sorted if-else-if check for the type of the last form in a list by
9436 frequency. Avoided some unnecessary tail-recursion calls.
9437
228a24ef
DH
94382002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9439
9440 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
9441 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
9442 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
9443 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
9444 scm_cell and all its uses to scm_t_cell in accordance to Guile's
9445 naming scheme for types.
9446
9447 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
9448 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
9449 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
9450 (scm_make_environment), eval.c (scm_closure), fports.c
9451 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
9452 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
9453 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
9454 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
9455 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
9456 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
9457 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
9458 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
9459 scm_alloc_cell to scm_cell.
9460
9461 * environments.c (core_environments_observe), gc.c
9462 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
9463 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
9464 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
9465 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
9466 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
9467 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
9468 (allocate_weak_vector): Renamed scm_alloc_double_cell to
9469 scm_double_cell.
9470
edb810bb
SJ
94712002-02-27 Stefan Jahn <stefan@lkcc.org>
9472
9473 * convert.i.c, convert.c: Better range checking.
9474
9475 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
9476
1ebf1566 9477 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
edb810bb
SJ
9478 Windows (MinGW).
9479
327d4dd3
TTN
94802002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
9481
9482 * Makefile.am: Update path to pre-inst-guile automake frag.
9483
89d7a92c 94842002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
646052c0
DH
9485
9486 * gc.c (scm_gc_sweep): Make it compile even when deprecated
9487 features are excluded.
9488
89d7a92c 94892002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
bac0e232
DH
9490
9491 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
9492
4f2716b6
GH
94932002-02-25 Gary Houston <ghouston@arglist.com>
9494
9495 * convert.c: include <string.h> for convert_i.c.
9496
46151112
RB
94972002-02-24 Rob Browning <rlb@defaultvalue.org>
9498
9499 * .cvsignore: add stamp-h1.
9500
cd328b4f
NJ
95012002-02-21 Neil Jerram <neil@ossau.uklinux.net>
9502
9503 * unif.c (scm_array_to_list): Correct name, which had been
9504 accidentally changed to scm_t_arrayo_list!
9505
c709de7f
MD
95062002-02-20 Mikael Djurfeldt <mdj@linnaeus>
9507
9508 * gc.c (scm_gc_sweep): Print an error message when aborting due to
9509 underflowing scm_mallocated.
9510
c1965d31
MV
95112002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9512
9513 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
9514 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
9515 Reimplemented using the new scm_gc_malloc, etc., functions and
9516 deprecated.
9517
b606945b
TTN
95182002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
9519
9520 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
9521 to `noinst_PROGRAMS'.
9522 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
9523 (noinst_PROGRAMS, noinst_SCRIPTS): New.
9524
7c686ba8
MV
95252002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9526
9527 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
9528 non-zero is returned from a port or smob free function.
9529 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
9530 scm_gc_register_collectable_memory,
9531 scm_gc_unregister_collectable_memory, scm_gc_malloc,
9532 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
9533
9534 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
9535 debug-malloc.c, dynl.c, environments.c, environments.h,
9536 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
9537 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
9538 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
9539 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
9540 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
9541 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
9542 appropriate. Return zero from smob and port free functions.
9543
9544 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
9545
9546 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
9547 messages while the GC is running.
9548 (scm_c_issue_deprecation_warning_fmt): New.
9549
9550 * fports.c (scm_setvbuf): Reset read buffer to saved values when
9551 it is pointing to the putback buffer.
9552
66adc0a6
TTN
95532002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9554
9555 * gsubr.c (create_gsubr): On "too many args" error,
9556 also display arg count and name. Thanks to Bill Schottstaedt.
9557
0187b4f4
TTN
95582002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
9559
9560 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
9561
9562 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
9563 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
9564 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
9565
9566 * guile-snarf-docs-texi.in: Bye bye.
9567
402e687c
MV
95682002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9569
9570 * symbols.c (scm_make_symbol): Fix typo in docstring.
9571
9572 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9573 scm_make_symbol): New prototypes.
9574
319b98ed
MV
95752002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
9576
9577 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
9578 (SCM_SYMBOL_INTERNED_P): New.
9579 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
9580 SCM_MAKINUM since hash values can well be bignums.
9581 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
9582 This signals a interned symbol.
9583 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9584 scm_make_symbol): New.
0187b4f4 9585
319b98ed
MV
9586 * print.c (scm_iprin1): Print uninterned symbols unreadably.
9587
34472dfe
TTN
95882002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
9589
9590 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
9591 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
0187b4f4 9592 Thanks to Dave Love.
34472dfe 9593
1b39c2e3
MV
95942002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
9595
9596 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
319b98ed 9597 This might help to make unintended clashes less likely.
1b39c2e3
MV
9598 (scm_string_to_symbol): Protect the string until the symbols is
9599 created.
9600
1fa86ca5
SJ
96012002-01-31 Stefan Jahn <stefan@lkcc.org>
9602
9603 * convert.c, convert.h, convert.i.c: New files containing C
34472dfe 9604 array to Scheme conversion helpers meant to be replacement
1fa86ca5
SJ
9605 functions for the deprecated gh interface.
9606
9607 * Makefile.am: Setup rules for new `convert.*' files.
9608
af68e5e5
SJ
96092002-01-28 Stefan Jahn <stefan@lkcc.org>
9610
9611 * symbols.c (scm_c_symbol2str): New function, replacement for
9612 `gh_scm2newsymbol()'.
9613
34472dfe 9614 * strings.c (scm_c_substring2str): New function. Proper
af68e5e5
SJ
9615 replacement for `gh_get_substr()'.
9616
9617 * socket.c: Include `stdint.h' if available for the `uint32_t'
9618 declaration.
9619
504d99c5 9620 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
af68e5e5
SJ
9621 compiler warning).
9622
9623 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
9624
c96d76b8 96252002-01-22 Neil Jerram <neil@ossau.uklinux.net>
34472dfe 9626
c96d76b8 9627 Other changes unrelated to Elisp...
34472dfe 9628
c96d76b8
NJ
9629 * eval.c (scm_m_if): Use s_if rather than repeating string literal
9630 "if".
9631 (comments): Fix a few typos.
9632 (scm_for_each): Add parentheses around oddly unparenthesized
9633 if/while conditions.
9634
9635 * read.c (scm_read_opts): Add full stop at end of doc for
9636 `keywords' option.
9637
9638 * script.c (scm_compile_shell_switches): Use scm_str2symbol
9639 instead of gh_symbol2scm.
9640
9641 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
9642 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
9643
9644 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
9645 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
9646
9647 First batch of changes for Elisp support...
9648
9649 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
9650 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
9651 throw.c, vectors.c, weaks.c: Add #include for lang.h.
9652
9653 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
9654 conditionalize compilation and initialization of Elisp support
9655 function.
34472dfe 9656
c96d76b8
NJ
9657 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
9658 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
9659 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
9660 filesys.c (fill_select_type, retrieve_select_type), fluids.c
9661 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
9662 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
9663 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
bbd26b5a
NJ
9664 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
9665 options.c (change_option_setting, scm_options), posix.c
9666 (environ_list_to_c), print.c (scm_iprlist), throw.c
9667 (scm_exit_status), vectors.c (scm_vector), weaks.c
9668 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
c96d76b8
NJ
9669
9670 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
9671 just SCM_FALSEP.
34472dfe 9672
c96d76b8
NJ
9673 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
9674 of just SCM_BOOLP.
9675
9676 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
9677 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
9678 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
9679 (scm_m_atfop): Support function aliasing. Support both function
9680 args, which need transformation, and macro args, which do not.
9681 Add explanatory comments.
9682 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
9683 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
9684 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
9685 SCM_NULLP || SCM_NILP instead of checks against (removed)
9686 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
9687 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
9688
9689 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
9690 scm_m_while, scm_nil_eq): Commented out; I don't think we need
9691 these, but I don't want to remove them yet, just in case.
9692 (scm_init_lang): Define `%nil' variable on Scheme level to hold
9693 Elisp nil value.
9694
9695 * lang.h (SCM_NILP): Test against Elisp nil value instead of
9696 against (removed) scm_lisp_nil.
9697 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
9698 (SCM_NULL_OR_NIL_P): New.
9699
9700 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
9701 SCM_VALIDATE_NULL.
9702
9703 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
9704 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
9705 value).
9706
9707 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
9708 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
9709 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9710 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9711
9712 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9713 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9714 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9715 Numbering shifted down accordingly.
9716 (SCM_ELISP_NIL): New IFLAG.
9717
9718 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
34472dfe 9719
a392ee15
DH
97202002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9721
9722 * eval.c: Removed outdated references to "everr". Improved some
9723 comments.
9724
9725 (scm_deval_args, deval_args): Renamed scm_deval_args to
9726 deval_args, since it is not part of the interface.
9727
9728 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9729 use references to debug.vect[0] before it exists. Add parentheses
9730 to switch statement.
9731
9732 * goops.h: Added local emacs variables.
9733
24933780
DH
97342002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9735
9736 * eval.[ch] (scm_deval_args): Made static.
9737
9738 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9739 test.
9740
9741 * strings.c (scm_c_string2str): Clarified comment. Replaced
9742 THINKME by FIXME for uniformness. Removed question about whether
9743 arguments need to be protected from garbage collection: Arguments
9744 must be protected as any other variable.
9745
f9450cdb
DH
97462002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9747
9748 * procs.h (SCM_CLOSURE_BODY): New Macro.
9749
9750 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9751 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9752 get_slot_value, set_slot_value), procs.c
9753 (scm_procedure_documentation), sort.c (closureless), stacks.c
9754 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9755 SCM_CLOSURE_BODY.
9756
9757 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9758
5dc64f64
MV
97592001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9760
9761 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9762 use "cp" instead.
9763
197ee3d3
MV
97642001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9765
9766 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9767 everywhere.
9768
9769 * continuations.c (scm_make_continuation): Do not retain the
9770 throw_value when the continuation is invoked.
9771
4d4528e7
SJ
97722001-12-08 Stefan Jahn <stefan@lkcc.org>
9773
9774 * strings.c (scm_c_string2str): New function. Converts a
34472dfe 9775 given Scheme string into a C string. Also put in two
4d4528e7
SJ
9776 THINKME's regarding the malloc policy for the missing converter
9777 routines.
9778
98347362
NJ
97792001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9780
9781 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9782 gh_symbol2scm.
9783
1fc8902f
DH
97842001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9785
9786 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9787 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9788
9789 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9790 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9791 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9792 macros.
9793
9794 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9795
9796 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9797 SCM_GC_CELL_* macros when accessing free cells.
9798
4878beec
MV
97992001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9800
9801 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
34472dfe 9802 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
4878beec
MV
9803 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9804 * strings.h (SCM_MAKE_STRING_TAG): New.
9805 * procs.h (SCM_MAKE_CCLO_TAG): New.
9806 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9807
9808 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9809 !SCM_ENABLE_DEPRECATED.
9810
9811 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9812 New.
9813
9814 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9815 signal handlers are allowed to divert the flow of control. Call
9816 scm_system_async_mark_from_signal_handler instead of
9817 scm_system_async_mark.
9818
9819
9820 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9821 scm_alloc_double_cell in their place.
34472dfe 9822
4878beec
MV
9823 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9824 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9825 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9826 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9827 scm_deprecated_newcell and scm_deprecated_newcell2.
9828
9829 gc.c (scm_tc16_allocated): Only define when including deprecated
9830 features.
9831 (scm_debug_newcell, scm_debug_newcell2): Removed.
9832 (scm_init_storage): Do not initialize scm_tc16_allocated.
9833 (scm_init_gc): Do it here.
9834 (allocated_mark): New, from old code.
9835 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
34472dfe 9836
4878beec 9837 * inline.c, inline.h: New files.
34472dfe 9838 * Makefile.am: Added them in all the right places.
4878beec 9839
34472dfe 9840 * _scm.h: Include "libguile/inline.h".
4878beec
MV
9841
9842 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9843 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9844 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9845 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9846 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9847 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9848 scm_alloc_double_cell, respectively.
9849
d2bc7fae
MV
98502001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9851
9852 * modules.c (scm_c_use_module): Adapt to changes to
9853 `process-use-modules'.
9854
5eec27e9
DH
98552001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9856
9857 * numbers.c (scm_divide): Fix more division by zero errors.
9858
8978878f
GH
98592001-11-21 Gary Houston <ghouston@arglist.com>
9860
9861 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9862 obsolete. autogen.sh says:
9863 invalid unused variable name: `OMIT_DEPENDENCIES'
9864
164826d3
DH
98652001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9866
9867 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9868 reporting the bug.
9869
84aff7a7
MV
98702001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9871
9872 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9873 Thanks to Eric Gillespie, Jr!
34472dfe 9874
6063dc1d
SJ
98752001-11-21 Stefan Jahn <stefan@lkcc.org>
9876
34472dfe
TTN
9877 * win32-socket.c (getservent, setservent, endservent,
9878 getprotoent, setprotoent, endprotoent): New functions.
6063dc1d
SJ
9879 Appropriate replacements for M$-Windows.
9880
9881 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9882 these definitions for GUILE_DEBUG.
9883
9884 * net_db.c: Include "win32-socket.h" if compiling with a native
34472dfe
TTN
9885 M$-Windows compiler. Include some pieces of code (protoent and
9886 servent interface) protected by HAVE_* macros when using a
6063dc1d
SJ
9887 native M$-Windows compiler.
9888
351982f6
MV
98892001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9890
9891 * modules.c (scm_c_export): Do nothing when the first argument is
9892 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9893
849038b5
TTN
98942001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9895
9896 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9897 also include `buildstamp'.
9898
5c790b44
RB
98992001-11-18 Rob Browning <rlb@defaultvalue.org>
9900
9901 * version.c
9902 (s_scm_major_version): use SCM_MAJOR_VERSION.
9903 (s_scm_minor_version): use SCM_MINOR_VERSION.
9904 (s_scm_micro_version): use SCM_MICRO_VERSION.
9905 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9906 SCM_MICRO_VERSION.
9907
9908 * version.h.in
9909 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9910 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9911 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9912
694a9bb3
NJ
99132001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9914
9915 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9916 Rewrite docstrings without reference to substring-move-left/right,
9917 since the latter no longer exist.
9918
302c12b4
DH
99192001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9920
9921 * eval.c: Removed bogus comment about acros.
9922
9923 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9924 Minimize scope of local variable. Eliminate dependency on
9925 macro DEBUG_EXTENSIONS.
9926
9927 (s_splicing): New error message string.
9928
9929 (scm_m_body): Issue 'bad body' message rather than 'missing
9930 expression' message.
9931
9932 (scm_m_quote): Eliminate unnecessary copying.
9933
9934 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9935 checking of the body to scm_m_body.
9936
9937 (scm_m_do): Move comment to function header. Rename arg1 to
9938 binding. Made the code a bit easier to read.
9939
9940 (evalcar): Removed.
9941
9942 (iqq): Added a comment. Changed the depth parameter to
9943 unsigned. Use size_t for vector lengths. Make sure vector object
9944 is gc protected as long as its contents are read. Add some syntax
9945 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9946 control structure a bit.
9947
9948 (scm_m_delay): Added comment about the implementation of
9949 scm_m_delay.
9950
9951 (scm_m_define): Add comment about guile's currying define
9952 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9953 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9954
9955 (scm_m_letrec1): Removed. Part of the functionality is taken
9956 over by the new function 'transform_bindings'.
9957
9958 (transform_bindings): New function. Takes over some of the
9959 functionality of removed function 'scm_m_letrec1', namely to split
9960 a list of bindings into a reversed list of variables and a list of
9961 initializers.
9962
9963 (scm_m_letrec): Call 'transform_bindings'.
9964
9965 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9966 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9967 test. Use 'transform_bindings'. Fixed scoping error with named
9968 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9969 Jerram for suggesting the fix). Cleaned up the control structure
9970 a bit.
9971
9972 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9973 unnecessary consing. Eliminated unnecessary
9974 SCM_DEFER/ALLOW_INTS.
9975
9976 (SCM_CEVAL): Un-obfuscated some loops.
9977
cecb4a5e
NJ
99782001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9979
8f85c0c6
NJ
9980 * gc.h (scm_unhash_name): Old declaration removed.
9981
9982 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9983 @code{primitive-eval}.
9984
9985 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9986 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9987 Change @deffnx lines in docstrings to say {Scheme Procedure}
9988 rather than primitive or procedure.
9989
9990 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9991 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9992 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9993 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9994 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9995 (scm_string_split, scm_string_ci_to_symbol), strings.c
9996 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9997 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9998 Docstring fixes and improvements reflecting edits that have been
9999 made in the reference manual source.
10000
10001 * objprop.c (scm_object_properties, scm_set_object_properties_x,
10002 scm_object_property, scm_set_object_property_x): Remove invalid
10003 @deffnx lines for corresponding procedure property primitives.
10004
cecb4a5e
NJ
10005 These changes add a @deffnx C function declaration and function
10006 index entries for each Guile primitive to the copy of the doc
10007 snarf output that is used for reference manual synchronization.
10008 Online help is unchanged.
849038b5 10009
cecb4a5e
NJ
10010 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
10011 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
10012 name to SCM_SNARF_DOCS.
849038b5 10013
cecb4a5e
NJ
10014 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
10015 snarf-check-and-output-texi.
10016
10017 * Makefile.am (guile-procedures.texi): New rule.
10018 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
10019 Changed so that the last stage of doc snarfing is now performed
10020 twice, once to produce guile-procedures.txt for online help, and
10021 once to produce guile.texi for reference manual synchronization.
10022
ddea3325
DH
100232001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
10024
10025 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
10026 safely usable as a single statement followed by a ';', for example
10027 in an if statement.
10028
10029 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
10030
72dd0a03
NJ
100312001-11-13 Neil Jerram <neil@ossau.uklinux.net>
10032
10033 * random.c (scm_random_solid_sphere_x,
10034 scm_random_hollow_sphere_x): Correct "shere" typos.
10035
10036 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
10037
10038 * version.c (scm_version): Update docstring to include
10039 `micro-version'.
10040
6558eda6
MV
100412001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
10042
409b8588
MV
10043 * modules.c (scm_c_export): Call va_end after collecting the
10044 symbols.
10045
adb8c0f2
MV
10046 * strop.h, strop.c (scm_substring_move_left_x,
10047 scm_substring_move_right_x): Removed.
10048
6558eda6
MV
10049 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
10050 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
10051 configure does.
10052
5d8fc640
MV
100532001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
10054
10055 * numbers.c: Document macros to define when including
10056 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
10057 now rely on SIZEOF_ macros that have been figured out at
10058 configure time.
10059
10060 * num2integral.i.c: Adapt to new interface.
10061 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
10062 target type by casting it and checking whether it is still the
10063 same. Do not try to handle bignums for integral types that are
10064 smaller than fixnums. When handling bignums, collect the
10065 magnituse first into a unsigned type, and correctly check for
10066 overflow.
10067 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
10068 only -MIN_VALUE can still be negative of all negative numbers (in
10069 twos-complement).
10070
849038b5 10071 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
10072
10073 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
10074 HAVE_LONG_LONG depending on whether their size is non-zero.
10075
d6b8cf11
TTN
100762001-11-11 Thien-Thi Nguyen <ttn@glug.org>
10077
10078 * strop.c (scm_string_null_p): Docfix; nfc.
10079 Thanks to Scott Lenser.
10080
9401323e
NJ
100812001-11-07 Neil Jerram <neil@ossau.uklinux.net>
10082
10083 * extensions.c (scm_load_extension): Canonicalize docstring
10084 whitespace.
10085
10086 * unif.c (scm_uniform_array_write), ports.c
10087 (scm_current_output_port, scm_force_output), dynwind.c
10088 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
10089 filesys.c (scm_open, scm_lstat), struct.c
10090 (scm_make_struct_layout), random.c (scm_random,
10091 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
10092 (scm_i_index): Remove superfluous whitespace from end of docstring
10093 lines.
10094
10095 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
10096 strings.c (scm_make_string), variable.c (scm_make_variable,
10097 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
10098 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
10099 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
10100 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
10101 newline at end of docstrings.
10102
10103 * modules.c (scm_set_current_module): Add missing newline to
10104 docstring.
10105
b4e15479
SJ
101062001-11-07 Stefan Jahn <stefan@lkcc.org>
10107
10108 * win32-socket.[ch]: New files. Defines Winsock-API error codes
10109 and makes them available through Guile. That is because the
10110 Winsock-API does not store its errors in `errno' and thus cannot
10111 return error messages via `strerror (errno)'.
10112
10113 * socket.c (scm_init_socket): Initialize `win32-socket' part
10114 here under M$-Windows.
10115
d6b8cf11 10116 * numbers.h: Added missing declaration of
b4e15479
SJ
10117 `scm_sys_check_number_conversions()'.
10118
10119 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
10120 and use in `(strerror)' and `(system-error)'.
10121
d6b8cf11 10122 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
10123 `win32-socket.[ch]' to extra source and header files.
10124
7ab89df1
MV
101252001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
10126
10127 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
10128 a call to turn-on-debugging when --debug has been given instead of
10129 turning it on directly. Also, handle new `--no-debug' option,
10130 which might suppress the call to turn-on-debugging.
10131
0233bfc1
SJ
101322001-11-05 Stefan Jahn <stefan@lkcc.org>
10133
10134 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
10135
8f99e3f3
SJ
101362001-11-04 Stefan Jahn <stefan@lkcc.org>
10137
10138 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 10139 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
10140 correctly and allows a clean build on Win32.
10141
d6b8cf11 10142 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
10143 into FOO.
10144
10145 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
10146 import macros for external libraries (libcrypt, libqthreads,
10147 libreadline and libregex).
10148
10149 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
10150
10151 * posix.c (flock): Added support for flock() in M$-Windows.
10152
10153 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
10154 of __SCM_IMPORT__.
10155
10156 * fports.c (getflags): Differentiate reading and writing pipes
10157 descriptors.
10158
10159 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
10160 M$-Windows.
10161
10162 * coop.c (coop_condition_variable_timed_wait_mutex): Use
10163 conditionalized error code if `ETIMEDOUT' is not available.
10164 (scm_thread_usleep): Remove bogus declaration of `struct timeval
10165 timeout'.
10166
10167 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
10168 belongs. That is because NO_PREPRO_MAGIC gets undefined after
10169 each inclusion of `num2integral.i.c'.
10170 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
10171
4e21fa60
MV
101722001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
10173
10174 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
10175 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
10176
08112c95
MD
101772001-11-02 Mikael Djurfeldt <mdj@linnaeus>
10178
7663c008
MD
10179 * print.c (scm_iprin1): Mark print state as revealed when
10180 dispatching to generic write or display.
10181
08112c95
MD
10182 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
10183
f712d833
MV
101842001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
10185
10186 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 10187
f712d833
MV
10188 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
10189 and win32-dirent.h to extra source and header files. These
10190 include the uname() and the POSIX dirent interface implementation
10191 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
10192 linkers which do not allow unresolved symbols inside shared
10193 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
10194 dependency.
10195
d6b8cf11
TTN
10196 * __scm.h: Defined SCM_API. This macro gets prepended to all
10197 function and data definitions which should be exported or imported
f712d833
MV
10198 in the resulting dynamic link library in the Win32 port.
10199
10200 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 10201 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
10202 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
10203 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
10204 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
10205 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
10206 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 10207 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
10208 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
10209 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
10210 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
10211 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
10212 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
10213 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
10214 vports.h, weaks.h:
10215 Prefixed each each exported symbol with SCM_API.
10216
d6b8cf11 10217 * continuations.c: Added comment about the use of the extern
f712d833
MV
10218 declarations of {get,set}context() functions used in the ia64 port.
10219
10220 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
10221 is meant to be a `unsigned long *'.
10222
10223 * filesys.c: Include `direct.h' if possible. Use local
10224 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
10225 macros for M$-Windows. Implementation of `fstat_Win32()' which is
10226 able to differentiate between sockets and other file descriptors.
10227 Use this function as wrapper in `scm_fstat()'. Fixed typo in
10228 `scm_dirname()'.
10229
10230 * fports.c: Include `io.h' is possible. Put `*fp' into referring
10231 statement block in `scm_fport_buffer_add()'.
10232 Some corrections in `getflags()'.
d6b8cf11 10233
f712d833
MV
10234 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
10235
10236 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
10237 build on Win32. Disable preloaded symbols on Win2 platforms.
10238
10239 * ioext.c, ports.c: Include `io.h' is possible.
10240
10241 * mkstemp.c: Include `process.h' is possible.
10242
10243 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
10244 too.
10245 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
10246
10247 * posix.c: Remove unnecessary dirent includes and defines. Include
10248 local `win32-uname.h' for MinGW. Extern declaration of
10249 `mkstemp()' for systems where it does not exists. Make
10250 `getlogin()' available on M$-Windows.
10251
10252 * scmsigs.c: Made `usleep()' avalable on MinGW.
10253
10254 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
10255
10256 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
10257
10258 * win32-uname.c: Include "win32-uname.h", not "uname.h".
10259
d245ce23
MD
102602001-10-28 Mikael Djurfeldt <mdj@linnaeus>
10261
10262 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
10263 Don't apply scm_uniform_vector_length on arrays.
10264
8ea46249
DH
102652001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
10266
10267 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
10268 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
10269 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
10270 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
10271 scm_list_<n> over scm_cons[2]?.
10272
10273 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
10274 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
10275 SCM_C[AD][AD]R instead of explicit form.
10276
10277 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
10278 comparison parameters.
10279
10280 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
10281 !SCM_NULLP instead of SCM_NIMP.
10282
10283 (scm_m_case): Don't copy the form. Renamed proc to clause and
10284 minimized its scope. Renamed x to clauses. Removed side
10285 effecting operation from macro call.
10286
10287 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
10288 minimized its scope. Renamed x to clauses. Minimized the scope
10289 of variable 'len'. Make sure the else clause is treated specially
10290 even in case of '=>' occurences. Don't change the else to #t in
10291 order to be able to distinguish this case in the evaluator. Leave
10292 type checking of the recipient to the evaluator.
10293
10294 (scm_c_improper_memq): Made the comment somewhat clearer.
10295
10296 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
10297 test for SCM_IM_LET at the place of the formal parameters.
10298 Simplified the formal parameter checking.
10299
10300 (scm_m_letstar): Added Comment. Renamed proc to bindings.
10301 Renamed arg1 to binding and minimized its scope. Eliminated
10302 unnecessary consing.
10303
10304 (scm_m_do): Renamed proc to bindings. Minimized the scope of
10305 variable 'len'.
10306
10307 (build_binding_list): New static function.
10308
10309 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
10310 Further, split up the 'letrec' unmemoizing code to the
10311 corresponding parts for 'do', 'let' and 'letrec', adding comments
10312 to each form. Cleanup the handling of the do form (This removes
10313 some *real* code :-).
10314
10315 (SCM_CEVAL): Removed side effecting operation from macro call.
10316 Handle the 'else clause of the 'cond form specially - the symbol
10317 'else is not replaced with #t any more.
10318
8186c4f5
GH
103192001-10-14 Gary Houston <ghouston@arglist.com>
10320
10321 * version.c (scm_version): use sprintf instead of snprintf,
10322 for portability. thanks to Bill Schottstaedt.
10323
89759084
MD
103242001-10-14 Mikael Djurfeldt <mdj@linnaeus>
10325
10326 * read.c (scm_lreadr): When user-defined hash procedure returns
10327 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
10328 an exception. (This prevents parsing of uniform vectors from
10329 interfering with parsing of numbers.)
10330
9c7ce563
MV
103312001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
10332
10333 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
10334 PTRDIFF_MIN. Thanks to Ken Raeburn.
10335
103362001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
10337
10338 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
10339
10340 * eval.c (scm_m_atbind): First try to find the variable without
10341 defining it locally; when it has not been found, define it
10342 locally.
10343
10344 * modules.c (module_variable): Pass over variables that exist but
10345 are unbound.
10346
103472001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10348
10349 * backtrace.c (display_backtrace_file_and_line): Only use
10350 scm_basename when POSIX support is compiled in. Thanks to Chris
10351 Cramer.
10352
1fe5e088
DH
103532001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10354
10355 * numbers.c (mem2uinteger): Return number read so far when coming
10356 across a hexdigit after having read a # or if not reading a hex
10357 value. This will enable the calling code to correctly handle
10358 forms like 1e2. (The background is, that the exponent markers d,
10359 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
10360 providing this patch.
10361
10362 (mem2complex): Fix erroneous double-negation. Now, numbers like
10363 1-i will be read correctly.
10364
68665a97
MD
103652001-10-12 Mikael Djurfeldt <mdj@linnaeus>
10366
10367 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
10368
10369 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
10370
d5cf5324
DH
103712001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
10372
10373 * print.c (scm_print_state_vtable, print_state_pool):
10374 Initialize. These variables are now registered as gc roots.
10375
10376 (scm_current_pstate): Update documentation.
10377
10378 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
10379 scm_prin1, scm_init_print): print_state_pool is registered as a
10380 gc root and thus does not need to be protected by a surrounding
10381 pair any more.
10382
10383 (make_print_state): The car of print_state_pool no longer holds
10384 the scm_print_state_vtable.
10385
10386 (scm_current_pstate, scm_make_print_state, print_circref,
10387 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
10388 SCM_N<foo>.
10389
10390 (scm_prin1): When building lists, prefer scm_list_<n> over
10391 scm_cons[2]?.
10392
10393 (scm_iprlist): Removed a redundant SCM_IMP test.
10394
10395 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
10396
37c56aec
DH
103972001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10398
10399 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
10400
10401 (scm_memcons, scm_mem_to_proc): When building lists, prefer
10402 scm_list_<n> over scm_cons[2]?.
10403
10404 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
10405
10406 (scm_procedure_name): Use SCM_CADR instead of explicit form.
10407
10408 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
10409 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
10410 for some reason his patch didn't make it into the cvs.
10411
79d34f68
DH
104122001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
10413
10414 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
10415 little bit - should even be somewhat more accurate now.
10416
5e137c65
RB
104172001-10-08 Rob Browning <rlb@defaultvalue.org>
10418
10419 * gc.c: support ia64 register backing store.
10420 (SCM_MARK_BACKING_STORE): new macro.
10421
10422 * continuations.h: support ia64 register backing store.
10423 (struct scm_t_contregs): add ia64 register backing store.
10424
10425 * continuations.c: support ia64 register backing store.
10426 (continuation_mark): mark ia64 register backing store.
10427 (continuation_free): free ia64 register backing store.
10428 (scm_make_continuation): capture ia64 register backing store.
10429 (copy_stack_and_call): copy ia64 register backing store.
10430
ee083ac2
DH
104312001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10432
10433 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
10434 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
10435 instead of SCM_NIMP to test for that case.
10436
10437 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
10438 scm_t_bits instead of long.
10439
71dcdbf9
MV
104402001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10441
10442 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
10443 SCM_T_SIGNED_BITS_MIN): New.
10444 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
10445 Use them to make these macros computable by the preprocessor.
10446
10447 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
10448 whether the integral type fits in a fixnum, not the compiler.
10449 This removes a spurious compiler warning. Also, honor the
10450 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
10451 needed for `long long's.
10452
10453 * numbers.c: Define NO_PREPRO_MAGOC when including
10454 num2integral.c.i for `long long' and `signed long long'.
10455
152812c0
MD
104562001-10-06 Mikael Djurfeldt <mdj@linnaeus>
10457
10458 These changes fixes a race condition in the Guile coop - pthread
10459 compatibility code.
d6b8cf11 10460
152812c0
MD
10461 * coop.c (mother_awake_p): New variable.
10462 (coop_create): Set mother_awake_p before creating or signalling
10463 mother; wait until mother is going to sleep before returning.
10464 (mother): Reset mother_awake_p before going to sleep.
10465
11d49f54
DH
104662001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10467
10468 * options.c (protected_objects, scm_init_options): The content of
10469 protected_objects is now protected from garbage collection using
10470 scm_gc_register_root instead of scm_permanent_object.
10471
10472 (get_option_setting): New static function that computes an option
10473 setting as it was formerly done in the function scm_options.
10474
10475 (get_documented_option_setting): New static function that
10476 returns option documentation as it was formerly done in the
10477 function scm_options. Note that documentation C strings are no
10478 longer precomputed into SCM objects. Instead, they are converted
10479 into SCM strings every time get_documented_option_setting is
10480 called.
10481
10482 (change_option_setting): New static functions that modifies the
10483 option setting as it was formerly done in the function
10484 scm_options. The function is now exception safe, i. e. won't
10485 cause a memory leak when interrupted. Further, only non-immediate
10486 option values are added to the protection list.
10487
10488 (scm_options): This function now has only the purpose to dispatch
10489 to to get_option_setting, get_documented_option_setting or
10490 change_option_setting, depending on the arguments given to
10491 scm_options.
10492
10493 (scm_init_opts): Don't convert documentation C strings into SCM
10494 strings. Further, don't protect any object values: They _must_
10495 be immediate values, otherwise there is no guarantee that they
10496 have not been collected before anyway.
10497
10498 * options.[ch] (scm_t_option): Made type unsigned, name into a
10499 constant char* and val into a scm_t_bits type.
10500
10501 (scm_options, scm_init_opts): The number of options is guaranteed
10502 to be larger or equal to zero. Thus, the type is changed to
10503 unsigned.
10504
3dbacabc
DH
105052001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10506
10507 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
10508 testing an unsigned value for being >= 0.
10509
14282d0f
DH
105102001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10511
10512 * numbers.h: Removed old comment about using SCM_CAR to access
10513 non-pair cells.
10514
10515 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
10516 the return value is signed. Thanks to Brian Crowder for the bug
10517 report.
10518
10519 (SCM_SRS): Avoid unnecessary casting and don't unpack input
10520 values. With this patch, SCM_SRS can be safely used for other
10521 types than scm_t_signed_bits. However, it should still better be
10522 an internal macro and thus be renamed to SCM_I_SRS.
10523
10524 (SCM_MAKINUM, SCM_INUM): Use proper casting.
10525
2dbec7b5
GH
105262001-10-03 Gary Houston <ghouston@arglist.com>
10527
10528 * continuations.h, unif.h: in the descriptions of the bit patterns
10529 of the heap cells, make bit 0 the least significant.
10530
cf4ee841
TTN
105312001-09-25 Thien-Thi Nguyen <ttn@glug.org>
10532
10533 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
10534 Thanks to Golubev I. N.
10535
4a151b3d
GH
105362001-09-25 Gary Houston <ghouston@arglist.com>
10537
10538 * ports.c (scm_drain_input): extended the docstring. thanks to
10539 Alex Schroeder and Thien-Thi Nguyen.
10540
581ded70
MD
105412001-09-23 Mikael Djurfeldt <mdj@linnaeus>
10542
10543 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
10544 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
10545 macros. (The NUM names might soon change.)
10546
10547 * numbers.h: Added missing declarations.
10548
5437598b
MD
105492001-09-22 Mikael Djurfeldt <mdj@linnaeus>
10550
10551 * Makefile.am: Distribute num2float.i.c.
10552
10553 * num2float.i.c: New file, multiply included by numbers.c, used
10554 to "templatize" the float <-> num conversion routines.
10555
10556 * numbers.c: New functions: scm_num2float, scm_float2num,
10557 scm_num2double, scm_double2num.
10558
0b073f0f
RB
105592001-09-21 Rob Browning <rlb@defaultvalue.org>
10560
10561 * .cvsignore: really add version.h
10562
10563 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
10564 Otherwise it fails on the alpha. However, we might rather choose
10565 this size conditionally.
10566
10567 * numbers.c (scm_gcd): change "k" to a long from an int.
10568 Otherwise it fails on the alpha. However, we might rather choose
10569 this size conditionally.
10570
10571 * error.c (scm_wta): coerce char* to intptr_t before int
10572 assignment.
10573
10574 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
10575 int.
10576
10577 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
10578
2830fd91
MD
105792001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10580
10581 * numbers.c (scm_integer_expt): Accept inexact integer in second
10582 argument. (Thanks to Bill Schottstaedt.)
10583
c13f0a90
RB
105842001-09-20 Rob Browning <rlb@defaultvalue.org>
10585
10586 * .cvsignore: add version.h
10587
10588 * versiondat.h.in: removed (obsolete).
10589
10590 * version.h.in: renamed from version.h.
10591 (SCM_GUILE_MAJOR_VERSION): new public macro.
10592 (SCM_GUILE_MINOR_VERSION): new public macro.
10593 (SCM_GUILE_MICRO_VERSION): new public macro.
10594
10595 * version.h: renamed to version.h.in.
10596
10597 * version.c
10598 (scm_major_version): support integer *_VERSION macros.
10599 (scm_minor_version): support integer *_VERSION macros.
10600 (scm_micro_version): support integer *_VERSION macros.
10601 (scm_version): support integer *_VERSION macros.
10602
147c18a0
MD
106032001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10604
10605 * error.c, error.h: Made error keys globally accessible.
10606 Applications might want to test for these or use them in a direct
10607 call to scm_error.
10608
10609 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
10610 routines are passed an inexact. This change in behavior is
10611 motivated by concordance with R5RS: It is more common that a
10612 primitive doesn't want to accept an inexact for an exact.
10613
662c5539
DH
106142001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10615
10616 The following patch partially undoes my patch from 2001-06-30,
10617 where I added the function scm_gc_mark_cell_conservatively. The
10618 function is buggy, since it breaks guile during conservative
10619 marking if a pointer on the stack points directly into the list of
10620 free cells on the heap: With conservative cell marking this will
10621 cause the whole free list to be scanned and marked - boom!
10622
10623 * gc.c (allocated_mark, MARK, heap_segment,
10624 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 10625 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
10626 scm_gc_mark_cell_conservatively and update the corresponding
10627 comments and uses accordingly. Thanks to Christopher Cramer for
10628 the patch. (Minor corrections by me.)
10629
6c1b7628
GH
106302001-09-15 Gary Houston <ghouston@arglist.com>
10631
10632 * root.h (scm_root_state): removed the continuation_stack and
10633 continuation_stack_ptr members, which have no apparent purpose.
10634 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
10635 removed.
662c5539 10636
6c1b7628
GH
10637 * root.c (root_mark), init.c (restart_stack, start_stack), gc
10638 (scm_igc): remove all references to contination_stack and
10639 continuation_stack_ptr, avoiding allocation of a vector and
10640 useless processing during gc.
10641
455c0ac8
DH
106422001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10643
10644 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
10645
10646 (TCONC_IN): Make sure that the cell word 0 is initialized last.
10647
10648 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
10649
10650 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
10651
10652 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
10653 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
10654
22ba637b
DH
106552001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10656
10657 * guardians.c (mark_dependencies_in_tconc,
10658 whine_about_self_centered_zombies, scm_init_guardians): Register
10659 the static global variable `self_centered_zombies' via
10660 scm_gc_register_root, to make some cdr-ing unnecessary.
10661
c3c4d801
DH
106622001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10663
10664 * backtrace.c (display_backtrace_file,
10665 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
10666 values, use SCM_FALSEP when comparing SCM values against #f.
10667 Thanks to Rob Browning for the bug report.
10668
b00418df
DH
106692001-09-12 Martin Baulig <martin@home-of-linux.org>
10670
10671 * strings.[ch] (scm_str2string): New function.
10672
a0d34a0b
MV
106732001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
10674
10675 * gc.c (scm_done_free): Always subtract size from scm_mallocated
10676 when computing nm, even if it's negative.
10677 (scm_must_malloc): Abort on overflow of scm_mtrigger.
10678 (scm_must_realloc): Likewise.
10679
b10586f0
ML
106802001-09-01 Michael Livshin <mlivshin@bigfoot.com>
10681
10682 * numbers.c (scm_sys_check_number_conversions): new function,
10683 defined if Guile is compiled in debugging mode. currently checks
10684 `scm_num2ulong', should check much much more.
10685
10686 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
10687 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 10688
8c494e99
DH
106892001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10690
10691 * __scm.h: Added new section about compile time selectable
10692 features.
10693
10694 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
10695 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
10696 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
10697 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
10698 Removed.
10699
10700 * deprecation.c (scm_include_deprecated_features): Simplified.
10701
10702 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9a5fa6e9 10703 `SCM_IMP' instead of `!SCM_CELLP´.
8c494e99
DH
10704
10705 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
10706 Extract side-effecting operations from macros.
10707
10708 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
10709 scm_top_level_lookup_closure_var and scm_system_transformer.
10710
10711 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10712
10713 (heap_segment): Use CELL_P instead of SCM_CELLP.
10714
10715 * init.c (start_stack): Don't initialize
10716 scm_top_level_lookup_closure_var and scm_system_transformer.
10717
10718 * modules.c (scm_set_current_module): Don't access
10719 scm_top_level_lookup_closure_var and scm_system_transformer.
10720
10721 (scm_sym2var): Don't call scm_variable_set_name_hint.
10722
10723 (scm_post_boot_init_modules): Removed deprecated initializations.
10724
10725 * print.c (scm_ipruk): Don't access cell contents of non cells.
10726
10727 * strings.c (scm_string_set_x): All strings are writable.
10728
10729 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10730 type. There is only one string type now.
10731
10732 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10733
10734 * tags.h: Remove comments about two different string types.
10735
10736 (SCM_CELLP, SCM_NCELLP): Deprecated.
10737
10738 * variable.c (make_variable): Remove code variant for vcells.
10739
10740 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10741 SCM_VARIABLE_LOC): Remove code variant for vcells.
10742
10743 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10744 SCM_ENABLE_DEPRECATED with the logic reversed.
10745
10746 * dynl.c (moddata, registered_mods), dynl.[ch]
10747 (scm_register_module_xxx, scm_registered_modules,
10748 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10749 (*top-level-lookup-closure*), eval.[ch]
10750 (scm_top_level_lookup_closure_var, scm_system_transformer,
10751 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10752 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10753 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10754 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10755 scm_unprotect_object), modules.c (root_module_lookup_closure,
10756 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10757 beautify_user_module_x_var, try_module_autoload_var,
10758 scm_module_full_name), modules.[ch] (scm_the_root_module,
10759 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
cf4ee841 10760 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
8c494e99
DH
10761 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10762 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10763 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10764 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10765 scm_make_shared_substring), tags.h (scm_tc7_substring,
10766 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10767 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10768 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10769 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10770 Removed.
10771
10772 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10773 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10774 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10775 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10776 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10777 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10778 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10779 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10780 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10781 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10782 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10783 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10784 (setzone, scm_strftime, scm_strptime), vports.c
10785 (scm_make_soft_port): Remove calls to
10786 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10787 gone, all strings are 0-terminated anyway.
10788
10789 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10790 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10791 double inclusion of the same headers to the SCM_<filename>_H
10792 format.
10793
10794 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10795 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10796 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10797 any more.
10798
10799 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10800 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10801 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10802 !SCM_<foo> over SCM_N<foo>.
10803
dee01b01
DH
108042001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10805
10806 * Makefile.am: Remove references to symbols-deprecated.c.
10807
10808 * symbols.c (scm_init_symbols): Don't initialize deprecated
10809 symbol functions.
10810
10811 * symbols-deprecated.c: Removed.
10812
10813 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10814 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10815 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10816 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10817 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10818 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10819 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10820 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10821 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10822 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10823 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10824 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10825 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10826 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10827 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10828 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10829 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10830 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10831 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10832 scm_intern0, scm_sysintern, scm_sysintern0,
10833 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10834 scm_string_to_obarray_symbol, scm_intern_symbol,
10835 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10836 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10837 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10838 vectors.[ch] (scm_vector_set_length_x): Removed.
10839
10840 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10841 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10842 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10843 Renamed the macros that are defined to inhibit double inclusion of
10844 the same headers to the SCM_<filename>_H format.
10845
10846 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10847 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10848 SCM_N<foo>.
10849
b29058ff
DH
108502001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10851
10852 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10853 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10854 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10855 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10856 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10857 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10858 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10859 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10860 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10861 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10862 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10863 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10864
10865 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10866 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10867 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10868 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10869 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10870 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10871 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10872 double inclusion of the same headers to the SCM_<filename>_H
10873 format.
10874
10875 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10876 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10877 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10878 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10879 !SCM_<foo> over SCM_N<foo>.
10880
0527e687
DH
108812001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10882
10883 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10884 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10885 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10886 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10887 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10888 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10889 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10890 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10891 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10892 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10893 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10894 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10895 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10896 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10897 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10898 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10899 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10900 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10901 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10902 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10903 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10904 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10905 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10906 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10907 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10908 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10909 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10910 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10911 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10912 the macros that are defined to inhibit double inclusion of the
10913 same headers to the SCM_<filename>_H format.
10914
fada26b2
MV
109152001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10916
10917 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10918 "scm_t_portable" with "scm_port_table" which was an artifact from
10919 the great "scm_*_t -> scm_t_" renaming.
10920
e4d1c1ea
TTN
109212001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10922
10923 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10924 used; nfc. Thanks to Bill Schottstaedt.
10925
10926 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10927 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10928 Thanks to Chris Cramer.
10929
b573e744
MV
109302001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10931
10932 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10933
10934 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10935 dynamic scope.
10936 * dynwind.h (scm_swap_bindings): Declare.
10937 * dynwind.c (scm_swap_bindings): Make non-static.
10938
8a3e715b
ML
109392001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10940
10941 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10942 doing exactly nothing about them). thanks Neil!
10943
cf504ee0
NJ
109442001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10945
10946 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
ec2667f0 10947
43b83b54
TTN
109482001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10949
10950 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10951 (proto) in the case when either `GUILE_DEBUG' or
10952 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10953
10954 (map_free_list): Fix typo: Ref `f' correctly.
10955
10956 Thanks to Chris Cramer.
10957
ab4cd34b
RB
109582001-08-15 Rob Browning <rlb@defaultvalue.org>
10959
10960 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10961 variables.
10962 (libpath.h): change libguileversion to libguileinterface.
10963
b754e3d1
MV
109642001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10965
10966 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10967 ChangeLog-2000. Thanks to Daniel Skarda!
10968
8b1d12c7
ML
109692001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10970
10971 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10972 do it from the Makefile.
10973
10974 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10975 are of a reasonable size.
10976
baffb19f
NJ
109772001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10978
10979 * stacks.c (scm_make_stack): Improve docstring by explaining use
10980 of cutting args.
10981
c1151355
MV
109822001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10983
10984 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10985 scm_char_whitespace_p, scm_char_upper_case_p,
10986 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10987 characters to fulfill isascii in addition to the primary
10988 predicate.
10989
3c9a524f
DH
109902001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10991
10992 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10993 scm_istr2flo, scm_istring2number): Removed.
10994
10995 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10996 SCM_SLOPPY_<foo>.
10997
10998 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10999 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
11000 Added.
11001
11002 (scm_string_to_number): Use new number parser.
11003
11004 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
11005 handles complex numbers.
11006
11007 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
11008 SCM_<foo>_H.
11009
11010 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
11011 SCM_N<pred>.
11012
11013 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
11014
11015 (scm_i_mem2number): Added.
11016
11017 (scm_exact_to_inexact): Changed signature.
11018
11019 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
11020 here instead of within scm_i_mem2number. Call scm_i_mem2number
11021 instead of scm_istr2int and scm_istring2number.
11022
01f11e02
DH
110232001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11024
11025 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
11026 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
11027 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
11028 !SCM_<pred> over SCM_N<pred>.
11029
11030 (scm_eval_body): Remove side effecting code from macro call.
11031
11032 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
11033 SCM_NIMP test.
11034
6cf69537
DH
110352001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11036
11037 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
11038
54866b6c
MV
110392001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
11040
11041 Removed vcell slot from structs.
43b83b54 11042
54866b6c
MV
11043 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
11044 subsequent indices.
11045
11046 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
11047 zero. Use scm_vtable_index_layout instead of "0" when accessing
11048 said slot.
11049 (scm_init_struct): Remove vcell slot layout code from
11050 required_vtable_fields.
11051
11052 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
11053
11054 * goops.c (build_class_class_slots): Removed vcell slot
11055 definition.
11056
11057 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
11058 Removed vcell slot layout code.
11059 (scm_si_vcell): Removed.
11060
5b54c4da
MV
110612001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
11062
a0f5718e 11063 "Glocs" have been removed.
43b83b54 11064
a0f5718e
MV
11065 * tags.h: Update tag system docs.
11066 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
11067 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
11068 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
11069 or SCM_NCONSP, respectively.
11070
11071 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
11072 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
11073 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
11074
11075 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
11076 tell glocs from structs.
43b83b54 11077
a0f5718e
MV
11078 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
11079
11080 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
11081 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
11082 instead of with glocs.
11083 (EVALCAR): Do not test for glocs.
11084 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
11085 condition.
11086 (scm_unmemocar): Do not handle glocs.
11087 (scm_m_atfop): Memoize as a variable, not as a gloc.
11088 (scm_eval_args, scm_deval_args): Do not handle glocs.
11089 (scm_ceval, scm_deval): Likewise.
43b83b54 11090
a0f5718e
MV
11091 * eval.h (SCM_XEVALCAR): Do not test for glocs.
11092 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
11093 Removed.
11094
11095 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
11096
11097 * dynwind.c (scm_swap_bindings): Likewise.
11098 (scm_dowinds): Updated to recognize lists of variables instead of
11099 lists of glocs.
11100
11101 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
11102
43b83b54 11103
5b54c4da
MV
11104 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
11105 where it is needed.
43b83b54 11106
3c3db128
GH
111072001-07-25 Gary Houston <ghouston@arglist.com>
11108
11109 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
11110 docstrings to reflect the n-ary implementation.
11111
dd29a169
MV
111122001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
11113
11114 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
11115 value of a variable, not the plain "return" statement.
11116
f5fe6c2f
MV
111172001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
11118
11119 * eval.c: Allow variables in memoized code (in addition to glocs).
11120 (scm_lookupcar): Handle variables in lost races. Replace symbol
11121 with variable directly, do not make a gloc.
11122 (scm_unmemocar): Rewrite variables using a reverse lookup, just
11123 like glocs.
11124 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
11125 the main switch.
11126
ee0c7345
MV
111272001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
11128
6d9ad98a
MV
11129 * variable.c (scm_i_variable_print): Use "value" instead of
11130 "binding" since a binding is the mapping between symbols and
11131 variables, not between variables and their values.
11132
ee0c7345
MV
11133 * tags.h (scm_tc7_variable): New.
11134 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
11135 * print.c (scm_iprin1): Likewise.
11136
11137 * variable.h (scm_tc16_variable): Removed.
11138 (SCM_VARIABLEP): Test for new tc7 code.
11139 (scm_i_variable_print): New.
11140 * variable.c (scm_tc16_variable): Removed.
11141 (variable_print): Renamed to scm_i_variable_print and made
11142 non-static.
11143 (variable_equal_p): Removed.
11144 (make_variable): Construct a tc7 object instead of a smob.
11145 (scm_init_variable): Do not register smob.
43b83b54 11146
f3805ebb
MV
111472001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
11148
11149 * tags.h: Include inttypes.h when we have it.
11150
111512001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
11152
11153 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
11154 is taken by the new SCM_IM_CALL_WITH_VALUES.
11155 * print.c (scm_isymnames): Update table accordingly.
43b83b54 11156
6a1677a3
GH
111572001-07-22 Gary Houston <ghouston@arglist.com>
11158
11159 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
11160 SCM_MAKINUM to convert regoff_t value to SCM.
11161
1bed8c28
GH
111622001-07-21 Gary Houston <ghouston@arglist.com>
11163
11164 * scmsigs.c: include sys/time.h for itimer stuff.
11165
e658215a
RB
111662001-07-19 Rob Browning <rlb@defaultvalue.org>
11167
11168 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
11169
11170 * c-tokenize.lex: add option %nounput to quiet warning.
11171 Add prototype for yylex to quiet warning.
11172
11173 * scmconfig.h.in: add flags for setitimer and getitimer.
11174
11175 * scmsigs.h (scm_init_scmsigs): new prototype.
11176 (scm_init_scmsigs): new prototype.
11177
11178 * scmsigs.c (s_scm_setitimer): new function.
11179 (s_scm_setitimer): new function.
11180
58ade102
MG
111812001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11182
11183 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
11184 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
11185 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
11186 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
11187 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
11188 guile-func-name-check.in, guile-snarf-docs-texi.in,
11189 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
11190 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
11191 objprop.c, objprop.h, options.c, options.h, random.h,
11192 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
11193 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
11194 version.c, version.h: Updated copyright notice.
11195
6b80d352
DH
111962001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11197
11198 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
11199 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
11200 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
11201 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
11202 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
11203 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
11204 sym_environment, scm_sym_change_class): New static variables to
11205 hold predefined symbols.
11206
11207 (build_class_class_slots): Build the list using scm_list_n
11208 instead of cons. Also, slots are already created as lists, thus
11209 making a call to maplist unnecessary.
11210
11211 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
11212 scm_class_direct_subclasses, scm_class_direct_methods,
11213 scm_class_precedence_list, scm_class_slots, scm_class_environment,
11214 scm_method_procedure, create_standard_classes, purgatory): Use
11215 predefined symbols.
11216
11217 (build_slots_list, compute_getters_n_setters,
11218 scm_sys_initialize_object, scm_sys_inherit_magic_x,
11219 get_slot_value_using_name, set_slot_value_using_name,
11220 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
11221 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
11222 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
11223
11224 (scm_sys_prep_layout_x): Minimize variable scopes.
11225
11226 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
11227 scm_sys_fast_slot_set_x): Fix signedness.
11228
11229 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
11230 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
11231 scm_memoize_method, scm_wrap_object): Use packing and unpacking
11232 when converting to and from SCM values.
11233
11234 (scm_enable_primitive_generic_x): Add rest argument checking.
11235
11236 (map, filter_cpl, maplist, scm_sys_initialize_object,
11237 scm_sys_prep_layout_x, slot_definition_using_name,
11238 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
11239 call_memoize_method, scm_make, scm_make_class): Prefer explicit
11240 predicates over SCM_N?IMP tests.
11241
11242 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
11243 checking.
11244
11245 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
11246 alias.
11247
63bcad19
DH
112482001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11249
11250 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
11251
11252 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
11253
11254 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
11255
11256 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
11257
4d6aae71
ML
112582001-07-12 Michael Livshin <mlivshin@bigfoot.com>
11259
11260 * strings.c (s_scm_string): fix arg position in assert.
11261
4b8ec619
GH
112622001-07-11 Gary Houston <ghouston@arglist.com>
11263
11264 * strports.c (st_write): use memcpy, not strncpy. thanks to
11265 Dale P. Smith.
11266
dbb640bd
TTN
112672001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
11268
11269 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
11270 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
11271 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
11272 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
11273 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
11274 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
11275 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
11276 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
11277 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
11278 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
11279 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
11280 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
11281 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
11282 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
11283 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
11284 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
11285 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
11286 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
11287 weaks.c, weaks.h: Remove "face-lift" comment.
11288
fd6c6321
RB
112892001-07-08 Rob Browning <rlb@defaultvalue.org>
11290
11291 * .cvsignore: add stamp-h.in.
11292
f91e4547
MG
112932001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11294
11295 * hooks.c (scm_make_hook, scm_add_hook_x),
11296 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
11297 value info to the docstrings.
11298
7beabedb
MG
112992001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11300
11301 Some more compatibility patches for Windows.
dbb640bd 11302
7beabedb
MG
11303 * posix.c (getlogin): getlogin() implementation for Windows.
11304
11305 * backtrace.c, ioext.c: Include <stdio.h>.
11306
11307 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
11308 exist.
11309
11310 * cpp_sig_symbols.in: Added SIGBREAK.
11311
0d0560d0
MV
113122001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
11313
11314 * strports.c (scm_read_0str, scm_eval_0str): Call
11315 scm_c_read_string and scm_c_eval_string respectively, not
11316 themselves. Thanks to Dale P. Smith!
11317
9a97e362
DH
113182001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11319
11320 * unif.c (scm_array_set_x): The variable args does not
11321 necessarily have to be a list. Further, got rid of a redundant
11322 SCM_NIMP test.
11323
592996c9
DH
113242001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11325
11326 * list.c (SCM_I_CONS): Make sure the cell type is initialized
11327 last.
11328
11329 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
f91e4547 11330 init_heap_seg): Fixed signedness.
592996c9
DH
11331
11332 (init_heap_seg): Replaced strange for-loop with a while loop.
11333
11334 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
11335
11336 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
11337
11338 The following patch adds conservative marking for the elements of
11339 free or allocated cells.
11340
11341 * gc.c (allocated_mark, heap_segment): New static functions.
11342
11343 (which_seg): Deleted, since the functionality is now provided by
11344 function heap_segment.
11345
11346 (map_free_list): Use heap_segment instead of which_seg.
11347
11348 (MARK): If cell debugging is disabled, mark free cells
11349 conservatively.
11350
11351 (scm_mark_locations, scm_cellp): Extracted the search for the
11352 heap segment of a SCM value into function heap_segment.
11353
11354 (scm_init_storage): Allocated cells must be marked
11355 conservatively.
11356
11357 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
11358
11359 The following patch changes the representation of weak vectors to
11360 double cells instead of using an extension of the vector's
11361 allocated memory.
11362
11363 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
11364 the result of SCM_WVECT_GC_CHAIN.
11365
11366 (scm_gc_sweep): Weak vectors don't have extra fields any more.
11367
11368 * weaks.c (allocate_weak_vector): New static function. It does
11369 not patch any previously created vector object during the
11370 construction of a weak vector, and thus doesn't need to switch
11371 off interrupts during vector creation.
11372
11373 (scm_make_weak_vector, scm_make_weak_key_hash_table,
11374 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11375 Use allocate_weak_vector to provide the new weak vector object.
11376
11377 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
11378 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
11379 now stored in the double cell.
11380
11381 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
11382 Use SCM_WVECT_TYPE.
11383
11384 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
11385 using an entry of the double cell.
11386
4dadf664
TTN
113872001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
11388
11389 * stamp-h.in: bye bye
11390
02202352
MV
113912001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
11392
11393 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
11394 scm_eval_0str.
11395
11396 * load.c, load.h (scm_c_primitive_load,
11397 scm_c_primitive_load_path): New.
11398
11399 * strports.c, strports.h (scm_c_read_string): Renamed from
11400 scm_read_0str. Also, added "const" qualifier to argument.
11401 (scm_c_eval_string): Renamed from scm_eval_0str.
11402 (scm_read_0str, scm_eval_0str): Deprecated.
11403
df1ad0d1
MG
114042001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11405
11406 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
11407 SCM_LIST1.
11408
1afff620
KN
114092001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
11410
11411 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
11412 scm_list_n): New functions.
11413 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
11414 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
11415 (lots of files): Use the new functions.
4dadf664 11416
1afff620
KN
11417 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
11418
11419 * strings.c: #include "libguile/deprecation.h".
11420
b858464a
MG
114212001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11422
11423 * read.c (scm_lreadr): When reading a hash token, check for a
11424 user-defined hash procedure first, so that overriding the builtin
11425 hash characters is possible (this was needed for implementing
11426 SRFI-4's read synax `f32(...)').
4dadf664 11427
b858464a
MG
11428 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
11429 because the latter is unsigned now and breaks comparisons like
11430 (n < (scm_t_signed_bits)MIN_VALUE).
4dadf664 11431
d95c0b76
NJ
114322001-06-26 Neil Jerram <neil@ossau.uklinux.net>
11433
11434 * eval.h, eval.c (scm_call_4): New function.
11435
11436 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
11437 directly rather than dispatching to them via scm_ithrow and a lazy
11438 catch.
4dadf664 11439
d95c0b76
NJ
11440 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
11441 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
11442 for trap handler procedures.
11443
11444 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
11445 procedures not being #f.
11446
30e3be5a
ML
114472001-06-27 Michael Livshin <mlivshin@bigfoot.com>
11448
11449 * Makefile.am (c-tokenize.c): add rule to generate it.
11450 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
11451
11452 filter-doc-snarfage.c: remove.
11453
82893676
MG
114542001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11455
11456 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
11457
11458 The following set of changes makes compiling Guile under various
11459 Windows compilers easier. Compilation under GNU systems should
11460 not be affected at all.
11461
11462 Thanks to Stefan Jahn for all necessary information, patches and
11463 testing.
4dadf664 11464
82893676
MG
11465 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
11466 getpgrp, ttyname, primitive-fork and some header inclusion for
11467 Windows.
11468
11469 * random.c: Define M_PI, if not predefined and use __int64 for
11470 LONG64 under Windows.
11471
11472 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
11473 Windows and conditionalize some signal names.
11474
4dadf664 11475 * socket.c (scm_getsockopt): Added missing comma.
82893676
MG
11476 Include socket library header under Windows.
11477
11478 * stime.c (CLKTCK): Add cast to int, to make it compile under
11479 Windows.
11480
11481 * ports.c (truncate): New function, compiled only under Windows.
11482
11483 * net_db.c: Do not declare errno under Windows.
11484
11485 * iselect.h, inet_aton.c: Include socket library headers under
11486 Windows.
11487
11488 * guile.c (inner_main): Under Windows, initialize socket library
11489 and initialize gdb_interface data structures.
11490
11491 * gdb_interface.h: Under Windows, gdb_interface cannot be
11492 initialized statically. Initialize at runtime instead.
11493
11494 * fports.c (write_all): ssize_t -> size_t.
11495 (fport_print): Conditionalize call to ttyname().
11496 (getflags): New function, compiled only under Windows.
11497
11498 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
11499 primitives chown, link, fcntl.
11500 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
11501 as path seperator.
11502
11503 * backtrace.c: Include <io.h> under Windows.
11504
11505 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
11506
11507 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
11508 declaration.
11509
fdc28395
KN
115102001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
11511
11512 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11513 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
11514 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11515 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
11516 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
11517 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
11518 (scm_dynamic_wind, scm_dowinds), environments.c
11519 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
11520 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
11521 goops.c (GETVAR, purgatory, make_class_from_template,
11522 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
11523 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
11524 (scm_primitive_load), modules.c (scm_resolve_module,
11525 scm_c_define_module, scm_c_use_module, scm_c_export,
11526 module_variable, scm_eval_closure_lookup, scm_sym2var,
11527 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
11528 ports.c (scm_port_for_each), print.c (scm_printer_apply),
11529 properties.c (scm_primitive_property_ref), ramap.c (ramap,
11530 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
11531 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
11532 (scm_object_to_string, scm_call_with_output_string,
11533 scm_call_with_input_string), throw.c (scm_body_thunk,
11534 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
11535 scm_make_shared_array), vports.c (sf_flush, sf_write,
11536 sf_fill_input, sf_close): Use one of the above functions.
11537 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
11538
36284627
DH
115392001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11540
11541 * filesys.c (scm_close), ports.c (scm_close_port,
11542 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
11543 instead of SCM_NEGATE_BOOL.
11544
11545 * filesys.c (scm_stat): Clean up type dispatch.
11546
11547 * filesys.c (scm_stat), ports.c (scm_input_port_p,
11548 scm_output_port_p): Get rid of redundant IM type check.
11549
11550 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
11551 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
11552 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
11553 scm_return_entry), numbers.c (scm_number_to_string), objects.c
11554 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
11555 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
11556 scm_addr_vector), stime.c (scm_strftime), strings.c
11557 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
11558 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
11559 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11560 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
11561 instead of scm_makfromstr.
11562
11563 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
11564 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
11565 scm_read_hash_extend), stime.c (scm_strftime), strings.c
11566 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
11567 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
11568 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
11569 !SCM_<pred> over SCM_N<pred>.
11570
11571 * strings.[ch] (scm_makfromstr): Deprecated.
11572
11573 (scm_mem2string): New function, replaces scm_makfromstr.
11574
11575 * strings.c (scm_substring), strop.c (string_copy,
11576 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11577 (scm_symbol_to_string): Fix gc problem.
11578
11579 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
11580 SCM_<foo>_H.
11581
11582 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
11583 warning about comparing signed and unsigned values. This fix is
11584 not optimal, since it won't work reliably if sizeof (c_start) >
11585 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
11586 solution is to define this macro as an inline function, thus
11587 allowing to specifiy the types of c_start and c_end.
11588
13dcb666
DH
115892001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
11590
11591 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
11592 scm_t_debug_frame*.
11593
11594 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
11595 Rename <foo>H to SCM_<foo>_H.
11596
11597 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
11598 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11599
11600 (narrow_stack): Make i unsigned. Don't use side-effecting
11601 operations in conditions.
11602
11603 (narrow_stack, scm_make_stack, scm_stack_id,
11604 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
11605
11606 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
11607 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
11608 more.
11609
11610 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
11611 signedness.
11612
ea2c3968 11613 (scm_last_stack_frame): Remove bogus `;'.
13dcb666
DH
11614
11615 * stacks.h (SCM_FRAMEP): Fix type check.
11616
ac13d9d2
ML
116172001-06-25 Michael Livshin <mlivshin@bigfoot.com>
11618
ee0c0e03
ML
11619 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
11620 c-tokenize.c when doing maintainer-clean.
11621
ac13d9d2
ML
11622 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
11623
11624 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
11625 simplify.
11626
11627 * eval.c: all hash signs are in column 0.
11628
11629 * Makefile.am (guile_filter_doc_snarfage): build using
11630 c-tokenize.c, not filter-doc-snarfage.c.
11631 rearrange snarfing dependencies a bit.
11632
11633 * c-tokenize.lex: new file.
11634
16be44e5
MV
116352001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
11636
11637 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
11638 scm_t_srcpropso_plist. See the big type renaming.
11639 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
11640 Thanks to Seth Alves!
4dadf664 11641
16be44e5
MV
11642 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
11643 they aren't defined already.
11644
5843e5c9
DH
116452001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
11646
11647 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
11648 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
11649 problem.
11650
11651 * backtrace.c (display_expression, scm_set_print_params_x,
11652 display_application, display_frame, scm_backtrace), numbers.c
11653 (scm_istring2number), objects.c (scm_class_of,
11654 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
11655 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11656
11657 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
11658 always positive.
11659
11660 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
11661 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
11662
11663 * objects.c (scm_class_of): Type fix.
11664
11665 (scm_mcache_lookup_cmethod): Improved comment, simplified,
11666 eliminated goto.
11667
11668 * pairs.h (scm_error_pair_access): The function can return if
11669 called recursively.
11670
6b41a313
MG
116712001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11672
11673 * init.c (scm_init_guile_1): Removed initialization of tag.c.
11674
11675 * gdbint.c, init.c: Removed inclusion of tag.h.
11676
11677 * tag.h, tag.c: Removed files.
11678
11679 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
11680
fbbdb121
GH
116812001-06-20 Gary Houston <ghouston@arglist.com>
11682
11683 * deprecation.c, extensions.c, rw.c: include string.h.
11684
72c17ed0
GH
116852001-06-19 Gary Houston <ghouston@arglist.com>
11686
11687 * filter-doc-snarfage.c (process): added ungetc in
11688 MULTILINE_COOKIE case since otherwise it fails when there's no
11689 space between the '(' and the quote of the following string
11690 (gcc 3.0).
11691
4ff9f825
MV
116922001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11693
4927dd28
MV
11694 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
11695
b629af45
MV
116962001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11697
11698 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
0f002b27
MV
11699 extension takes place.
11700 * strings.h (SCM_STRING_LENGTH): Likewise.
11701 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4dadf664 11702
4ff9f825
MV
11703 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
11704 it.
11705
11706 * tags.h: Include <stdint.h> when we have it.
11707 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
11708 available. Else use "unsigned long".
11709 (scm_signed_bits_t): New.
11710
11711 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11712 (SCM_INUM): Cast result to scm_signed_bits_t.
11713
58bee6a8
TTN
117142001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11715
11716 * mkstemp.c: Update path to #include file scmconfig.h.
11717 Thanks to Golubev I. N.
11718
00d8d838
DH
117192001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11720
11721 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11722
ea2c3968 11723 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
00d8d838
DH
11724 the macro definition.
11725
11726 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11727 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11728 instead of SCM_INST_TYPE.
11729
11730 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11731 the object is a struct before accessing its struct flags.
11732
11733 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11734
495c67e5
GH
117352001-06-10 Gary Houston <ghouston@arglist.com>
11736
11737 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11738 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11739 work reliably anymore. try it from boot-9.scm instead.
11740
6a9003d3
MV
117412001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11742
11743 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
9a5fa6e9 11744 Thanks to Matthias Köppe!
58bee6a8 11745
47bcd646
ML
117462001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11747
a88ff5b6
ML
11748 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11749 space-happy C preprocessors.
11750
47bcd646 11751 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
9a5fa6e9 11752 inside cookies. thanks to Matthias Köppe!
47bcd646 11753
bab246f3
DH
117542001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11755
11756 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11757 keywords. Fix gc protection.
11758
11759 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11760 operations in macro calls.
11761
11762 * pairs.c (scm_error_pair_access): Avoid recursion.
11763
11764 Thanks to Matthias Koeppe for reporting the bugs that correspond
11765 to the following set of patches.
11766
11767 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11768 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11769 bitvector base address using SCM_BITVECTOR_BASE.
11770
11771 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11772 unsigned long*.
11773
dcb410ec
DH
117742001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11775
11776 * goops.c (SCM_CLASS_REDEF): Removed.
11777
11778 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11779 SCM_<foo>_H.
11780
11781 Thanks to Matthias Koeppe for reporting the bugs that correspond
11782 to the following set of patches.
11783
11784 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11785 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11786 scm_sys_allocate_instance, clear_method_cache,
11787 scm_sys_invalidate_method_cache_x, scm_make,
11788 create_standard_classes, scm_make_port_classes, scm_make_class,
11789 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11790
11791 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11792
11793 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11794
11795 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11796 UNARY_ELTS_CODE): Remove bogus break statement.
11797
11798 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11799 Don't access bit vectors elements as SCM objects.
11800
11801 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11802 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11803 Don't assign to an unpacked value.
11804
e81d98ec
DH
118052001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11806
11807 * __scm.h (SCM_NORETURN): Moved here from error.h.
11808
11809 (SCM_UNUSED): New macro.
11810
11811 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11812
11813 * backtrace.c (display_error_handler), continuations.c
11814 (continuation_print), debug.c (debugobj_print), dynwind.c
11815 (guards_print), environments.c (observer_print,
11816 core_environments_finalize, leaf_environment_cell,
11817 leaf_environment_print, eval_environment_print,
11818 eval_environment_observer, import_environment_define,
11819 import_environment_undefine, import_environment_print,
11820 import_environment_observer, export_environment_define,
11821 export_environment_undefine, export_environment_print,
11822 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11823 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11824 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11825 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11826 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11827 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11828 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11829 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11830 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11831 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11832 set_slot_value, test_slot_existence, scm_change_object_class,
11833 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11834 default_setter), guardians.c (guardian_print, guardian_gc_init,
11835 guardian_zombify, whine_about_self_centered_zombies), guile.c
11836 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11837 mallocs.c (malloc_print), numbers.c (scm_print_real,
11838 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11839 end_input_default, scm_port_print, fill_input_void_port,
11840 write_void_port), root.c (root_print), smob.c (scm_mark0,
11841 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11842 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11843 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11844 (scm_struct_free_0, scm_struct_free_standard,
11845 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11846 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11847 scm_handle_by_throw, scm_ithrow), weaks.c
11848 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11849 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11850 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11851
11852 * error.h (SCM_NORETURN): Moved to __scm.h.
11853
11854 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11855 Renamed <foo>H to SCM_<foo>_H.
11856
11857 * gc.c (debug_cells_gc_interval): New static variable.
11858
11859 (scm_assert_cell_valid): If selected by the user, perform
11860 additional garbage collections.
11861
11862 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11863 if additional garbage collections are desired.
11864
11865 (mark_gc_async): If additional garbage collections are selected
11866 by the user, don't call the after-gc-hook. Instead require the
11867 user to run the hook manually.
11868
11869 * pairs.c (scm_error_pair_access): New function. Only compiled
11870 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11871
11872 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11873
11874 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11875 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11876 is a real pair object. (Glocs are also accepted, but that may
11877 change.) If not, abort with an error message.
11878
17fa3fcf
DH
118792001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11880
11881 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11882
11883 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11884 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11885
feeedafb
MV
118862001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11887
11888 * extensions.c (scm_c_register_extension): Allow NULL as library
11889 name.
11890 (load_extension): Ignore NULL library names when comparing.
58bee6a8 11891
feeedafb
MV
11892 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11893 non-pointers are being compared. Thanks to Alexander Klimov!
11894
4bcdfe46
GH
118952001-06-04 Gary Houston <ghouston@arglist.com>
11896
11897 * rw.c (scm_write_string_partial): new procedure implementing
11898 write-string/partial in (ice-9 rw).
11899 * rw.h: declare scm_write_string_partial.
58bee6a8 11900
f480396b
MV
119012001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11902
feeedafb
MV
11903 * keywords.c (keyword_print): Substract 1 from length of symbol
11904 name, accounting for the silly dash.
11905
11906 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11907 Do not emit deprecation warning.
11908
f480396b
MV
11909 Added exception notice to all files.
11910
11911 * dynl.c: Include "deprecation.h".
11912
c794483c
MV
119132001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11914
11915 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11916 scm_clear_registered_modules): Deprecated.
11917
9454d8d5
RB
119182001-06-02 Rob Browning <rlb@cs.utexas.edu>
11919
11920 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11921 guile-snarf-docs-texi.
11922
11923 * fports.c: HAVE_ST_BLKSIZE changed to
11924 HAVE_STRUCT_STAT_ST_BLKSIZE.
11925 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11926 HAVE_STRUCT_STAT_ST_BLKSIZE.
11927
11928 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11929 HAVE_STRUCT_STAT_ST_RDEV.
11930 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11931 HAVE_STRUCT_STAT_ST_BLKSIZE.
11932 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11933 HAVE_STRUCT_STAT_ST_BLOCKS.
11934
114f9bab
MV
119352001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11936
b0c16cd9
MV
11937 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11938 of scm_eval_x to allow module changes between the forms in the
11939 string. Set/restore module using scm_c_call_with_current_module.
11940
114f9bab
MV
11941 * mkstemp.c: New file, slightly modified from libiberties
11942 mkstemps.c.
11943
c99f9605
ML
119442001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11945
11946 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11947 filter-doc-snarfage.c: new files.
11948
11949 * Makefile.am: add stuff to [build,] use and distribute
11950 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11951
11952 * guile-snarf.in: grok the new snarf output.
11953
11954 * snarf.h: make the output both texttools- and `read'-friendly.
11955
47bcd646
ML
11956 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11957 guile-snarf-docs. (should also deprecate, I guess. maybe not).
c99f9605 11958
7eb5d7b2
MV
119592001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11960
11961 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11962 error for unsupported format controls and for superflous
ec2667f0 11963 arguments. Thanks to Daniel Skarda!
7eb5d7b2
MV
11964
11965 * print.h, print.c (scm_print_symbol_name): Factored out of
11966 scm_iprin1.
11967 (scm_iprin1): Call it.
58bee6a8 11968
7eb5d7b2
MV
11969 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11970 weird names are printed correctly.
11971
11972 * print.c (scm_print_symbol_name): Symbols whose name starts with
11973 `#' or `:' or ends with `:' are considered weird.
11974
609c3d30
MG
119752001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11976
11977 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11978 and /.
11979
119802001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11981
11982 * debug.h: Removed prototype for scm_eval_string.
11983
8d09eb04
MG
119842001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11985
11986 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
58bee6a8 11987 (make-string 2000 #\!))' in an older version).
8d09eb04
MG
11988
11989 Change strncpy to memcpy to allow embedded NUL characters in
11990 symbol prefix.
11991
dd85ce47
ML
119922001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11993
fde50407
ML
11994 * hooks.c (scm_create_hook): deprecated.
11995 (make_hook): deleted.
11996 (scm_make_hook): all the hook creation code is now here.
11997
11998 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11999 a hook, make it permanent, and do a `scm_c_define' on it.
12000
dd85ce47
ML
12001 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
12002
12003 * socket.c (s_scm_inet_pton): fix docstring quoting.
12004 (s_scm_inet_ntop): ditto.
12005
12006 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
12007
12008 * hashtab.c (scm_internal_hash_fold): fix argument position in
12009 SCM_ASSERT.
12010
12011 * environments.c (s_scm_import_environment_set_imports_x): fix
12012 argument position in SCM_ASSERT.
12013
12014 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
12015 (s_scm_make_iloc): ditto.
12016
729dbac3
DH
120172001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
12018
12019 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
12020
12021 * eval.c (promise_print): Read the promise's value as an object.
12022
12023 (SCM_CEVAL): Don't perform side-effecting operations in macro
12024 parameters.
12025
12026 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
12027 conditional expression.
12028
12029 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
12030 initializer.
12031
12032 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
12033 text, removed redundant computation of effective_length and fixed
12034 the overflow check.
12035
12036 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
12037 values.
12038
12039 (wrap_init): Don't use SCM_C[AD]R for non pairs.
12040
12041 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
12042
12043 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
12044 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
12045
12046 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
12047
12048 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
12049 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
12050 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
12051 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
12052
12053 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
12054
12055 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
12056
ea2c3968 12057 * ramap.c (ramap_rp): Removed bogus `;'.
729dbac3
DH
12058
12059 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
12060 problem.
12061
12062 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
12063 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
12064 Read SCM objects rather than scm_bits_t values.
12065
12066 * tags.h (SCM_VOIDP_TEST): Removed.
12067
12068 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
12069 value of 2 now corresponds to the former 1, the current 1
12070 corresponds to the former situation that SCM_VOIDP_TEST was
12071 defined.
12072
58bee6a8
TTN
12073 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
12074 If this appears to be not ANSI compliant, we will change it to
729dbac3
DH
12075 typedef struct scm_unused_struct { } * SCM;
12076 Thanks to Han-Wen Nienhuys for the suggestion.
12077
12078 * unif.c (scm_array_set_x): Fix typing problem, and use
12079 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
12080 dealing with uniform vectors.
12081
6b1b030e
ML
120822001-05-27 Michael Livshin <mlivshin@bigfoot.com>
12083
12084 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
12085 (scm_igc): mark from them, too (precisely, not conservatively!).
12086
12087 * root.h (scm_gc_registered_roots): new object in
12088 scm_sys_protects.
12089
12090 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
12091 `scm_protect_object'. shouldn't call it at all, though, it seems.
12092
12093 * gc.c (scm_[un]protect_object): deprecated.
12094 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
12095 (scm_gc_[un]register_root[s]): new.
12096
12097 * gc.h: add prototypes for scm_gc_[un]protect_object,
12098 scm_gc_[un]register_root[s].
12099
c014a02e
ML
121002001-05-26 Michael Livshin <mlivshin@bigfoot.com>
12101
12102 revert the controversial part of the 2001-05-24 changes.
12103
0120801d
MV
121042001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
12105
f4e0611e
MV
12106 * modules.c (scm_env_module): Exported to Scheme.
12107
0120801d 12108 * eval.c (scm_debug_opts): New option `show-file-name'.
729dbac3 12109
0120801d 12110 * debug.h (SCM_SHOW_FILE_NAME): New.
729dbac3 12111
0120801d
MV
12112 * backtrace.c: Include "libguile/filesys.h".
12113 (sym_base, display_backtrace_get_file_line,
12114 display_backtrace_file, display_backtrace_file_and_line): New.
12115 (display_frame): Call display_backtrace_file_and_line if that is
12116 requested.
12117 (display_backtrace_body): Call scm_display_backtrace_file if
12118 requested.
12119
12120 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
12121 Prototypes removed since there's no definition for these
12122 functions.
12123
880a7d13
MG
121242001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12125
12126 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
12127 Changed use of scm_array->scm_array_t and
12128 scm_array_dim->scm_array_dim_t to enable build with
12129 --disable-deprecated.
12130
1be6b49c
ML
121312001-05-24 Michael Livshin <mlivshin@bigfoot.com>
12132
12133 The purpose of this set of changes is to regularize Guile's usage
12134 of ANSI C integral types, with the following ideas in mind:
12135
d69c867a
ML
12136 - SCM does not nesessarily have to be long.
12137 - long is not nesessarily enough to store pointers.
1be6b49c
ML
12138 - long is not nesessarily the same size as int.
12139
12140 The changes are incomplete and possibly buggy. Please test on
12141 something exotic.
12142
12143 * validate.h
12144 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
12145 new macros.
12146
12147 * unif.h: type renaming:
12148 scm_array -> scm_array_t
12149 scm_array_dim -> scm_array_dim_t
12150 the old names are deprecated, all in-Guile uses changed.
12151
12152 * tags.h (scm_ubits_t): new typedef, representing unsigned
12153 scm_bits_t.
12154
12155 * stacks.h: type renaming:
12156 scm_info_frame -> scm_info_frame_t
12157 scm_stack -> scm_stack_t
12158 the old names are deprecated, all in-Guile uses changed.
12159
12160 * srcprop.h: type renaming:
12161 scm_srcprops -> scm_srcprops_t
12162 scm_srcprops_chunk -> scm_srcprops_chunk_t
12163 the old names are deprecated, all in-Guile uses changed.
12164
12165 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
12166 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
12167 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
12168 vectors.c, vports.c, weaks.c:
12169 various int/size_t -> size_t/scm_bits_t changes.
12170
12171 * random.h: type renaming:
12172 scm_rstate -> scm_rstate_t
12173 scm_rng -> scm_rng_t
12174 scm_i_rstate -> scm_i_rstate_t
12175 the old names are deprecated, all in-Guile uses changed.
12176
12177 * procs.h: type renaming:
12178 scm_subr_entry -> scm_subr_entry_t
12179 the old name is deprecated, all in-Guile uses changed.
12180
12181 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
12182 type renaming:
12183 scm_option -> scm_option_t
12184 the old name is deprecated, all in-Guile uses changed.
12185
12186 * objects.c: various long -> scm_bits_t changes.
12187 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
12188
12189 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
12190 SCM_I_FIXNUM_BIT.
12191
12192 * num2integral.i.c: new file, multiply included by numbers.c, used
12193 to "templatize" the various integral <-> num conversion routines.
12194
12195 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
12196 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
12197 deprecated.
12198 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
12199 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
12200 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
12201 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
12202 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
12203 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
12204 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
12205 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
12206 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
12207 scm_num2size): new functions.
12208
d69c867a 12209 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
1be6b49c
ML
12210
12211 * load.c: change int -> size_t in various places (where the
12212 variable is used to store a string length).
12213 (search-path): call scm_done_free, not scm_done_malloc.
12214
12215 * list.c (scm_ilength): return a scm_bits_t, not long.
12216 some other {int,long} -> scm_bits_t changes.
12217
12218 * hashtab.c: various [u]int -> scm_bits_t changes.
12219 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
12220 (scm_ihashx): n: uint -> scm_bits_t
12221 use scm_bits2num instead of scm_ulong2num.
12222
12223 * gsubr.c: various int -> scm_bits_t changes.
12224
12225 * goops.[hc]: various {int,long} -> scm_bits_t changes.
12226
d69c867a 12227 * gh_data.c (gh_num2int): no loss of precision any more.
1be6b49c
ML
12228
12229 * gh.h (gh_str2scm): len: int -> size_t
12230 (gh_{get,set}_substr): start: int -> scm_bits_t,
12231 len: int -> size_t
12232 (gh_<num>2scm): n: int -> scm_bits_t
12233 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
12234 (gh_length): return scm_bits_t, not unsigned long.
12235
12236 * gc.[hc]: various small changes relating to many things stopping
12237 being long and starting being scm_[u]bits_t instead.
12238 scm_mallocated should no longer wrap around.
12239
12240 * fports.h: type renaming:
12241 scm_fport -> scm_fport_t
12242 the old name is deprecated, all in-Guile uses changed.
12243
12244 * fports.c (fport_fill_input): count: int -> scm_bits_t
12245 (fport_flush): init_size, remaining, count: int -> scm_bits_t
12246
12247 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
12248 those prototypes, as the functions they prototype don't exist.
12249
12250 * fports.c (default_buffer_size): int -> size_t
12251 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
12252 default_size: int -> size_t
12253 (scm_setvbuf): csize: int -> scm_bits_t
12254
12255 * fluids.c (n_fluids): int -> scm_bits_t
12256 (grow_fluids): old_length, i: int -> scm_bits_t
12257 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
12258 scm_bits_t
12259 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
12260
12261 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
12262 the new and shiny SCM_NUM2INT.
12263
12264 * extensions.c: extension -> extension_t (and made a typedef).
12265
12266 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
12267 there are no nasty surprises if/when the various deeply magic tag
12268 bits move somewhere else.
12269
12270 * eval.c: changed the locals used to store results of SCM_IFRAME,
12271 scm_ilength and such to be of type scm_bits_t (and not int/long).
12272 (iqq): depth, edepth: int -> scm_bits_t
12273 (scm_eval_stack): int -> scm_bits_t
12274 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
12275 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
12276 i: int -> scm_bits_t
12277
12278 * environments.c: changed the many calls to scm_ulong2num to
12279 scm_ubits2num.
12280 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
12281
12282 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
12283
12284 * debug.h: type renaming:
12285 scm_debug_info -> scm_debug_info_t
12286 scm_debug_frame -> scm_debug_frame_t
12287 the old names are deprecated, all in-Guile uses changed.
12288 (scm_debug_eframe_size): int -> scm_bits_t
12289
12290 * debug.c (scm_init_debug): use scm_c_define instead of the
12291 deprecated scm_define.
12292
12293 * continuations.h: type renaming:
12294 scm_contregs -> scm_contregs_t
12295 the old name is deprecated, all in-Guile uses changed.
12296 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
12297 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
12298
12299 * continuations.c (scm_make_continuation): change the type of
d69c867a 12300 stack_size from long to scm_bits_t.
1be6b49c
ML
12301
12302 * ports.h: type renaming:
12303 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
12304 scm_port -> scm_port_t
12305 scm_ptob_descriptor -> scm_ptob_descriptor_t
12306 the old names are deprecated, all in-Guile uses changed.
12307 (scm_port_t.entry): int -> scm_bits_t.
12308 (scm_port_t.line_number): int -> long.
12309 (scm_port_t.putback_buf_size): int -> size_t.
12310
12311 * __scm.h (long_long, ulong_long): deprecated (they pollute the
d69c867a 12312 global namespace and have little value beside that).
1be6b49c
ML
12313 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
12314 SCM handle).
12315 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
d69c867a 12316 exist (for size_t & ptrdiff_t).
1be6b49c
ML
12317 (scm_sizet): deprecated.
12318
12319 * Makefile.am (noinst_HEADERS): add num2integral.i.c
12320
a6219f22
MV
123212001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
12322
12323 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
12324 SCM_VARIABLE_INIT since that it what it used to be.
12325
12326 * deprecation.c (scm_include_deprecated_features): Make docstring
9a5fa6e9 12327 ANSIsh. Thanks to Matthias Köppe!
a6219f22 12328
311b6a3c
MV
123292001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
12330
9dfc4faa
MV
12331 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
12332 needed for weak-key hashtables.
12333
12334 * procs.c (scm_make_subr_with_generic): Add missing last argument
12335 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
12336
12337 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
12338 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
311b6a3c
MV
12339
12340 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
12341
2fc933fe
MV
123422001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
12343
57ae112d
MV
12344 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
12345 `duplicate_string'. Do not use an indirect cell, store symbol
12346 directly in collision list of hash table.
12347 (duplicate_string): Removed.
58bee6a8 12348
57ae112d
MV
12349 * init.c (scm_init_guile_1): Call scm_init_extensions.
12350
12351 * Makefile.am: Add "extensions.c" and related files in all the
12352 right places.
12353
12354 * extensions.h, extension.c: New files.
12355
12356 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
12357
2fc933fe
MV
12358 * modules.h (scm_system_module_env_p): Move out of deprecated
12359 section.
12360
12361 * rw.h (scm_init_rw): Added prototype.
12362
12363 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
12364 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
12365 New functions. They replace scm_make_gsubr and
12366 scm_make_gsubr_with_generic. The `make' variants only create the
12367 gsubr object, while the `define' variants also put it into the
12368 current module. Changed all callers.
12369 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
12370
12371 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
12372 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
12373 functions. They replace scm_make_subr, scm_make_subr_opt and
12374 scm_make_subr_with_generic. The `make' variants only create the
12375 subr object, while the `define' variants also put it into the
12376 current module. Changed all callers.
12377 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
12378 Deprecated.
12379
12380 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
12381 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
12382 the comments above.
58bee6a8 12383
18928596
NJ
123842001-05-19 Neil Jerram <neil@ossau.uklinux.net>
12385
12386 * throw.c (scm_lazy_catch): Slight docstring clarification.
12387
21a13beb
MV
123882001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
12389
e2b6ddc6
MV
12390 * throw.c: Lazy-catch handlers are no longer allowed to return.
12391 Fixed comments throughout.
12392 (scm_ithrow): Signal an error when a lazy-catch handler returns.
12393 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
12394 recognized as such.
12395
21a13beb
MV
12396 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
12397 refered to s_scm_minor_version previously.
12398
12399 * modules.h, modules.c: Moved around a lot of code so that
12400 deprecated features appear at the bottom.
12401 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
12402 module_prefix, make_modules_in_var, beautify_user_module_x_var,
12403 scm_the_root_module, scm_make_module, scm_ensure_user_module,
12404 scm_load_scheme_module): Deprecated.
12405 (scm_system_module_env_p): Return SCM_BOOL_T directly for
12406 environments corresponding to the root module.
12407 (convert_module_name, scm_c_resolve_module,
12408 scm_c_call_with_current_module, scm_c_define_module,
12409 scm_c_use_module, scm_c_export): New.
12410 (the_root_module): New static variant of scm_the_root_module. Use
12411 it everywhere instead of scm_the_root_module.
58bee6a8 12412
21a13beb
MV
12413 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
12414 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
12415 (scm_c_with_fluid): New.
12416 (scm_with_fluids): Use scm_c_with_fluids instead of
12417 scm_internal_with_fluids.
58bee6a8 12418
21a13beb
MV
12419 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
12420 `scm_init_goops'. Do not explicitly create/switch modules.
12421 Return SCM_UNSPECIFIED.
12422 (scm_init_goops): Only register `%init-goops-builtins' procedure.
12423 (scm_load_goops): Use scm_c_resolve_module instead of
12424 scm_resolve_module.
58bee6a8 12425
21a13beb
MV
12426 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
12427 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
12428 `scm_init_rw' prior to loading the startup files.
12429
12430 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
12431 scm_init_rdelim. Do not explicitly create/switch modules.
12432 Return SCM_UNSPECIFIED.
12433 (scm_init_rdelim): Only register `%init-rdelim-builtins'
12434 procedure.
58bee6a8 12435
21a13beb
MV
12436 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
12437 explicitly create/switch modules. Return SCM_UNSPECIFIED.
12438 (scm_init_rw): Only register `%init-rw-builtins' procedure.
12439
12440 * script.c (scm_shell): Evaluate the compiled switches in the
12441 current module, not in the root module.
12442
124432001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
12444
12445 * fluids.c (scm_c_with_fluids): Rename from
12446 scm_internal_with_fluids.
12447 (scm_internal_with_fluids): Deprecated.
12448 (scm_c_with_fluid): New.
12449
09cb9e73
DH
124502001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12451
12452 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
12453
12454 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
12455 accessed with SCM_C[AD]R.
12456
12457 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
12458
c81ea65d
RB
124592001-05-16 Rob Browning <rlb@cs.utexas.edu>
12460
12461 * version.c (s_scm_major_version): doc fixes.
12462 (s_scm_minor_version): doc fixes.
12463 (s_scm_minor_version): new function.
12464
12465 * version.h (scm_init_version): new function.
12466
12467 * versiondat.h.in: add GUILE_MICRO_VERSION.
12468
887dfa7d
DH
124692001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
12470
12471 * deprecation.c (scm_init_deprecation): Renamed
12472 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
12473
78930a69
MV
124742001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
12475
12476 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
12477 dependent on cpp_cnvt.awk
12478
39cde5c5
MG
124792001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12480
12481 * script.c (scm_compile_shell_switches): New command line option
12482 `--use-srfi' for loading a list of SRFIs on startup.
12483 (scm_shell_usage): Added `--use-srfi' to help message.
12484
f3f9dcbc
MV
124852001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12486
78930a69 12487 Merged from mvo-vcell-cleanup-1-branch.
887dfa7d 12488
f3f9dcbc
MV
12489 The concept of vcells has been removed from Guile. With it,
12490 explicit obarrays and associated operations are gone. Use
12491 hashtables instead of obarrays.
887dfa7d 12492
f3f9dcbc
MV
12493 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
12494 result as variable instead of vcell. Glocs no longer point to a
12495 vcell but to a variable. Use scm_c_define instead of
12496 scm_sysintern and treat the result as a variable (which it is),
12497 not a vcell.
887dfa7d 12498
f3f9dcbc
MV
12499 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
12500 SCM_DEFVARIABLEP): Deprecated.
12501 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
12502 (variable_print): Do not print name of variable.
12503 (variable_equalp): Compare values, not vcells.
12504 (anonymous_variable_sym): Removed.
12505 (make_vcell_variable): Removed.
12506 (make_variable): New, as replacement.
12507 (scm_make_variable, scm_make_undefined_variable): Do not take name
12508 hint parameter.
12509 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
12510 error in that case.
12511 (scm_builtin_variable): Deprecated.
12512
12513 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
12514 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
12515 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
12516 scm_sysintern, scm_sysintern0, scm_symbol_value0,
12517 scm_string_to_obarray_symbol, scm_intern_symbol,
12518 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
12519 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
12520 Deprecated and moved to "symbols-deprecated.c".
12521 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
12522 (scm_init_symbols): Call scm_init_symbols_deprecated.
12523 * symbols-deprecated.c: New file.
12524 * Makefile.am: Added symbols-deprecated.c and related files in all
12525 the right places.
887dfa7d 12526
f3f9dcbc
MV
12527 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
12528 SCM_GLOBAL_VCELL_INIT): Deprecated.
12529 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
12530 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
887dfa7d 12531
f3f9dcbc
MV
12532 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
12533 SCM_GLOC_SYM.
12534
12535 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
12536 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
12537 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
12538 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
12539 Changed according to the `throughout' comments.
12540
12541 * modules.h, modules.c (scm_module_system_booted_p): Changed type
12542 to `int'.
12543 (scm_module_type): Removed.
12544 (the_root_module): Renamed to the_root_module_var. Now points to
12545 a variable instead of a vcell. Updated all uses.
12546 (scm_the_root_module): Return SCM_BOOL_F when module systems
12547 hasn't been booted yet.
12548 (SCM_VALIDATE_STRUCT_TYPE): Removed.
12549 (scm_post_boot_init_modules): Made static.
12550 (scm_set_current_module): Call scm_post_boot_init_modules on first
12551 call.
12552 (make_modules_in, beautify_user_module_x, resolve_module,
12553 try_module_autoload, module_make_local_var_x): Tacked on "_var"
12554 suffix. Now point to variables instead of vcells. Updated all
12555 uses.
12556 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
12557 and return SCM_BOOL_F in that case.
12558 (scm_module_transformer): Likewise.
12559 (sym_module, scm_lookup_closure_module, scm_env_module): New.
12560 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
12561 (scm_eval_closure_lookup): Do not allow new definitions when
12562 `interface' flag is set.
12563 (scm_standard_interface_eval_closure): New.
12564 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
12565 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
12566 scm_c_lookup, scm_c_module_define, scm_c_define,
12567 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
12568 scm_modules_prehistory): New.
12569 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
12570 instead of scm_intern0.
887dfa7d 12571
f3f9dcbc
MV
12572 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
12573 symbol.
12574
12575 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
12576 hashtable operations to maintain the keywords, not obarray ones.
12577
12578 * init.c (scm_load_startup_files): Do not call
12579 scm_post_boot_init_modules. This is done by
12580 scm_set_current_module now.
12581 (scm_init_guile_1): Call scm_modules_prehistory. Call
12582 scm_init_variable early on.
12583
12584 * goops.c (s_scm_sys_goops_loaded): Get
12585 var_compute_applicable_methods from scm_sym2var, not from a direct
12586 invocation of scm_goops_lookup_closure.
12587
12588 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
12589
12590 * gc.c: Added simple debugging hack to mark phase of GC: When
12591 activated, do not tail-call scm_gc_mark. This gives nice
12592 backtraces.
12593 (scm_unhash_name): Removed.
12594
12595 * feature.c (features): Renamed to features_var. Now points to a
12596 variable instead of a vcell. Updated all uses.
12597
12598 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
12599 `scm_current_module_lookup_closure' which will do the right thing
12600 when the module system hasn't been booted yet.
12601 (SCM_GLOC_SYM): Removed.
12602 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
12603 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
887dfa7d 12604
f3f9dcbc
MV
12605 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
12606 instead of with vcells. Do not overwrite `var' with the result of
12607 the lookup, use the new `real_var' instead. Remove `var2' in
12608 exchange (which was only used with threads).
12609 (sym_three_question_marks): New.
12610 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
12611 `SCM_GLOC_SYM'.
12612 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
12613 (scm_m_atfop): Expect the function definition to be a variable
12614 instead of a vcell.
12615 (scm_macroexp): Do not use `unmemocar', explicitely remember the
12616 symbol instead.
12617 (scm_unmemocopy): Removed thoughts about anti-macro interface.
12618 (scm_eval_args): Use more explicit code in the gloc branch of the
12619 atrocious struct ambiguity test. The optimizer will sort this
12620 out.
12621 (scm_deval_args): Likewise.
12622 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
12623 remember the symbol instead. Added some comments where
12624 scm_tc3_cons_gloc really exclusively refers to structs.
12625 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
12626 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
12627 of scm_sysintern in general.
12628
12629 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
12630 explicit magic.
12631
12632 * debug.c (s_scm_make_gloc): Only allow proper variables, no
12633 pairs. Put the variable directly in the gloc.
12634 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
12635 (scm_init_debug): Use scm_c_define instead scm_sysintern.
12636
12637 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
12638
12639 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
12640 scm_the_last_stack_fluid_var. It now points to a variable instead
12641 of a vcell. Updated all uses.
12642 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
12643 instead of a vcell. Updated all uses.
12644
12645 * _scm.h: Include "variables.h" and "modules.h" since almost
12646 everybody needs them now.
12647
12648 * root.h (scm_symhash, scm_symhash_vars): Removed.
12649 * gc.c (scm_init_storage): Do not initialize them.
887dfa7d 12650
7c33806a
DH
126512001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12652
12653 * eval.c (scm_init_eval): Initialize scm_undefineds and
58bee6a8 12654 scm_listofnull.
7c33806a
DH
12655
12656 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
12657 like the SCM_NEWCELL macro counterparts.
12658
12659 (scm_init_storage, scm_init_gc): Moved initialization of
12660 scm_tc16_allocated from scm_init_gc to scm_init_storage.
12661
12662 (scm_init_storage): Moved initialization of scm_undefineds and
12663 scm_listofnull to eval.c, initializion of scm_nullstr to
12664 strings.c, initializion of scm_nullvect to vectors.c.
12665
12666 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
12667 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
12668
12669 * init.c (scm_init_guile_1): Reordered some initializations and
12670 added dependcy information comments.
12671
12672 * load.c (scm_init_load): Use scm_nullstr.
12673
12674 * strings.c (scm_init_strings): Initialize scm_nullstr.
12675
12676 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
12677
11bbab47
MV
126782001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
12679
12680 * values.c (print_values): Print as a unreadable object, not as
9a5fa6e9 12681 multiple lines. Thanks to Matthias Köppe!
11bbab47 12682
5cd06d5e
DH
126832001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
12684
12685 * deprecation.c: Fixed copyright date.
12686
12687 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
12688 DEPRECATION_H to SCM_DEPRECATION_H.
12689
32bac999
TTN
126902001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
12691
12692 * guile-doc-snarf.in: Update copyright.
12693 Fix relative path bug. Thanks to Sergey Poznyakoff.
12694
c9dcc5ae
MV
126952001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12696
12697 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
12698 accept open ports. Thanks to Quetzalcoatl Bradley!
12699
7c582ec9
MG
127002001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12701
12702 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
12703 has 779 primitives on startup.
12704
284ab601
MV
127052001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
12706
12707 * eval.c (scm_i_eval): Copy expression before passing it to
12708 SCM_XEVAL. The copy operation was removed unintendedly during my
12709 change on 2001-03-25.
12710
910d1e40
ML
127112001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12712
9a5fa6e9 12713 from Matthias Köppe (thanks!):
910d1e40
ML
12714
12715 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12716 portable.
12717
12718 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12719 docstring.
12720
56e55ac7
DH
127212001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12722
12723 * gc.c (scm_init_gc): Added FIXME comment.
12724
12725 * hooks.c: Since hooks don't have a name any more, it is not
12726 necessary to include objprop.h.
12727
12728 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12729
12730 (symbol_name, scm_make_hook_with_name): Removed.
12731
12732 (scm_create_hook): Don't set the hook's name property.
12733
12734 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12735
12736 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12737
12738 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12739
12740 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12741 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12742 FLOBUFLEN and define it unconditionally.
12743
d204b24c
MV
127442001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12745
438201b4
MV
12746 * gh_data.c (gh_lookup): Call gh_module_lookup with
12747 `scm_current_module ()', not `#f'.
12748 (gh_module_lookup): Expect a module instead of an obarray as first
12749 argument and do lookup in that module.
56e55ac7 12750
d204b24c
MV
12751 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12752 arrays. The length of array is already determined differently and
12753 scm_uniform_vector_length does not work on arrays.
12754
26c1d549
MV
127552001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12756
fe7c2f88
MV
12757 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12758 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12759
26c1d549
MV
12760 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12761 they are not used. Changed `wrong type' error into `wrong num
12762 args' error. Changed all callers.
56e55ac7 12763
26c1d549
MV
12764 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12765 arguments are supplied.
12766
1c938eb8
TTN
127672001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12768
12769 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12770 describe `regexp/notbol' and `regexp/noteol' execution flags.
12771
3a6379f7
TTN
12772 * strop.c (scm_substring_move_x): Doc fix; nfc.
12773
c10ecc4c
MV
127742001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12775
12776 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12777 (scm_set_object_procedure_x): Use it to check argument. Fix
12778 docstring.
12779
12780 * evalext.c (scm_definedp): Fix docstring.
12781
a57a0b1e
GH
127822001-05-05 Gary Houston <ghouston@arglist.com>
12783
12784 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12785 support.
12786
7a095584
NJ
127872001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12788
12789 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12790 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12791 Change R4RS references to R5RS.
12792
12793 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12794 docstring source are correctly reproduced in the output (ii)
12795 we don't anymore get occasional trailing quotes. Also reorganized
12796 and commented the code a little.
12797
12798 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12799 fixes.
12800
dd2a6f3a
MG
128012001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12802
12803 * strop.c (scm_string_split): New procedure.
12804
12805 * strop.h (scm_string_split): Added prototype.
12806
00120130
GH
128072001-05-04 Gary Houston <ghouston@arglist.com>
12808
12809 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12810 Dale P. Smith.
12811
b65e6bfe
MV
128122001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12813
12814 * rw.c: Include "modules.h" and "strports.h".
12815
12816 * net_db.h (scm_gethost): Added prototype.
12817
12818 * deprecation.h, deprecation.c: New.
12819 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12820 (DOT_X_FILES): Added "deprecation.x".
12821 (modinclude_HEADERS): Added "deprecation.h".
12822
12823 * init.c: Include "deprecation.h".
12824 (scm_init_guile_1): Call scm_init_deprecation.
1c938eb8 12825
b65e6bfe
MV
128262001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12827
12828 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12829 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12830 New.
12831
b0e5fd8c
GH
128322001-04-29 Gary Houston <ghouston@arglist.com>
12833
12834 * rw.c: new file, implementing C part of module (ice-9 rw).
12835 (scm_read_string_x_partial): moved from ioext.c
12836 (scm_init_rw): new proc.
12837 * rw.h: new file.
12838 init.c: include rw.h and call scm_init_rw.
12839 Makefile.am: include rw.c and rw.h.
12840
0b2da99c
RB
128412001-04-28 Rob Browning <rlb@cs.utexas.edu>
12842
12843 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12844 know what's supposed to happen to it.
12845
12846 * list.h (scm_list_star): deprecation expired - removed.
12847
12848 * numbers.h (scm_dblproc): deprecation expired - removed.
12849 (SCM_UNEGFIXABLE): deprecation expired - removed.
12850 (SCM_FLOBUFLEN): deprecation expired - removed.
12851 (SCM_INEXP): deprecation expired - removed.
12852 (SCM_CPLXP): deprecation expired - removed.
12853 (SCM_REAL): deprecation expired - removed.
12854 (SCM_IMAG): deprecation expired - removed.
12855 (SCM_REALPART): deprecation expired - removed.
12856 (scm_makdbl): deprecation expired - removed.
12857 (SCM_SINGP): deprecation expired - removed.
12858 (SCM_NUM2DBL): deprecation expired - removed.
12859 (SCM_NO_BIGDIG): deprecation expired - removed.
12860
12861 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12862 (scm_tc_dblr): deprecation expired - removed.
12863 (scm_tc_dblc): deprecation expired - removed.
12864 (scm_tc16_flo): deprecation expired - removed.
12865 (scm_tc_flo): deprecation expired - removed.
12866
12867 * tag.h (scm_tag): deprecation expired - removed.
12868
12869 * tag.c: (scm_tag): deprecation expired - removed.
12870
12871 * ioext.c: (scm_fseek): deprecation expired - removed.
12872
12873 * ioext.h (scm_fseek): deprecation expired - removed.
12874
12875 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12876
12877 * gh.h (gh_int2scmb): deprecation expired - removed.
12878
e3334972
NJ
128792001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12880
12881 * stacks.c (scm_make_stack): Fix typo in docstring.
12882
a0f979ac
RB
128832001-04-27 Rob Browning <rlb@cs.utexas.edu>
12884
12885 * error.c (scm_sysmissing): deprecation expired - removed.
12886
12887 * error.h (scm_sysmissing): deprecation expired - removed.
12888
12889 * gc.c
12890 (scm_init_gc): gc-thunk deprecation expired - removed.
12891 (scm_gc_vcell): deprecation expired - removed.
12892 (gc_async_thunk): scm_gc_vcell related code removed.
12893
12894 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12895
12896 * strings.h
12897 (SCM_NSTRINGP): deprecation expired - removed.
12898 (SCM_NRWSTRINGP): deprecation expired - removed.
12899
12900 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12901
12902 * chars.h
12903 (SCM_ICHRP): deprecation expired - removed.
12904 (SCM_ICHR): deprecation expired - removed.
12905 (SCM_MAKICHR): deprecation expired - removed.
12906
12907 * ports.h
12908 (SCM_INPORTP): deprecation expired - removed.
12909 (SCM_OUTPORTP): deprecation expired - removed.
12910
253081cf
MV
129112001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12912
12913 * modules.c (scm_module_type): New.
12914 (scm_post_boot_init_modules): Initialize from Scheme value.
12915 (the_module, scm_current_module, scm_init_modules): the_module is
12916 now a C only fluid.
12917 (scm_current_module): Export to Scheme.
12918 (scm_set_current_module): Do not call out to Scheme, do all the
12919 work in C. Export procedure to Scheme. Only accept modules, `#f'
12920 is no longer valid as the current module. Only set
12921 scm_top_level_lookup_closure_var and scm_system_transformer when
12922 they are not deprecated.
12923 (scm_module_transformer, scm_current_module_transformer): New.
12924
12925 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12926 scm_current_module_transformer, scm_module_transformer): New.
1c938eb8 12927
253081cf
MV
12928 * gh_data.c: Removed FIXME comment about gh_lookup returning
12929 SCM_UNDEFINED. That's the right thing to do.
12930
12931 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12932 into the conditionally compiled sections.
12933 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12934 scm_current_module_transformer instead of scm_system_transformer.
12935 * init.c (start_stack): Move initialization of
12936 scm_system_transformer to the deprecated section.
1c938eb8 12937
1f7f9ed4
NJ
129382001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12939
12940 * throw.c (scm_throw): Correct docstring.
12941
66c73b76
GH
129422001-04-22 Gary Houston <ghouston@arglist.com>
12943
eefae538
GH
12944 * socket.c: attempted to improve the docstrings slightly.
12945
66c73b76
GH
12946 * net_db.c: remove bogus "close" declaration.
12947 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12948 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12949 moved to socket.c.
12950 * net_db.h: declarations moved too.
12951
12952 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12953 long.
12954 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12955 (VALIDATE_INET6): new macro.
12956 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12957 inet-pton and inet-ntop.
12958 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12959 (scm_addr_vector): use ipv6_net_to_num.
1c938eb8 12960
7a7f7c53
DH
129612001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12962
12963 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12964 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12965
12966 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12967 when compiled in debug mode.
12968
12969 (scm_gc_sweep): Only call smob's free function if it is defined.
12970
12971 * print.c (scm_iprin1): No need to check for validity of smob
12972 type or existence of print function.
12973
12974 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12975 Resizing will not work well with preemptive threading.
12976
12977 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12978
12979 (scm_make_smob_type): Extracted initialization of smob
12980 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12981 of the critical section.
12982
12983 (scm_smob_prehistory): Initialize all smob descriptors. By
12984 default, don't assign a smob free function: Most smob types don't
12985 need one.
12986
12987 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12988
e1368a8d
GH
129892001-04-21 Gary Houston <ghouston@arglist.com>
12990
12991 * socket.c (FLIP_NET_HOST_128): new macro.
12992 (scm_fill_sockaddr): use new macro.
12993 (scm_addr_vector): completed IPv6 address support. added const
12994 to the address parameter.
12995
5a525b84
GH
129962001-04-20 Gary Houston <ghouston@arglist.com>
12997
12998 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12999 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
13000 is defined.
13001 (scm_addr_vector): use a switch instead of multiple if statements.
13002 Add support for IPv6 (incomplete) .
e1368a8d 13003 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5a525b84 13004
1a551638
DH
130052001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
13006
13007 * struct.c (scm_free_structs): Only pairs may be accessed with
13008 SCM_C[AD]R.
13009
c07b3fef
MD
130102001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13011
a9d861e3
MD
13012 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
13013
c07b3fef
MD
13014 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13015 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
13016 parentheses in order to get the correct associativity.
13017
af7546eb
DH
130182001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13019
13020 * unif.c (scm_array_to_list): Added missing handling of arrays of
13021 bytes. Thanks to Masao Uebayashi for the bug report.
13022
4daecfee
DH
130232001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13024
13025 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
13026 consistently.
13027
726d810a
DH
130282001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13029
13030 * procs.h (SCM_CLOSURE_FORMALS): New macro.
13031
13032 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
13033 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
1c938eb8 13034 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
726d810a
DH
13035 SCM_CLOSURE_FORMALS.
13036
13037 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
13038 (scm_i_procedure_arity): Prefer stronger predicates like
13039 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13040
13041 * macros.c (macro_print): Extracted macro printing code from
13042 print.c and simplified it.
13043
13044 (scm_macro_type): Use SCM_MACRO_TYPE;
13045
13046 (scm_init_macros): Use macro_print for printing macros.
13047
13048 * print.c (scm_print_opts): Improved option documentation.
13049
13050 (scm_iprin1): Extracted printing of macros to macros.c.
13051 Simplified printing of ordinary closures.
13052
13053 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
13054 Martin Grabmueller for the bug report.
13055
e038c042
DH
130562001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13057
13058 This patch eliminates some further applications of SCM_C[AD]R to
13059 non pair cells.
13060
13061 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
13062 never been applied to real pairs.
13063
13064 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
13065
13066 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
13067
13068 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
13069 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
13070 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
13071
13072 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
13073 Added.
13074
13075 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
13076 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
13077
13078 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
13079 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
13080 SCM_SET{AND,OR}_CAR.
13081
3453619b
GH
130822001-04-17 Gary Houston <ghouston@arglist.com>
13083
13084 * some initial support for IPv6:
1c938eb8 13085
3453619b
GH
13086 * socket.c (scm_fill_sockaddr): improve the argument validation.
13087 don't allocate memory until all args are checked. instead of
13088 unconditional memset of soka, try setting sin_len to 0 if
13089 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
13090 (scm_socket, scm_connect): extend docstrings for IPv6.
13091 (scm_init_socket): intern AF_INET6 and PF_INET6.
13092
216eedfc
DH
130932001-04-17 Niibe Yutaka <gniibe@m17n.org>
13094
13095 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
13096 matches SCM_DEFER_INTS at the beginning of the function.
13097
13098 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
13099
13100 * gc.c (scm_igc): Unconditionally call
13101 SCM_CRITICAL_SECTION_START/END.
13102
13103 * fluids.c (next_fluid_num): Unconditionally call
13104 SCM_CRITICAL_SECTION_START/END.
13105 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
13106
13107 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
13108 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
13109 Removed.
13110
13111 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
13112 Defined as nothing for the case of !defined(USE_THREADS).
13113 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
13114 Removed.
13115 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
13116 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
13117 LINE.
13118 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
13119 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
13120 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
13121 SCM_CRITICAL_SECTION_START/END.
13122 (SCM_REALLOW_INTS: Bug fix. Don't call
13123 SCM_THREAD_SWITCHING_CODE.
13124 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
13125 SCM_THREAD_SWITCHING_CODE directly.
13126 (SCM_ENTER_A_SECTION): Unconditionally use
13127 SCM_CRITICAL_SECTION_START/END. (was:
13128 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
13129
131302001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13131
13132 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
13133 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
13134 allowed to explicitly set this macro via the CFLAGS variable
13135 during make.
13136
13137 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
13138 (SCM_THREAD_CRITICAL_SECTION_START,
13139 SCM_THREAD_CRITICAL_SECTION_END): Renamed
13140 SCM_THREAD_CRITICAL_SECTION_START/END to
13141 SCM_CRITICAL_SECTION_START/END.
13142
f22ed5a0
KN
131432001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
13144
13145 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
13146 instead of bzero.
1c938eb8 13147
f22ed5a0 13148 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
1c938eb8 13149 (MISSING_BZERO_DECL): Remove the declaration.
f22ed5a0
KN
13150
13151 Thanks to NIIBE Yutaka.
13152
508ded1c
MD
131532001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13154
a087ba81
MD
13155 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
13156 goops module should be registered in order to work for an
13157 application which uses libguile statically linked.)
508ded1c 13158
e4b265d8
DH
131592001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
13160
13161 * numbers.[ch] (scm_num2long, scm_num2long_long,
13162 scm_num2ulong_long, scm_num2ulong): Argument position is an
13163 unsigned integer.
13164
13165 * environments.c (eval_environment_folder,
13166 import_environment_folder), gh_data.c (gh_scm2longs,
13167 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
13168 for integers and pointers, respectively.
13169
13170 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
13171 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
13172 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
13173 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
13174
13175 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
13176 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
13177 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
13178 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
13179 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
13180 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
13181
89d04205
NJ
131822001-04-09 Neil Jerram <neil@ossau.uklinux.net>
13183
13184 * strings.c (scm_read_only_string_p): Update docstring to reflect
13185 current (non-)usage of "read only" strings.
40f83c3e
NJ
13186 (scm_make_shared_substring): Clarify docstring by changing
13187 "semantics" to "arguments".
89d04205 13188
4d66be54
MG
131892001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13190
13191 * hooks.c (scm_make_hook, scm_make_hook_with_name),
13192 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
13193 improvements.
13194
1e6808ea
MG
131952001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13196
13197 The following changes make the documentation more consistent.
1c938eb8 13198
1e6808ea
MG
13199 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
13200 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
13201 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
13202 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
13203 ... @end lisp.
13204
13205 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
13206 (scm_array_dimensions, scm_make_shared_array),
13207 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
13208 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
13209 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
13210 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
13211 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
13212 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
13213 macros.c (scm_makmmacro), list.c (scm_append), environments.c
13214 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
13215 @example ... @end example to @lisp ... @end lisp.
13216
13217 * weaks.c (scm_weak_vector): Corrected docstring.
13218
13219 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
13220 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
13221 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
13222 (scm_hashx_set_x, scm_hashx_get_handle),
13223 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
13224 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
13225 vectors.c (scm_vector_fill_x), strings.c
13226 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
13227 objprop.c (scm_set_object_properties_x):
13228 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
13229 strports.c (scm_call_with_input_string), ports.c
13230 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
13231 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
13232 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
13233 (scm_make_weak_vector,scm_weak_vector_p),
13234 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
13235 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
13236 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13237 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
13238 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
13239 Made parameter names match documentation by renaming parameters
13240 and/or fixing docstrings.
1c938eb8 13241
1e6808ea
MG
13242 * numbers.c (scm_ash): Corrected Texinfo markup.
13243
13244 * strop.c (scm_string_index, scm_string_rindex),
13245 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
13246
13247 * vports.c (scm_make_soft_port), unif.c
13248 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
13249 (scm_dimensions_to_uniform_array, scm_transpose_array),
13250 (scm_array_in_bounds_p, scm_uniform_vector_ref),
13251 (scm_bit_count, scm_bit_position, scm_bit_count_star),
13252 (scm_array_to_list, scm_list_to_uniform_array),
13253 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
13254 (scm_open_input_string, scm_open_output_string),
13255 (scm_get_output_string), strop.c (scm_string_copy),
13256 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
13257 (scm_get_internal_real_time, scm_times),
13258 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
13259 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
13260 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
13261 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
13262 simpos.c (scm_system), random.c (scm_random_uniform),
13263 (scm_random_normal, scm_random_exp), ramap.c
13264 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
13265 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
13266 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
13267 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
13268 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
13269 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
13270 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
13271 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
13272 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
13273 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
13274 (scm_logand, scm_logior, scm_logxor, scm_lognot),
13275 (scm_integer_expt, scm_bit_extract, scm_logcount),
13276 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
13277 net_db.c (scm_inet_netof, scm_lnaof), modules.c
13278 (scm_interaction_environment), macros.c (scm_makacro),
13279 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
13280 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
13281 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
13282 (scm_fluid_ref), filesys.c (scm_open_fdes),
13283 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
13284 Docstring correction: `Returns' -> `Return'
13285
1c938eb8
TTN
13286 * gc.c (scm_set_debug_cell_accesses_x):
13287 (s_scm_gc_set_debug_check_freelist_x):
1e6808ea
MG
13288 * fluids.c (scm_fluid_p): Added texinfo markup.
13289
13290 * error.c (scm_strerror): Made docstring more precise.
13291
13292 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
13293 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
13294 (scm_symbol_p, scm_symbol_to_string), strorder.c
13295 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
13296 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
13297 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
13298 (scm_string_ci_geq_p), strop.c (scm_string_copy),
13299 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
13300
9a6976cd
DH
133012001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
13302
13303 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
13304 mode, as suggested by Michael Livshin.
13305
463b2219
ML
133062001-03-31 Michael Livshin <mlivshin@bigfoot.com>
13307
13308 * backtrace.c (display_backtrace_body): since the `print_state'
13309 variable is not used (instead its data field is used directly as
13310 `pstate'), protect it from the hungry compiler optimizations.
13311 thanks to Bill Schottstaedt for the report.
13312
61045190
DH
133132001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13314
13315 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
13316 It is only defined and used if guile is compiled with
13317 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
13318 let cells with a free_cell type tag be visible outside of the
13319 garbage collector when in debug mode.
13320
13321 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
13322
13323 (scm_assert_cell_valid): Use a local static variable to avoid
13324 recursion.
13325
13326 (MARK): Only check for rogue cell pointers in debug mode. Use
13327 scm_cellp for this purpose and place all checks for rogue pointers
13328 into that function. Further, since due to conservative scanning
13329 we may encounter free cells during marking, don't use the standard
13330 cell type accessor macro to determine the cell type.
13331
13332 (scm_cellp): Check if the cell pointer actually points into a
13333 card header.
13334
13335 (scm_init_gc): Initalize scm_tc16_allocated.
13336
13337 * gc.h (GCH): Renamed to SCM_GC_H.
13338
13339 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
13340 might be unnecessary, but I feel better this way :-)
13341
13342 (SCM_GC_CELL_TYPE): New macro.
13343
13344 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
13345 in guile, and it is unlikely that they will be applied to real
13346 pairs anyway.
13347
13348 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
13349
13350 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
13351 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
13352
13353 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
13354 make sure that in debug mode no free cell will ever be visible
13355 outside of the garbage collector.
13356
85d6df6a
DH
133572001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13358
13359 * async.c (scm_asyncs_pending): Don't use != to compare SCM
13360 values.
13361
13362 * async.c (scm_system_async), variable.c (scm_make_variable,
13363 scm_make_undefined_variable): Use scm_cons to create a pair.
13364
13365 * debug.c (scm_reverse_lookup): Perform proper type checking.
13366 Remove suspicious use of SCM_SLOPPY_CONSP.
13367
13368 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
13369 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
13370 the corresponding optimization.
13371
13372 * eval.c (iqq): Use proper type check.
13373
13374 (scm_m_expand_body): Remove redundant type checks.
13375
13376 (promise_print): Don't access promise cells as pairs.
13377
13378 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
13379 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
13380 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
13381 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
13382 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
13383
13384 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
13385 (scm_iprin1): Use new macro predicate and accessors.
13386
13387 * eval.h (scm_tc16_macro): Removed declaration. It is declared
13388 in macros.h.
13389
13390 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
13391 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
13392 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
13393 SCM_VARIABLE_H. Even the macros that are used to inhibit
13394 including a header file twice should be in the SCM_ namespace.
13395
13396 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
13397 properties.c (scm_primitive_property_ref,
13398 scm_primitive_property_del_x): Prefer stronger predicates like
13399 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13400
13401 * gc.c (MARK): Use proper macros to access procedure-with-setter
13402 cell elements and closure cell elements.
13403
13404 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
13405 access free cells as pairs.
13406
13407 (scm_unprotect_object): scm_hashq_get_handle returns #f if
13408 no hashtab entry is found.
13409
13410 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
13411 SCM_CLR_PORT_OPEN_FLAG.
13412
13413 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
13414 use SCM_SET_C[AD]R for uninitialized cells.
13415
13416 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
13417 If the hashtable has no slots, return #f instead of '(). This
13418 unifies the return value with most assoc-functions.
13419
13420 (scm_hash_fn_ref): Use proper type check.
13421
13422 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
13423 Removed references to non-existing functions from documentation.
13424
13425 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
13426 access keyword cell elements.
13427
13428 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
13429 macros.
13430
13431 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
13432
13433 * print.c (scm_iprlist): Added comment. Improved loop
13434 conditions.
13435
13436 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
13437 pairs.
13438
13439 * smob.c (scm_markcdr): Don't access smob cells as pairs.
13440
13441 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
13442
13443 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
13444 cells as pairs.
13445
13446 * variable.c (variable_print, variable_equalp, scm_variable_ref,
13447 scm_variable_set_x): Use proper macros to access variable cell
13448 elements.
13449
13450 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
13451
13452 * variable.h (SCM_VARVCELL): Don't access variable cells as
13453 pairs.
13454
13455 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
13456 added FIXME comment, removed register specifier.
13457
1b27e91a
KN
134582001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
13459
13460 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
13461 * init.c (scm_init_guile_1): Don't init goopscore module.
13462
16c634ec
MV
134632001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13464
13465 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
13466
91344ceb
MG
134672001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13468
13469 * strop.c (scm_string_to_list): Fixed docstring markup.
13470 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
13471 (scm_string_downcase, scm_string_capitalize_x),
13472 (scm_string_capitalize): Rewrote and corrected docstrings.
13473 (scm_string_ci_to_symbol): Made docstring more explicit.
13474
07576812
MV
134752001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13476
13477 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
13478 eval.c can use it.
13479 (scm_call_with_values): Removed.
13480 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
13481 so that it can be exported.
13482 (scm_call_with_values): Removed.
1c938eb8 13483
07576812
MV
13484 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
13485 * eval.c: Include "libguile/values.h"
13486 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
13487 New.
13488 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
13489 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
13490 New delcarations to support above change.
13491
13492 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
13493 errors with last change.
1c938eb8 13494
07576812
MV
134952001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
13496
13497 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
13498 scm_i_eval): Moved the application of the system transformer from
13499 scm_i_eval to scm_primitive_eval.
13500
a17bb5fd
NJ
135012001-03-23 Neil Jerram <neil@ossau.uklinux.net>
13502
a6be01a4
NJ
13503 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
13504
a17bb5fd
NJ
13505 * strop.c (scm_string_index): Fix docstring line break
13506 regression.
13507
13508 * list.c (scm_cons_star): Fix docstring typo.
13509
be54b15d
DH
135102001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13511
13512 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
13513 (big2str), ports.c (scm_drain_input), read.c (scm_read,
13514 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
13515 scm_make_string, scm_string_append), strports.c (st_resize_port,
13516 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
13517 scm_makstr with calls to scm_allocate_string.
13518
13519 * strings.[ch] (scm_allocate_string): New function.
13520
13521 * strings.[ch] (scm_makstr): Deprecated.
13522
789ecc05
GH
135232001-03-18 Gary Houston <ghouston@arglist.com>
13524
6d163216
GH
13525 * posix.c (scm_tmpnam): check that return value from tmpnam is not
13526 NULL. rewrote the docstring.
13527 (scm_mkstemp): new procedure implementing "mkstemp!".
13528 * posix.h: declare scm_mkstemp.
13529
789ecc05
GH
13530 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
13531 normally it would be found in netdb.h.
13532
c6c79933
GH
135332001-03-17 Gary Houston <ghouston@arglist.com>
13534
e9e225e5
GH
13535 * sort.c (scm_sort): move sortvec variable to avoid a compiler
13536 warning when HAVE_ARRAYS is not defined. move len too.
13537
13538 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
13539 (EXTRA_DOT_X_FILES): let configure set the value.
13540 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
13541
c6c79933
GH
13542 * gc.c (scm_must_malloc): changed the comment explaining when
13543 scm_must variants of malloc/free etc., should be used, based on
13544 explanation from Dirk Herrmann.
13545 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
13546 string with procedure name. use scm_must_malloc instead of malloc.
13547 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
13548 of malloc/free.
13549 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
13550 scm_ungetc): use scm_must variants of malloc/realloc/free.
13551 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
13552
b3fcac34
DH
135532001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13554
13555 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13556 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
13557 scm_wrong_type_arg instead.
13558
13559 (SCM_WNA): Deprecated.
13560
13561 * error.[ch] (scm_wta): Deprecated.
13562
13563 * numbers.c (s_i_log): Minor comment fix.
13564
13565 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
13566 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
13567 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
13568 wrong-num-args or misc errors.
13569
13570 * unif.c (scm_make_shared_array, scm_transpose_array,
13571 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
13572 Validate the rest argument (note: this is only done when guile is
13573 built with SCM_DEBUG_REST_ARGUMENT=1)
13574
13575 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
13576 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
13577
13578 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
13579 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
13580
68baa7e7
DH
135812001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13582
13583 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
13584 instead of scm_wrong_num_args.
13585
13586 * coop-threads.c: Don't include libguile/strings.h. (Was only
13587 needed for former implementation of SCM_WRONG_NUM_ARGS.)
13588
13589 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
13590 wrong-num-args errors.
13591
9f40cd87
DH
135922001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13593
13594 * error.[ch] (scm_error_num_args_subr): New function.
13595
5352393c
MG
135962001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13597
13598 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
13599 (scm_length, scm_append, scm_reverse, scm_list_ref),
13600 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
13601 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
13602 (scm_delete1_x), gc.c (scm_map_free_list),
13603 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
13604 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
13605 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
13606 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
13607 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
13608 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
13609 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
13610
13611 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
13612 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13613 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
13614 symbols.c (scm_symbol_interned_p), numbers.c
13615 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
13616 markup.
13617
a9205f07
KN
136182001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
13619
13620 * snarf.h (SCM_CONST_LONG): Deprecated.
13621 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
13622
6d583887
MV
136232001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13624
13625 * numbers.c (scm_num2ulong): Check that a bignum is positive
13626 before looking at the magnitude. Correctly check for overflow
13627 during conversion.
13628 (scm_num2long_long): Likewise.
13629 (scm_num2ulong_long): New.
13630 (ULONG_LONG_MAX): Define if not already defined.
13631 * numbers.h: (scm_num2ulong_long): New prototype.
1c938eb8 13632
e87a03fc
MG
136332001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13634
13635 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
13636
13637 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
13638 (SCM_OPOUTSTRPORTP): New predicate macros.
13639 (scm_open_input_string, scm_open_output_string),
13640 (scm_get_output_string): New prototypes.
1c938eb8 13641
e87a03fc
MG
13642 * strports.c (scm_open_input_string, scm_open_output_string),
13643 (scm_get_output_string): New procedures (SRFI-6 compliant).
13644 Made scm_tc16_strport non-static.
13645
160bb34a
DH
136462001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13647
13648 * macros.h (SCM_ASSYNT): Removed unused object argument from
13649 signature.
13650
13651 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
13652 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
13653 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
13654 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
13655 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
13656 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
13657 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
13658 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13659 scm_m_atdispatch): Removed unused object argument from call to
13660 SCM_ASSYNT.
13661
80dee77b
DH
136622001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13663
13664 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
13665 const int* to reflect that the input array of integers remains
13666 unchanged. Thanks to Brett Viren for the hint.
13667
d3dd80ab
MG
136682001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13669
13670 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
13671 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
13672 in various places.
13673 (gh_scm2newstr, gh_symbol2newstr): Change call to
13674 scm_must_malloc() to malloc(), because user-free()able memory is
13675 allocated.
13676
13677 * gc.c: Added declaration of `scm_debug_check_freelist'.
13678
26a3038d
MG
136792001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13680
13681 * ports.c (scm_port_mode): Changed `mode' array size to 4.
13682
1f3908c4
KN
136832001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
13684
13685 * strports.c (scm_object_to_string): New procedure.
13686 (scm_strprint_obj): Deprecated.
13687 * strports.h: Reflect the changes.
13688
e11208ca
DH
136892001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
13690
13691 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
13692
13693 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13694 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
13695 SCM_ASSYNT to check for correct argument types. Either use some
13696 SCM_VALIDATE_* macro or an explicit test.
13697
13698 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
13699 misc-errors.
13700
13701 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
13702 instead of calling scm_wta.
13703
67e8151b
MG
137042001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13705
13706 * load.c (scm_primitive_load, scm_primitive_load_path),
13707 (scm_sys_search_load_path): Corrected docstrings (file ->
13708 filename).
13709
13710 * eval.c (scm_force): Added texinfo markup to docstring.
13711 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13712
13713 * debug-malloc.c: Reinserted #include <stdio.h>.
13714
e0c08f17
KN
137152001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13716
e39c3de4
KN
13717 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13718
e0c08f17
KN
13719 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13720 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13721 Use SCM_LISTn instead of scm_listify.
13722
e6e2e95a
MD
137232001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13724
13725 * _scm.h: Removed #include <errno.h>.
13726
13727 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13728 errno variable (can be a macro on some systems, for example when
13729 using linux libc with threads).
13730
13731 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13732 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13733 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13734 #include <errno.h> in these 20 out of 100 files.
1c938eb8 13735
97d0e20b
GH
137362001-03-10 Gary Houston <ghouston@arglist.com>
13737
13738 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13739 not already defined.
13740
e75341b3
MD
137412001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13742
13743 * coop.c: Inserted #include <stdio.h>.
13744
13745 * iselect.c: Reinserted #include <stdio.h>.
13746
74355186
MV
137472001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13748
13749 * posix.c: Replaced `#define' of __USE_XOPEN right before
13750 including unistd.h with a define of _GNU_SOURCE at the very top of
13751 the file.
13752
783e7774
KN
137532001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13754
13755 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13756 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13757 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13758 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13759 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13760 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13761 print.c, procprop.c, procs.c, properties.c, ramap.c,
13762 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13763 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13764 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
1c938eb8 13765 Remove #include <stdio.h>
783e7774
KN
13766 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13767
13768 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13769
9a677c37
MG
137702001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13771
13772 * posix.c (scm_gethostname): Set initial name length to 256 for
13773 Solaris.
13774
94e6d793
MG
137752001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13776
13777 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13778 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13779 (scm_sethostname, scm_gethostname): New prototypes.
13780
13781 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13782 <sys/file.h>, if present.
13783 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13784 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13785 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13786 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13787 (scm_sethostname, scm_gethostname): New procedures.
13788
650a1cf9
NJ
137892001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13790
13791 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13792 not optional (ii) "recommend" spelling correction.
13793
9636b49c
MD
137942001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13795
5e4a4d09
MD
13796 * ramap.c (racp): Removed optimization which caused array copying
13797 to fail if the two arrays shared storage. Re-inserted the IVDEP
13798 macros removed in the change of 2000-03-09. (Don't really have a
13799 complete grasp of what they are for, but they seem to be necessary
13800 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13801
9636b49c
MD
13802 * hash.c (scm_string_hash): Don't downcase characters.
13803
04a4d666
MD
138042001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13805
9636b49c 13806 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
04a4d666
MD
13807 size from 277 --> 1009.
13808
13809 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13810 function.
13811
13812 * coop-threads.c: Fixed change of 2001-03-06.
1c938eb8 13813
04a4d666
MD
13814 * validate.h: Code formatting.
13815
66418d34
KN
138162001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13817
13818 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13819 (*.doc): Add dependency on guile-snarf.awk.in.
13820
13821 * guile-snarf.awk.in: Neglect spaces at the end of
13822 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13823 middle of docstrings. (To avoid the problem with gcc-2.96.)
13824
2ade72d7
DH
138252001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13826
13827 * coop-threads.c (scm_call_with_new_thread), load.c
13828 (scm_primitive_load, scm_sys_search_load_path), random.c
13829 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13830 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13831 (potentially) issue a scm-misc-error or wrong-num-args error
13832 message.
13833
13834 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13835 about the expected type with the wrong-type-arg error message.
13836
13837 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13838 a C level bug that can't be fixed from scheme anyway.
13839
586d7da2
MD
138402001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13841
13842 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13843 Duplicate bindings are OK in a let* since a let* is semantically
13844 equivalent to a nested set of let:s.
13845
1dd05fd8
MG
138462001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13847
13848 * print.c (scm_print_options): Fixed texinfo in docstring.
13849
13850 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13851 the underlying functions getservent, getprotoent or getnetent
13852 return NULL instead of signalling an error.
13853
439006bf
GH
138542001-03-04 Gary Houston <ghouston@arglist.com>
13855
13856 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13857 taking an unexpectedly large filename for an AF_UNIX socket from
13858 bind/connect/sendto (thanks to Martin Grabmueller).
1c938eb8 13859
439006bf
GH
13860 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13861 former and adjusted the latter.
13862 (scm_socket, scm_socketpair): cosmetic changes.
13863 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13864 size_t as socklen_t substitute. don't restrict args/return values
13865 to INUM: allow full range of int or size_t.
13866 (scm_fill_sockaddr): check arguments before allocating memory, to
13867 avoid leakage. use malloc, not scm_must_malloc.
13868 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13869 substitute. free the sockaddr structure before throwing an error.
13870 (scm_init_add_buffer): procedure removed, together with its static
13871 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13872 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13873 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13874 scm_sendto): use a local buffer instead of scm_addr_buffer.
13875 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13876 not size_t.
13877 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13878 call to detect whether recvfrom could be bothered to set the address.
13879 (scm_init_socket): don't call scm_init_addr_buffer.
13880
276dd677
DH
138812001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13882
13883 * debug.c (scm_procedure_source, scm_procedure_environment),
13884 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13885 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13886 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13887 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13888 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13889 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13890 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13891 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13892 scm_array_to_list, scm_array_prototype), validate.h
13893 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13894 scm_misc_error or scm_wrong_type_arg instead.
13895
13896 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13897
5e03762c
MD
138982001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13899
13900 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13901 (scm_sys_tag_body): Added.
13902
db4b4ca6
DH
139032001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13904
13905 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13906 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13907 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13908 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13909 options.c (scm_options), ports.c (scm_remove_from_port_table),
13910 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13911 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13912 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13913 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13914 instead.
13915
87e7741d
MD
139162001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13917
13918 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13919
d19b0aac
MV
139202001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13921
13922 * eval.c (scm_s_duplicate_bindings): New error message.
13923 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13924
2fd945df
MV
139252001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13926
13927 * eval.h (SCM_EVALIM2): New macro. Use it when a
13928 immediate, literal constant should be evaluated.
13929 * eval.c (scm_s_duplicate_formals): New error message string.
13930 (scm_c_improper_memq): New function.
13931 (scm_m_lambda): Check for duplicate arguments.
13932 (scm_ceval, scm_deval): When executing a body: only cons a new
13933 toplevel environment frame when it is different from the
13934 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13935 check for empty combinations; use SCM_EVALIM2 for the same reason
13936 in the non-toplevel loop.
13937 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13938 New labels with the meaning of their non-"nontoplevel" partners,
13939 but they are used when it is known that the body is not evaluated at
13940 top-level.
13941 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13942 reporting for empty combinations.
13943
9e6fc585
KN
139442001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13945
13946 * Remove dump facilities.
13947 * dump.c, dump.h: Removed.
13948 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13949 * init.c: Remove #include "libguile/dump.h".
13950 (scm_init_guile_1): Remove scm_init_dump.
13951 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13952 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13953 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13954 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13955
13956 * keywords.c: Remove #include "libguile/dump.h".
13957 (keyword_dump, keyword_undump): Removed.
13958 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13959
eae54bf0
MG
139602001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13961
13962 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13963 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13964 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13965 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13966 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13967 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13968 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13969 to @code{} as the texinfo manual recommends, converted the
13970 examples to use a @lisp{}-environment.
13971
13972 * strports.c (scm_eval_string): Cleaned up the docstring.
13973
13974 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13975 markup.
13976
13977 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13978 (scm_number_to_string, scm_string_to_number, scm_number_p)
13979 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13980 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13981 (scm_ash): Added texinfo markup and removed obsolete @refill.
13982 (scm_gr_p): Corrected comment.
13983 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13984 docstring) comments.
13985 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13986 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13987 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13988 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13989 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13990 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13991 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13992 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13993
23deee81
DH
139942001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13995
13996 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13997 (Obviously nobody compiles with SCM_RECKLESS defined...)
13998
13999 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
14000
6fe692e9
MD
140012001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14002
14003 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
14004
14005 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
14006
27c37006
NJ
140072001-02-24 Neil Jerram <neil@ossau.uklinux.net>
14008
14009 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
14010 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
14011 since use of `z' suggests that the arguments may be complex.
14012
14013 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
14014 typos.
14015
2069af38
NJ
140162001-02-23 Neil Jerram <neil@ossau.uklinux.net>
14017
14018 * dump.c (scm_binary_write, scm_binary_read), eval.c
14019 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
14020 scm_guardian_greedy_p, scm_make_guardian), fports.c
14021 (scm_file_port_p): Minor docstring fixes.
14022
b42ff180
MV
140232001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
14024
2069af38 14025 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
97ea55f8
MV
14026
14027 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
14028 scm_i_eval.
14029 (make_class_from_template): Do not bother to set the current
14030 module around the call to DEFVAR, scm_eval takes care of that.
14031 (scm_init_goops): Make scm_module_goops and
14032 scm_goops_lookup_closure permanent objects.
1c938eb8 14033
97ea55f8
MV
14034 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
14035 top level, create a fresh top-level environment for each
14036 expression instead of mutating the exisint frame. This is
14037 important when that frame is closed over.
14038
b42ff180
MV
14039 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
14040 SCM_DIGSPERLONG instead of DIGSPERLONG.
14041
09f2ab1e
MV
140422001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
14043
14044 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
14045 before applying arrow procedure in `cond' and before applying
14046 receiver procedure in call-with-current-continuation.
14047 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
14048 macro. The argument is expanded more than one time.
14049
14050 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
14051 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
14052
140532001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
14054
14055 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
14056 notice and license.
14057
7090240c
MG
140582001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14059
14060 * variable.c (scm_make_variable, scm_make_undefined_variable)
14061 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
14062 (scm_variable_bound_p), values.c (scm_values)
14063 (scm_call_with_values), unif.c (scm_bit_count)
14064 (scm_bit_set_star_x), symbols.c (scm_gentemp)
14065 (scm_gensym), strings.c (scm_string_p, scm_make_string)
14066 (scm_read_only_string_p, scm_string_length, scm_string_ref)
14067 (scm_string_set_x, scm_substring, scm_string_append), stime.c
14068 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
14069 (scm_copy_random_state, scm_random), print.c (scm_newline)
14070 (scm_write_char, scm_simple_format), debug-malloc.c
14071 (scm_malloc_stats), environments.c (scm_environment_p)
14072 (scm_environment_bound_p, scm_environment_ref)
14073 (scm_environment_fold, scm_environment_define)
14074 (scm_environment_undefine, scm_environment_set_x)
14075 (scm_environment_cell, scm_environment_observe)
14076 (scm_environment_observe_weak, scm_environment_unobserve)
14077 (scm_make_eval_environment, scm_eval_environment_p)
14078 (scm_eval_environment_set_local_x, scm_eval_environment_local)
14079 (scm_eval_environment_imported)
14080 (scm_eval_environment_set_imported_x, scm_make_import_environment)
14081 (scm_import_environment_p, scm_import_environment_imports)
14082 (scm_import_environment_set_imports_x, scm_make_export_environment)
14083 (scm_export_environment_p, scm_export_environment_private)
14084 (scm_export_environment_set_private_x)
14085 (scm_export_environment_signature)
14086 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
14087 Added texinfo markup.
14088
14089 * ports.c (scm_drain_input): Lowercased argument to @var.
14090 (scm_current_input_port, scm_current_output_port): Filled in
14091 missing explanation.
14092 (scm_current_load_port, scm_set_current_output_port)
14093 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
14094 Added texinfo markup.
14095
14096 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
14097 (scm_release_arbiter): Added texinfo markup to docstrings.
14098 Changed `Returns' to `Return'.
14099 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
14100
25703850
NJ
141012001-02-16 Neil Jerram <neil@ossau.uklinux.net>
14102
14103 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
14104 by doubling them to `@@'.
14105
73c0fdce
MG
141062001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14107
14108 * numbers.c (scm_lognot), random.c (scm_random,
14109 scm_random_normal, scm_random_solid_sphere_x,
14110 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
14111 scm_random_exp), dynwind.c
14112 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
1c938eb8 14113
73c0fdce
MG
14114 * goops.c (scm_sys_initialize_object, scm_instance_p,
14115 scm_class_name, scm_class_precedence_list, scm_class_slots,
14116 scm_class_environment, scm_generic_function_name,
14117 scm_generic_function_methods, scm_method_generic_function,
14118 scm_method_specializers, scm_method_procedure, scm_make_unbound,
14119 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
14120 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
14121 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
14122 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
14123 scm_class_direct_supers, scm_class_direct_slots,
14124 scm_class_direct_subclasses, scm_class_direct_methods,
14125 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
14126 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
14127 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
14128 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
14129 scm_memoized_environment, scm_procedure_name,
14130 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
14131 objects.c
14132 (scm_class_of, scm_entity_p, scm_operator_p,
14133 scm_set_object_procedure_x, scm_object_procedure,
14134 scm_make_class_object), hooks.c (scm_make_hook_with_name,
14135 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
14136 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
14137 scm_hook_to_list), lang.c
14138 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
14139 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
14140 (scm_print_options, scm_port_with_print_state,
14141 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
14142 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
14143 scm_make_procedure_with_setter, scm_procedure), throw.c
14144 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
14145 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
14146 scm_stack_ref, scm_stack_length, scm_frame_p,
14147 scm_last_stack_frame, scm_frame_number, scm_frame_source,
14148 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
14149 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
14150 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
14151 (scm_dirname, scm_basename), dynwind.c
14152 (scm_wind_chain), read.c (scm_read_options, scm_read,
14153 scm_read_hash_extend), gc.c
14154 (scm_unhash_name), eval.c (scm_eval_options_interface,
14155 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
14156 (scm_display_error, scm_set_print_params_x,
14157 scm_display_application, scm_display_backtrace, scm_backtrace),
14158 async.c (scm_async, scm_system_async, scm_async_mark,
14159 scm_system_async_mark, scm_run_asyncs, scm_noop,
14160 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
14161 scm_mask_signals): Added docstrings.
14162
e228a203
KN
141632001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
14164
14165 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
14166 address of car/cdr. (Thanks to Dirk Herrmann)
14167 Use scm_sizet to obtain the length of strings.
14168 (Thanks to Matthias Koeppe)
14169
1552a59d
MV
141702001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
14171
14172 * symbols.c (scm_mem2symbol): Put a empty statement after the
14173 next_symbol label. This is mandated by ANSI, appearantly.
14174
3178f751
MV
141752001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14176
14177 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
14178 sense to compile for a specific kernel version. Do not include
14179 <asm/signal.h> while defining __KERNEL__. This hack should no
14180 longer be needed and caused problems.
14181
7af4defe
MV
141822001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
14183
14184 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
14185 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
14186 can not deal with immediates.
14187
5d6bb349
KN
141882001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
14189
14190 * list.c (scm_list_copy): Validate the first argument.
14191
ec9709f0
MV
141922001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
14193
14194 Fix evaluator so that top-level expressions are correctly
14195 evaluated with respect to the module system.
1c938eb8 14196
ec9709f0
MV
14197 * modules.h. modules.c (scm_current_module_lookup_closure): New
14198 function.
14199
14200 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
14201 prototypes.
14202 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
14203 names to better reflect their meaning.
14204
14205 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
14206 evaluated at top-level and synronize lookup closure before
14207 executing every subform.
14208 (scm_primitve_eval_x, scm_primitive_eval): New functions.
14209 (scm_eval_x, scm_eval): Reimplement in terms of
14210 scm_primitive_eval_x and scm_primitive_eval, respectively.
1c938eb8 14211
ec9709f0
MV
142122001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
14213
14214 * macros.c (scm_macro_name, scm_macro_transformer): Use
14215 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
14216 Thanks!
14217
42417394
KN
142182001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
14219
14220 * dump.c (scm_store_bytes): Store data size before data.
14221 (scm_restore_bytes): Restore data size. Takes a pointer to size.
14222 * dump.h (scm_restore_bytes): Updated.
14223
bf942687
KN
142242001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
14225
14226 * dump.c: Use double cells for update schedule.
14227
1be4270a
KN
142282001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
14229
14230 * ports.c (scm_unread_char): Take an optional argument.
14231
548728ea
MV
142322001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14233
14234 * modules.h (scm_selected_module, scm_current_module): Renamed
14235 scm_selected_module to scm_current_module to synchronize Scheme
14236 and C names.
14237 (scm_select_module, scm_set_current_module): Likewise. Changed
14238 all uses.
1c938eb8 14239
548728ea
MV
14240 * ports.c (scm_port_for_each): Make a snapshot of the port table
14241 before iterating over it. The table might change while the user
14242 code is running. With the snapshot, the user can depend on the
c5408bc3 14243 fact that each port that existed at the start of the iteration is
548728ea
MV
14244 encountered exactly once. (ice-9 popen) depends on this.
14245
cb0d8be2
DH
142462001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14247
14248 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
14249
14250 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
14251 range checking for the size parameter. Thanks to Martin
14252 Grabmueller for the hint.
14253
14254 (scm_makstr): Reordered string initialization to make interrupt
14255 deferring unnecessary.
14256
14257 * vectors.c (scm_make_vector): Fixed range checking.
14258
e382fdbe
DH
142592001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14260
14261 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
14262
14263 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
14264 checking of the size parameter for type correctness and valid
14265 range. Thanks to Rob Browning for reporting the problem. Instead
14266 of deferring interrupts, scm_remember_upto_here_1 is used.
14267
bf8f0922
KN
142682001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14269
14270 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
14271 (scm_dump_cell_update): Removed.
14272 (scm_dump_update): Renamed from scm_dump_object_update.
14273 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
14274 a pointer instead of returning a value.
14275 * keywords.c (keyword_undump): Updated.
14276
914cceec
KN
142772001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14278
14279 * dump.c, dump.h: Modified a lot.
5f17c66f 14280 (SCM_DUMP_COOKIE): Version 0.1
914cceec
KN
14281 (scm_dump_mark): Removed.
14282 (scm_restore_cell_object, scm_store_cell_object): New functions.
14283
14284 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
14285 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
14286 New slots: dump, undump.
14287 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
14288 Updated.
14289
14290 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
14291 (keyword_undump): Renamed from keyword_alloc.
14292 (scm_init_keywords): Set keyword_dump and keyword_undump.
14293
ecf470a2
ML
142942001-02-03 Michael Livshin <mlivshin@bigfoot.com>
14295
14296 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
14297 the deprecated SCM_DOUBLE_CELLP.
14298
14299 * tags.h (SCM_DOUBLE_CELLP): deprecated.
14300
03416a99
KN
143012001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
14302
14303 * dump.c, dump.h: New files.
14304 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
14305 * init.c: #include "libguile/dump.h".
14306 (scm_init_guile_1): Call scm_init_dump.
14307 * smob.h (scm_smob_descriptor): New slots: dump_mark,
14308 dump_dealloc, dump_store, undump_alloc, undump_restore,
14309 undump_init.
14310 * smob.c (scm_make_smob_type): Init the new slots.
14311 (scm_set_smob_dump, scm_set_smob_undump): New functions.
14312 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
14313
14314 * keywords.c: #include "libguile/dump.h".
14315 (keyword_dealloc, keyword_alloc): New functions.
14316 (scm_init_keywords): Set smob_dump and smob_undump.
14317
00ffa0e7
KN
143182001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
14319
14320 * vectors.c (scm_c_make_vector): New function.
14321 * vectors.h (scm_c_make_vector): Declared.
14322 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
14323 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
14324 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
14325 (scm_make_method_cache, scm_i_vector2list,
14326 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
14327 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
14328 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
14329 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
14330 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
14331 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
14332 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
14333 (scm_vector, scm_make_vector): Use scm_c_make_vector.
14334
14335 * hashtab.c (scm_c_make_hash_table): New function.
14336 * hashtab.h (scm_c_make_hash_table): Declared.
14337 * environments.c (scm_make_leaf_environment,
14338 scm_make_eval_environment), gc.c (scm_init_storage),
14339 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
14340 Use scm_c_make_hash_table.
14341
b8446ce8
MD
143422001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14343
14344 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
14345
e3239868
DH
143462001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14347
14348 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
14349 end of docstring.
14350
14351 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
14352 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
14353 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
14354 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
14355 srcprop.c (scm_source_properties, scm_set_source_properties_x,
14356 scm_source_property, scm_set_source_property_x), sort.c
14357 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
14358 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
14359 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
14360 docstrings.
14361
41ee56dd
MD
143622001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14363
14364 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
14365 really get that arg.
14366
b6311c08
KN
143672001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
14368
14369 * goops.c (s_scm_get_keyword): Bug fix.
14370
a49af0c0
DH
143712001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14372
14373 The following patch was sent by Martin Grabmueller. It makes sure
14374 that in case of parameter errors the correct function name is
14375 shown, and that parameter types are only checked once.
14376
14377 * strop.c (string_copy, string_upcase_x, string_downcase_x,
14378 string_capitalize_x): New functions. Each one performs the core
14379 functionality of the corresponding scm_* function.
14380
14381 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
14382 scm_string_downcase_x, scm_string_downcase,
14383 scm_string_capitalize_x, scm_string_capitalize): Reduced to
14384 parameter checking wrappers of the above functions.
14385
13070bd3
DH
143862001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14387
14388 * continuations.c, dynl.c, keywords.c, load.c: Include
14389 strings.h. Thanks to Bill Schottstaedt for the bug report.
14390
2f2b390c
DH
143912001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14392
14393 * backtrace.c (display_header): Make sure that line and column
14394 information is shown independent of whether the port the code was
14395 read from had an associated filename. Thanks to Martin
14396 Grabmueller for providing this patch.
14397
efa40607
DH
143982001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14399
14400 * fports.[ch] (scm_file_port_p): New primitive.
14401
a98bddfd
DH
144022001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14403
14404 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
14405 These are now defined in fports.c, strports.c and vports.c.
14406
14407 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
14408 vports.c (scm_tc16_sfport): Made variables (were macros defined in
14409 tags.h).
14410
14411 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
14412 (scm_make_sfptob): Made static. These return a type code now.
14413
14414 fports.c (scm_init_fports), strports.c (scm_init_strports),
14415 vports.c (scm_init_vports): Create the corresponding port types.
14416
14417 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
14418 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
14419
14420 * init.c (scm_init_guile_1): Make sure strports are initialized
14421 before gdbint.
14422
14423 * ports.[ch] (scm_make_port_type): Changed the return type to
14424 scm_bits_t.
14425
14426 * ports.c (scm_ports_prehistory): Don't create any port types
14427 here.
14428
14429 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
14430 against scm_tc16_fport directly.
14431
0419a528
DH
144322001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14433
14434 * srcprop.c (scm_set_source_property_x): Fix to handle
14435 (set-source-property! <obj> 'copy <datum>) correctly.
14436
6d36532c
GH
144372001-01-24 Gary Houston <ghouston@arglist.com>
14438
14439 * filesys.c (scm_link): docstring fix.
14440 * fports.h (scm_setfileno): obsolete declaration removed.
14441 * posix.c: bogus popen declaration removed.
14442
14443 * rdelim.c: new file, split from ioext.c.
14444 * rdelim.h: new file, split from ioext.h
14445 * Makefile.am: add rdelim.c and related files.
14446 * init.c: call scm_init_rdelim. include rdelim.h.
14447
3ba5a6c2
DH
144482001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14449
14450 This patch was sent by Martin Grabmueller and makes sure that
14451 parameter errors are reported correctly by the lexicographic
14452 ordering predicates.
14453
14454 * strorder.c (string_less_p, string_ci_less_p): New functions.
14455
14456 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
14457 functionality into string_less_p, string_ci_less_p respectively.
14458 The remaining code is just a wrapper to do the parameter
14459 checking.
14460
14461 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
14462 parameters and call string_less_p instead of scm_string_less_p.
14463
14464 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
14465 Check the parameters and call string_less_ci_p instead of
14466 scm_string_ci_less_p.
14467
e40a4095
DH
144682001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14469
ed6a2db9
DH
14470 This patch modifies scm_display_error to perform parameter
14471 checking. Thanks to Neil Jerram for the bug report.
14472
e40a4095
DH
14473 * backtrace.[ch] (scm_i_display_error): New function.
14474
14475 * backtrace.c (scm_display_error): Added parameter check and
14476 extracted the core functionality into function
14477 scm_i_display_error.
14478
14479 * throw.c (handler_message): Call scm_i_display_error to display
14480 the error message.
14481
f1e06a96
MD
144822001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14483
14484 * eval.c (SCM_APPLY): Added # args check for application of
14485 procedures with arity 3. (Thanks to Anders Holst.)
14486
30ea841d
DH
144872001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14488
14489 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
14490
14491 (SCM_OPDIRP): Deprecated.
14492
14493 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
14494 SCM_OPN.
14495
14496 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
14497 Instead, give an explicit error message in case the directory is
14498 closed.
14499
14500 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
14501 instead of SCM_OPENP and SCM_CLOSEDP.
14502
14503 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
14504
312ae976
DH
145052001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
14506
14507 * eval.c (inner_eval, scm_eval): Move all real functionality into
14508 inner_eval. Avoid to copy the expression twice by inlining some
14509 code from scm_i_eval.
14510
4567ed78
DH
145112001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
14512
14513 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
14514 now has to be the last clause, as required by R5RS. Thanks to
14515 Martin Grabmueller for the patch.
14516
10288a09
GH
145172001-01-18 Gary Houston <ghouston@arglist.com>
14518
14519 * ioext.c: further simplify scm_read_string_x_partial by defining
14520 a macro SCM_EBLOCK.
14521
8f379a8f
DH
145222001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14523
14524 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
14525
5c75b29f
DH
145262001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14527
14528 * __scm.h: Added comment about architecture and compiler
14529 properties that are required by guile.
14530
14531 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14532 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
14533
14534 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
14535
14536 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
14537
14538 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14539 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
14540
ac0c002c
DH
145412001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
14542
14543 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
14544 to the names in limits.h.
14545
14546 * numbers.c (abs_most_negative_fixnum): Added.
14547
14548 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
14549 fixnum-min) special case.
14550
14551 (scm_big_and): Fix for negative first parameter.
14552
14553 (scm_bit_extract): Fix for fixnum paramters.
14554 Thanks to Rob Browning for the bug report.
14555
14556 (scm_init_numbers): Initialize abs_most_negative_fixnum.
14557
debe0dc2
DH
145582001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
14559
14560 * symbols.c (scm_symbol_bound_p): Fixed comment.
14561 Thanks to Chris Cramer.
14562
8a39e3fc
DH
145632001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
14564
14565 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
14566 Thanks to Bill Schottstaedt.
14567
322ec19d
ML
145682001-01-11 Michael Livshin <mlivshin@bigfoot.com>
14569
9a5fa6e9 14570 from Matthias Köppe:
1c938eb8 14571
322ec19d
ML
14572 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
14573 casts its result, so doesn't yield an lvalue per ANSI C.
14574
14575 * goops.c (s_scm_sys_set_object_setter_x): use
14576 SCM_SET_ENTITY_SETTER.
14577 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
14578
14579 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
14580 its result, so doesn't yield an lvalue per ANSI C.
14581 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
14582 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
14583 SCM_GC_SET_CARD_FLAGS.
14584 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
14585
14586 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
14587
60d02d09
GH
145882001-01-08 Gary Houston <ghouston@arglist.com>
14589
14590 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
14591 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
14592 socket.c (scm_recvfrom): use the new macro, plus minor docstring
14593 changes.
14594 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
14595 for fdes. if current input port is used, check that it's a file
14596 port.
14597
c2da2648
GH
145982001-01-06 Gary Houston <ghouston@arglist.com>
14599
14600 * ioext.c (scm_read_string_x_partial): new procedure, implements
14601 read-string!/partial.
14602 * ports.c (scm_take_from_input_buffers): new procedure used by
14603 scm_read_string_x_partial.
14604 (scm_drain_input): use scm_take_from_input_buffers.
14605
4651d663
MV
146062001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
14607
14608 * validate.h (SCM_VALIDATE_NUMBER): New.
14609
c0a5d888
ML
146102001-01-03 Michael Livshin <mlivshin@bigfoot.com>
14611
14612 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
14613 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
14614 SET_DESTROYED): new defines/macros.
14615 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
14616 (add_to_live_list): takes a `guardian_t *' now, not SCM.
14617 (guardian_print): print more info.
14618 (guardian_apply): check if the guardian is destroyed, and throw an
14619 error if so. take one more optional argument `throw_p'.
14620 (scm_guard): depending on the value of `throw_p', return a boolean
14621 result.
14622 (scm_get_one_zombie): remove redundant property test.
14623 (guardian_t): represent the various (currently 3, I hope nothing
14624 more gets added) boolean fields as bit flags.
14625 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
14626 (scm_destroy_guardian_x): new procedure.
14627
14628 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
14629 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
14630
0c6d2191
GH
146312001-01-01 Gary Houston <ghouston@arglist.com>
14632
14633 * fports.c (fport_write): bugfix: handle short writes for
14634 unbuffered ports too. optimize the buffered case by minimizing
14635 the number of write/flush calls.
14636 (write_all): new helper procedure.
14637
a51fe247 14638The ChangeLog continues in the file: "ChangeLog-2000"
d9f71a07
LC
14639
14640;; Local Variables:
14641;; coding: utf-8
14642;; End: